前期准备
事先准备一台安装docker了的虚拟机或者服务器
参考链接
参考链接:https://www.jianshu.com/p/30604c820e9d
但是该博客的搭建是伪分布式的hadoop集群,本文章是搭建真正的三节点hadoop集群
搭建步骤
获取镜像
docker pull sequenceiq/hadoop-docker
启动hadoop容器
docker run -it --name Master -h Master -p 50070:50070 5c3cc170c6bc /bin/bash
docker run -it --name Slave1 -h Slave1 -p 50071:8088 5c3cc170c6bc /bin/bash
docker run -it --name Slave2 -h Slave2 -p 50072:50070 5c3cc170c6bc /bin/bash
配置地址映射
将以上地址配置到各个容器的/etc/hosts
文件中(注意各个容器的ip地址正确)
172.17.0.3 Master
172.17.0.4 Slave1
172.17.0.5 Slave2
配置hadoop环境变量
export HADOOP_HOME=hadoop文件路径
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
修改完之后需要运行脚本使得环境变量生效:
运行命令:source /etc/profile(如果登入容器发现环境变量消失了,可以再运行一次该命令。我在配置的时候是每次登入容器都会执行一次该命令的)
在所有容器中开启ssh服务
- 开启ssh服务:
/etc/rc.d/init.d/sshd start
- 设置开机启动ssh
chkconfig --level 2345 sshd on
配置ssh免密登录
doker容器登录不用密码,所以他们天然就实现了免密登录。如果需要配置免密登录的话参考:https://blog.csdn.net/weixin_49060400/article/details/108037854?spm=1001.2014.3001.5506
中的免密登录部分
编写配置文件
- 这5个文件都在 hadoop安装目录/etc/hadoop/ 下
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/name</value>
</property>
<!-- nn web端访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>Master:9870</value>
</property>
<!-- 2nn web端访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:9868</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Slave1</value>
</property>
</configuration>
slaves(这里不能有多余的字符)
Master
Slave1
Slave2
格式化nameNode
- fs.defaultFS属性对应的主机,以上配置为在Master结点执行
hadoop namenode -format
启动hdfs
- fs.defaultFS属性对应的主机,以上配置为在Master结点执行
$HADOOP_HOME/sbin/start-dfs.sh
启动yarn集群
- yarn.resourcemanager.hostname属性对应的主机,以上配置为在Slave1中执行
$HADOOP_HOME/sbin/start-yarn.sh
检验是否成功
查看hdfs是否启动成功
点击以下链接:物理主机地址:50070
出现以下界面为成功:
查看yarn集群是否启动成功
点击以下链接:物理主机地址:50071
出现以下界面为成功: