使用docker搭建hadoop集群
启动docker:
看到Successfully built 即构建成功
构建的三个镜像如下:
但是由于docker容器重新启动之后ip会发生变化,所以需要我们给docker设置固定ip。使用pipework给 docker容器设置固定ip
下面的步骤就是hadoop集群的配置过程
在hadoop1上执行下面操作
在hadoop2上执行下面操作
(2)core-site.xml
(3)hdfs-site.xml
(4)yarn-site.xml
(5)修改文件名:mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
(6)格式化
进入到/usr/local/hadoop目录下
看到下面命令说明格式化成功。
格式化操作不能重复执行。如果一定要重复格式化,带参数-force即可。
(7)启动伪分布hadoop
第一次启动的过程中需要输入yes确认一下。
使用jps,检查进程是否正常启动?能看到下面几个进程表示伪分布启动成功
(8)停止伪分布hadoop
(9)指定nodemanager的地址,修改文件yarn-site.xml
(10)修改hadoop0中hadoop的一个配置文件etc/hadoop/slaves
删除原来的所有内容,修改为如下
(11)在hadoop0中执行命令
(12)启动hadoop分布式集群服务
注意:在执行的时候会报错,是因为两个从节点缺少which命令,安装即可
分别在两个从节点执行下面命令安装
yum install -y which
1
再启动集群(如果集群已启动,需要先停止)
(13)验证集群是否正常
首先查看进程:
Hadoop0上需要有这几个进程
Hadoop1上需要有这几个进程
Hadoop2上需要有这几个进程
使用程序验证集群服务
创建一个本地文件
上传a.txt到hdfs上
执行wordcount程序
查看程序执行结果
这样就说明集群正常了。
在这可以直接通过宿主机访问容器中hadoop集群的服务
宿主机的ip为:192.168.1.27
http://192.168.1.27:50070/
http://192.168.1.27:8088/
停止三个容器,在宿主机上执行下面命令
容器停止之后,之前设置的固定ip也会消失,重新再使用这几个容器的时候还需要重新设置固定ip
先把之前停止的三个容器起来
在宿主机上执行下面命令重新给容器设置固定ip
还需要重新在容器中配置主机名和ip的映射关系,每次都手工写比较麻烦
写一个脚本,runhosts.sh
添加执行权限, chmod +x runhosts.sh
把这个脚本拷贝到所有节点,并且分别执行这个脚本
执行脚本的命令 ./runhosts.sh
查看/etc/hosts文件中是否添加成功
注意: 有一些docker版本中不会在hosts文件中自动生成下面这些映射,所以我们才在这里手工给容器设置固定ip,并设置主机名和ip的映射关系。
启动hadoop集群