正常的 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 |
- 1. 创建自定义的网络 (详见 http://www.lcs.wang/archives/173)
# 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 无法启动 !