一、软件准备:
下载hadoop2.7.4版本:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz(国内服务器下载比较快)
将下载好的包进行解压:tar zxvf hadoop-2.7.4.tar.gz (我将hadoop存放在/usr/local/目录下)
校验各节点主机是否安装java环境:java -version如果正常输出版本号说明已安装,如未安装请自行在各节点进行安装,此处省略。。。
我测试机java安装目录为:/usr/java/,将Java以及hadoop配制到环境变量 vim /etc/profile :(具体路径根据各自的安装目录进行配制)
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
export CLASS_PATH=.:${JAVA_HOME}/lib:$CLASS_PATH
export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使配制生效 ,命令:source /etc/profile
将修改好的/etc/profile发送到其它各节点,并使之生效;
二、关闭防火墙:
(1) 查看防火墙运行状态,[root@Clouder3 ~]# systemctl status firewalld.service
(2) 关闭防火墙,[root@Clouder3 ~]# systemctl stop firewalld.service
(3) 关闭防火墙开机启动,[root@Clouder3 ~]# systemctl disable firewalld.service
防火墙各节点均需要关闭,分别在各节点执行以上命令;
(4) 配制各主机与IP映射关系(集群中的节点均需配制):
vim /etc/hosts
在该文件中添加如下信息
192.168.1.21 Clouder3
192.168.1.20 Clouder2
192.168.1.19 Clouder1
分别在各节点设置配制映射关系或者将配制好的一个直接远程复制覆盖均可,我使的后者: scp /etc/hosts Clouder2:/etc/ scp /etc/hosts Clouder1:/etc/
三、设置ssh免密码登陆:
<name>fs.defaultFS</name>
<value>hdfs://clouder3:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop2.7.4/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Clouder2
Clouder3
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<description>The hostname of the RM.</description>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.21</value>
</property>
五、格式化NameNode,启动集群
将配制完成后的hadoop文件夹分别发送到其它两个节点, scp -r hadoop2.7.4 Clouder2:/usr/local/ , scp -r hadoop2.7.4 Clouder1:/usr/local/
集群配制完成第一次启动前需要先格式化集群,执行 bin/hdfs namenode -format
注 :为什么要格式化namenode? 格式化是对HDFS这个分布式文件系统中的Datanode进行分块,统计所有分块后的初始元数据,然后存储在Namenode中,格式化后,查看core-site.xml配置文件中hadoop.tmp.dir指定的目录下是否有dfs目录,如果有,说明格式化成功 ;
启动集群:在主节点执行 sbin/start-all.sh
集群启动完成后查看主节点进程:jps
主节点:
5585 SecondaryNameNode
5762 ResourceManager
5859 NodeManager
5429 DataNode
5338 NameNode
6318 Jps
从节点1:jps
3168 NodeManager
3321 Jps
3070 DataNode
从节点2:jps
5801 Jps
4939 DataNode
5052 NodeManager
注意:在hadoop集群搭建过程中要确保修改的 /usr/local/hadoop2.7.4/etc/hadoop/中相关配制文件参数与本机实际配制相对应(比如slaves中的主机应当与/etc/hosts文件中的一致),此外namenode只能格式化一次,因为在namenode格式化时会在 /usr/local/hadoop2.7.4/tmp目录中生成当前hdfs的version信息,每次格式化时该version信息都不一致这有可能导致NameNode或DataNode无法启动,如果必需要多次格式化时需要将各节点core-site.xml 中配制生成的数据目录及文件删除(本文中删除文件tmp, 依次在各节点执行 rm -rf /usr/local/hadoop2.7.4/tmp) 执行格式化时需要加上-force 即:bin/hdfs namenode -format -force 。
六、Hadoop相关UI链接(此处均使用主节点IP):
(1) hdfs文件系统页面:
http://192.168.1.21:50070
(2) mapreduce job信息页面:
http://192.168.1.21:8088
其它端口在此不列出,可自行查阅。