赞
踩
目录
详细描述如何搭建和配置一个单节点的Hadoop,以便新手读者能够借此避开搭建Hadoop集群,从而可以很便捷的去直接学习和使用Hadoop的MapReduce和HDFS。
GNU/Linux无论作为开发还是生产环境,均是被支持的,事实上,Hadoop已经在2000节点的GNU/Linux集群上展现过它的可用性了。
Windows同样也是被支持的系统。
Hadoop3.3及以上版本支持Java8和Java11(仅运行时),编译时一定要使用Java8,不支持使用Java11进行编译,3.0.x-3.2.x目前仅支持Java8,2.7.x-2.10.x既支持Java7也支持Java8。
目前Hadoop社区使用OpenJDK作为创建/测试/发布环境,所以是社区建议使用的JDK环境。此外,其它jdk/jvm也是可以正常使用的。
为了使hadoop的启停脚本能够正常使用,集群节点需安装ssh,同时需启动sshd服务,以便Hadoop脚本能够管理远程的hadoop守护进程。此外,为了更好地对ssh资源进行管理,官网还建议同时安装pdsh服务。
① 官网地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/
② 选择镜像站:官网通常会推荐国内用户到清华大学的镜像站进行下载
③ 选择版本和镜像进行下载,如:我这里选择了2.10.1版本,下载安装包hadoop-2.10.1.tar.gz,当然,也可以下载源码文件hadoop-2.10.1-src.tar.gz,解压后导入idea自行编译
① 将下载的hadoop-2.10.1.tar.gz压缩包上传到Linux虚拟机或服务器,解压到目录:tar -zxvf hadoop-2.10.1.tar.gz -C /userfolder
② 编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加JAVA_HOME,如:
③ 在$HADOOP_HOME目录下尝试执行bin/hadoop
这里将打印出hadoop脚本的使用手册。
现在,我们可以以下面支持的三种模式之一启动我们的Hadoop集群:
Local(Standalone) Mode 即本地(独立)模式
Pseudo-Distributed Mode 即伪分布式模式
Fully-Distributed Mode 即全分布式模式
下面将分别对这三种模式进行说明。
说明:以下所有命令均在Hadoop的主目录下执行,如果配置了$HADOOP_HOME,则脚本命令均可成功执行,但部分路径参数使用的是本地相对路径,如不切换目录至hadoop主目录,运行时会报错。
默认情况下,Hadoop被配置为以非分布式模式运行,此时它将作为单个Java进程。这种模式对调试是非常友好的。
例如,下面的命令可以尝试运行mapreduce示例程序:
- mkdir input
- cp etc/hadoop/*.xml input
- bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input output 'dfs[a-z.]+'
- cat output/*
输出结果:
① 配置etc/hadoop/core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
② 配置etc/hadoop/hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
③ 配置ssh免密登录
- ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
- cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- chmod 0600 ~/.ssh/authorized_keys
④ 启动
1) 格式化文件系统
bin/hdfs namenode -format
2) 启动NameNode和DataNode
sbin/start-dfs.sh
3) 浏览器访问NameNode的web接口,默认在9870端口(老版本为50070),即:http://localhost:9870/
4) 在HDFS上创建执行上述MapReduce作业所需的目录
- # 在hdfs上创建目录
- bin/hdfs dfs -mkdir /user
- bin/hdfs dfs -mkdir /user/<username>
- # 复制本地文件到hdfs指定目录
- bin/hdfs dfs -mkdir input
- bin/hdfs dfs -put etc/hadoop/*.xml input
5) 执行提供的样例作业
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input output 'dfs[a-z.]+'
6) 检查输出
bin/hdfs dfs -cat output/*
结果同上。
7) 关闭服务
sbin/stop-dfs.sh
伪分布式模式下,通过设置一些参数和启动ResourceManager, NodeManager,我们可以在YARN上运行MapReduce作业,具体操作如下:
① 修改YARN的配置
1) etc/hadoop/mapred-site.xml
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <property>
- <name>mapreduce.application.classpath</name>
- <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
- </property>
- </configuration>
2) etc/hadoop/yarn-site.xml
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.nodemanager.env-whitelist</name>
- <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
- </property>
- </configuration>
② 启动ResourceManager和NodeManager
sbin/start-yarn.sh
③浏览器访问ResourceManager的web接口,默认在8088端口,即:http://localhost:8088/
④ 运行上述作业,并在浏览器观察对应记录
⑤ 关闭YARN
sbin/stop-yarn.sh
见下一篇。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。