您的位置:首页 > 运维架构 > Docker

基于docker的hadoop分布式集群

2016-05-16 16:41 686 查看

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[/code] 
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


参考项目

https://github.com/kiwenlau/hadoop-cluster-docker

https://github.com/alvinhenrick/docker-serf

https://github.com/alvinhenrick/hadoop-mutinode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息