Hydra-hadoop
项目地址:https://github.com/KDF5000/hydra-hadoop
使用docker在单机部署hadoop和hbase的分布式环境,本项目具有一下特征:
* 使用serf和dnsmasq 作为集群节点管理和dns解析
* 可以自定义集群hadoop和hbase的配置,配置完后只需重新build镜像即可
* ssh远程登录集群节点容器
项目目录
serf-dnsmasq: serf和dnsmasq服务,用于管理集群节点的退出和添加,dnsmasq用于dns的解析
hadoop-fake: 实现一个伪分布式的hadoop环境
hadoop-hydra: 基于hadoop-fake
实现一个完全分布式的集群环境,master和slave均使用该镜像
使用说明
默认本机已经安装了docker环境和git工具
0x01 clone
git clone https://github.com/KDF5000/hydra-hadoop
0x02 创建镜像
按照下面的顺序执行相应操作
* 进入serf-dnsmasq目录,执行
sudo docker build -t="kdf5000/serf-dnsmasq" .
- 进入hadoop-fake目录,执行
sudo docker build -t="kdf5000/ubuntu-hadoop" .
- 进入hadoop-hydra目录,执行
sudo docker build -t="kdf5000/hydra-hadoop"
创建集群
进入项目根目录,执行
$./start-container.sh [num] //num可选,默认为3
默认时启动三个容器,一个作为master,两个slave,如果想要启动其他数目的容器,直接在后面添加数目即可
启动hadoop
上一步,启动容器之后,回直接进入master的shell交互界面,可以使用下面的命令验证dns和serf服务是否正确
$serf members
如果出现下面的结果说明服务已经正确安装和启动
root@master:~# serf members
master.kdf5000.com 172.17.0.2:7946 alive
slave1.kdf5000.com 172.17.0.3:7946 alive
slave2.kdf5000.com 172.17.0.4:7946 alive
如果没有出现上面的结果,请仔细检查前面步骤是否有问题,否则下面步骤将不能正确执行
在master主机进入用户(root)目录,然后执行根目录下的脚本start_service.sh
,将启动hadoop集群。
使用jps
验证是否启动成功,如果在master上出现下面信息说明启动成功
root@master:~# jps
1598 HRegionServer
393 NameNode
909 NodeManager
1415 HQuorumPeer
6209 Jps
666 SecondaryNameNode
515 DataNode
812 ResourceManager
使用下面命令进入slave主机,进行同样验证,出现下面信息及说明启动成功
root@master:~/# ssh slave1.kdf5000.com
Warning: Permanently added 'slave1.kdf5000.com,172.17.0.3' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-85-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Sun May 15 13:29:30 2016 from master.kdf5000.com
root@slave1:~#
root@slave1:~# jps
1853 Jps
293 NodeManager
195 DataNode
wordcount测试
进入master主机的用户根目录,执行wordcount.sh
脚本,观察执行过程,如果最后输出下面信息说明完全分布式hadoop环境搭建成功
wordcount output:
16/05/15 14:01:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2 ello
1 ocker
1 adoop
参考项目