Docker环境下Hadoop分布式集群搭建

Docker环境下Hadoop分布式集群搭建

2017年伊始,距离上篇blog更新已有3年之久,如今已经而立之年,这几年,五味杂陈,各中滋味,只能感叹时光飞逝!抱着归零的心态,春节期间,了解了一下Hadoop技术,在windows环境下,利用dockerTool box,搭建hadoop分布式集群,以便后续持续学习。整理如下:

  • Docker环境下Hadoop分布式集群搭建
    • 集群环境介绍
    • 服务器容器创建
    • 环境验证

1.集群环境介绍

如下表所示,集群中共3台服务器,master服务器充当了namenode和jobtacker的角色。slave1和slave2充当了datanode和tasktracker的角色

服务器名称 ip HDFS role MapReduce Role
master 172.18.0.10 namenode jobtracker
slave1 172.18.0.11 datanode tasktracker
slave2 172.18.0.12 datanode tasktracker

2.服务器容器创建

hadoop的docker镜像,从该网站拉取,分区拉取了namenode镜像和datanode镜像

docker pull uhopper/hadoop-namenode
docker pull uhopper/hadoop-datanode

考虑希望生成的容器具备静态ip,便于后期hdfs配置中的配置,所以先需要创建docker自定义网络,其次基于该网络,分别创建master,slave1,slave2三个容器,

docker network create --subnet=172.18.0.0/16 hadoopNet
docker run -d --name namenode1 -h master --net hadoopNet --ip 172.18.0.10 -p 50070:50070 -v //c//Users//admin//hadoop//share://home//share -e "CORE_CONF_fs_defaultFS=hdfs://172.18.0.10:8082" -e "HDFS_CONF_DFS_REPLICATION=2" -e "CLUSTER_NAME=cluster0" uhopper/hadoop-namenode:latest

docker run -d --name datanode1 -h slave1 --net hadoopNet --ip 172.18.0.11 -e "CORE_CONF_fs_defaultFS=hdfs://172.18.0.10:8082" -e "HDFS_CONF_DFS_REPLICATION=2" -e  
"CLUSTER_NAME=cluster0" uhopper/hadoop-datanode:latest

docker run -d --name datanode2 -h slave2 --net hadoopNet --ip 172.18.0.12 -e "CORE_CONF_fs_defaultFS=hdfs://172.18.0.10:8082" -e "HDFS_CONF_DFS_REPLICATION=2" -e  

具体环境变量的配置,可参考uhopper说明,值得一提的是环境变量的配置,并没有针对mapred.site.xml文件配置,个人觉得这确实是一个bug,所以还需要针对三台服务器中/etc/hadoop/mapred.site.xml,进行jobtracker单独配置。以进入master服务器为例:

docker exec -it namenode1 //bin//bash
cat /etc/hadoop/mapred.site.xml

在该mapred.site.xml文件中追加jobtacker rpc远程调用属性

<properyt>
<name>mapred.job.trackername>
<value>172.18.0.10:9001value>
property>

对于slave1,slave2,两台服务器,笔者直接用rsync同步工具,进行文件拷贝的。

最后需要修改三台服务器,/etc/hosts以及/etc/hadoop/slaves文件,文件追加节点信息,不知道为什么,如果不追加的话,当往hdfs文件系统中提交大文件的时候会报错

3.环境验证

现在可以尝试向hdfs里面追加文件了。笔者将《hadoop权威指南》里面的1901年天气数据提交到hdfs中,并提交最高气温天气计算jar包到分布式集群,生成的1901最高气温数据,保存到/output/part-r-00000文件中

hadoop fs -put /home/predator/1901 /input
hadoop jar test.jar MaxTemprature hdfs://172.18.0.10:8082/input/1901 /output

你可能感兴趣的:(读书笔记)