基于Ubuntu Server16.04的Docker多节点Hadoop集群搭建实践
基于Ubuntu Server 16.04的Docker多节点Hadoop集群搭建
一、项目介绍
想要学习Hadoop,然而只拥有一台腾讯云服务器,所以可以将Hadoop打包到Docker镜像中,快速在单个机器上搭建Hadoop集群。
如图所示,Hadoop的Master节点和Slave节点分布运行在不同的Docker容器中,其中hadoop-master容器中允许NameNode和ResourceManager,hadoop-slave容器中运行DataNode和NodeManager。NameNode和DataNode是Hadoop分布式文件系统HDFS的组件,复杂存储输入以及输出数据,而ResourceManager和NodeManager是Hadoop集群资源管理系统YARN的组件,复杂CPU和内存资源的调度。
为Hadoop集群创建单独的网络:
然后在运行Hadoop容器时,使用“-net=hadoop”选项,这时所有容器将运行在hadoop网络中,它们可以通过容器名称进行通信。
二、三个节点Hadoop集群搭建步骤
1.下载Docker镜像
2.下载GitHub仓库
3.创建Hadoop网络
[email protected]:~$ sudo docker network create --driver=bridge hadoop
4.运行Docker容器
5.启动hadoop
6.测试Word count
[email protected]:~# ./run-wordcount.sh
正常情况下,执行结果为:
7.Hadoop的网页管理地址:
NameNode:http://your ip address:50070/
ResourceManager:http://your ip address:8088/
三、N个节点Hadoop集群搭建步骤
1.参考第二部分1~3:下载Docker镜像,下载GitHub仓库,创建Hadoop网络
2.重新构建Docker镜像
./resize-cluster.sh 5
这里选择N=5
3.启动Docker容器
4.启动Hadoop,并运行wordcount。
5.关闭Hadoop集群
[email protected]:~# which hadoop
遇到的问题:
1.运行容器容器未启动:
经过分析,为nginx端口占用,关闭nginx服务,重新执行该命令。另一种方法是修改端口号,但未经过实际验证。
2.
It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.
参考解决方案:https://stackoverflow.com/questions/20216614/hadoop-2-2-0-it-looks-like-you-are-making-an-http-request-to-a-hadoop-ipc-port
其中提到:不能通过浏览器访问hdfs地址,该地址是hadoop内部使用的。