通过上面几篇文章,我们熟悉了单机情况下的HDFS操作和MapReduce计算,在实际使用中,为了提升性能和稳定性,大数据组件都会以集群的方式存在,本文将阐述如何搭建hadoop集群。
1 系统、软件和前提约束
- CentOS 7
(1)三台CentOS都已经配置免密登录
https://www.jianshu.com/p/0cc72b228647
(2)三台CentOS都已经安装jdk,并配置JAVA_HOME环境变量
https://www.jianshu.com/p/826dc5eca7cb
(3)作者三台CentOS机子具体信息如下,请读者根据实际情况设置:
| 主机名 | ip | 账号/密码 |包含节点|
| master| 192.168.79.128 | root/zhangli | resourcemanager,namenode |
| slave1| 192.168.79.129 | root/zhangli | nodemanager,datanode |
| slave2| 192.168.79.130 | root/zhangli | nodemanager,datanode |
在三台CentOS机子中以root执行以下命令,确定关闭防火墙
systemctl stop firewalld
- hadoop-2.5.2
hadoop下载链接:https://pan.baidu.com/s/1c_skDYabCRSkS5hRUB6lFQ
提取码:a00t
2 操作
2.1 上传hadoop-2.5.2.zip到master节点并解压,然后做以下修改:
(1)修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/hadoop-2.5.2/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
(2)修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop-2.5.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop-2.5.2/dfs/data</value>
</property>
</configuration>
(3)修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
(4)修改yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(5)修改slaves内容为
slave1
salve2
(6)在/root/hadoop-2.5.2/etc/hadoop/hadoop-env.sh中添加
export JAVA_HOME=/root/jdk1.8.0_162
在/root/hadoop-2.5.2/etc/hadoop/yarn-env.sh中添加
export JAVA_HOME=/root/jdk1.8.0_162
2.2 把master中的hadoop-2.5.2分别拷贝到slave1,slave2,并格式化。
# 压缩已经配置好的hadoop-2.5.2
tar -cvf hadoop.tar hadoop-2.5.2
# 远程拷贝到slave1
scp hadoop.tar root@slave1
# 远程拷贝到slave2
scp hadoop.tar root@slave2
# 免密登录到slave1
ssh slave1
# 解压hadoop.tar
tar -xvf hadoop.tar
# 格式化namenode
/root/hadoop-2.5.2/bin/hdfs namenode -format
# 退出免密登录
exit
# 免密登录到slave2
ssh slave2
# 解压hadoop.tar
tar -xvf hadoop.tar
# 格式化namenode
/root/hadoop-2.5.2/bin/hdfs namenode -format
# 退出免密登录
exit
在slave1, slave2的hadoop中分别设置以下内容:
在/root/hadoop-2.5.2/etc/hadoop/hadoop-env.sh中添加
export JAVA_HOME=/root/jdk1.8.0_162
在/root/hadoop-2.5.2/etc/hadoop/yarn-env.sh中添加
export JAVA_HOME=/root/jdk1.8.0_162
2.3 在master上启动hadoop
# 确认当前是在master主机,进入家目录
cd
# 进入sbin目录
cd hadoop-2.5.2/sbin
# 启动
./start-all.sh
2.4 测试
# 确认当前是master主机,进入家目录
cd
# 进入bin目录
cd hadoop-2.5.2/bin
# 上传yarn文件到hdfs
./hdfs dfs -put yarn /yarn
# 查看上传结果,如果正确则能看到/yarn
./hdfs dfs -ls /
# 免密登录到slave2
ssh slave2
# 查看上传结果,如果正确则能看到/yarn
./hdfs dfs -ls /
至此,我们完成了在3台CentOS机子中的hadoop集群安装和测试。