在docker上搭建hadoop集群

在docker上搭建hadoop集群

Java 分布式应用

详细介绍

在docker上搭建hadoop集群

1 安装docker

参考教程《Docker——从入门到实践》安装章节。要注意的是,本repo中的脚本默认你已经建立的docker用户组,并且已经将当前用户添加到docker用户组了。

2 测试hadoop集群

拷贝本repo:

git clone https://github.com/ymdd/hadoop-docker.git

下载hadoop-2.7.3.tar.gz到目录hadoop-docker/src下,构建hadoop镜像:

wget http://www-eu.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz -O hadoop-docker/src/hadoop-2.7.2.tar.gz

cd hadoop-docker
docker build -t ymdd/hadoop:0.1 .

在docker中建立hadoop网络:

docker network create --driver=bridge hadoop

启动container:

./start-container.sh

该脚本默认情况下会启动三个contianer,包括一个hadoop-master和两个hadoop-slave,接着你会进入hadoop-master的/目录下。

进入/root目录,并启动hadoop:

cd && ./start-hadoop.sh

察看hadoop-master启动了哪些进程:

jps

# 输出三个进程
NameNode
SecondaryNameNode
ResourceManager

察看hadoop-slave1启动了哪些进程:

ssh hadoop-slave1
jps

# 输出两个进程
DataNode
NodeManager

如果确认无误,说明hadoop集群已经正常启动。

回到hadoop-master,执行wordcount测试:

logout
./wordcount.sh

观察输出,如果得到:

input file1.txt:
Hello Docker

input file2.txt:
Hello Hadoop

wordcount output:
Docker  1
Hadoop  1
Hello   2

说明hadoop集群已成功执行mapreduce程序。

注:hadoop-master的808850070端口已经映射到宿主机相同的端口,可以通过宿主浏览器察看集群状态以及mapreduce程序执行情况。

3 更改hadoop集群的节点数目

退出hadoop-master,执行resize-cluster.sh脚本:

exit
./resize-cluster.sh #nodes

#nodes表示新集群节点点的总数,包括一个master,剩下的都是slaves(暂不支持更复杂的集群配置,以后的版本会考虑加入)。该脚本会重新构建hadoop镜像。

推荐源码