正常的 hadoop 配置看一参考这里

接着上篇 docker hadoop 简单实例 我们来使用 docker 做集群!

我们创建三个 容器 配置如下

| 容器名        | Hadoop主机名 |  IP地址           | | hadoop      |   master           |  172.18.0.10  | | hdp-node1 |   node1            |  172.18.0.11  | | hdp-node2 | node2              |  172.18.0.12  |

# docker network create --subnet=172.18.0.0/24 hdpnet
  • 2.  创建 master
# docker run \ -h master --add-host master:172.18.0.10 --add-host node1:172.18.0.11 --add-host node2:172.18.0.12 \ --net hdpnet --ip 172.18.0.10 \ -d -p 12122:2122 -p 18030:8030 -p 18031:8031 -p 18032:8032 -p 18033:8033 -p 18040:8040 -p 18042:8042 -p 18088:8088 -p 19888:19888 -p 19707:49707 -p 10010:50010 -p 10020:50020 -p 10070:50070 -p 10075:50075 -p 10090:50090 -p 19000:9000 \ --name hadoop sequenceiq/hadoop-docker
  • 3. 创建第一个数据节点
# docker run \ -h node1 --add-host master:172.18.0.10 --add-host node1:172.18.0.11 --add-host node2:172.18.0.12 \ --net hdpnet --ip 172.18.0.11 \ -d -p 22122:2122 \ --name hdp-node1 sequenceiq/hadoop-docker
  • 4. 创建第二个数据节点
# docker run \ -h node2 --add-host master:172.18.0.10 --add-host node1:172.18.0.11 --add-host node2:172.18.0.12 \ --net hdpnet --ip 172.18.0.12 \ -d -p 32122:2122 \ --name hdp-node2 sequenceiq/hadoop-docker
  • 5. 根据 #docker hadoop 简单实例# 配置免密码登录,然后将 authorized_keys, id_rsa, id_rsa.pub 拷贝到另外两台服务器。可以实现三个容器之间免密码登录,为hadoop做准备!可以使用下面的命令:
#docker cp src_form target_to
  • 6. 然后远程登陆进如 三个容器 停掉三个容器中的 hadoop 服务, 这个很重要! 
# ssh root@localhost -p [12122|22122|32122]
  • 7. 修改hadoop的配置文件, copy 下master 主机中的  /user/local/hadoop/etc/hadoop/core-site.xml, slaves 和 hdfs-site.xml 三个文件。修改 slaves 和 hdfs-site.xml 两个文件,core-site.xml 不需要修改。 文件内容和详细修改见 #http://blog.csdn.net/hguisu/article/details/7237395#
  • 8. 将 core-site.xml hdfs-site.xml 和 slaves 三个文件 复制到 3个 容器中覆盖原文件(注意三个容器中的hadoop要已经关闭。)
  • 9. 将 core-site.xml 覆盖掉三个容器里的 core-site.xml.template 文件,否则容器重启会将 core-site.xml 文件覆盖掉
  • 10. 在容器 master 上 启动 格式化 namenode 后,启动 hadoop !(/usr/local/hadoop/sbin/start-all.sh),这时三个容器中的hadoop将全部启动!
# /usr/local/hadoop/bin/hadoop namenode -format
  • 11. 检查是否启动成功, http://192.168.1.107:10070/ (192.168.1.107是宿主机的IP) ,或使用命令:
#/usr/java/default/bin/jps
  • 12. 如果出错!注意查看日志文件 $HADOOP_PATH/logs/...  hadoop-root-namenode-master.log  和 hadoop-root-datanode-master.log, 注意如果:hdfs-site.xml 没有修改,但是可能会有 hadoop format之后datanode 无法启动 !