基于 Docker 快速搭建一个真 分布式 Hadoop 集群

原文链接:https://blog.newnius.com/setup-hadoop-cluster-based-on-docker-swarm.html

 

背景

近两年Docker技术火热,不少公司开始向Docker转换。不仅仅是为了赶热度,更多的是确实感受到了Docker的魅力:虚拟化的同时并不会损耗多大的性能。Docker的魅力不仅在此,更重要的是它的部署、维护简易,Docker经常跟Devops联系在一起。一定意义上说,Docker真的很大程度上大大降低了这些事情的难度(或者说琐屑?),以前需要费心费力去部署和维护的系统环境在Docker的帮助下可以做到(very)快速的部署、伸缩。


实验室新集群在设立初期,就计划all in docker,并把用到的一些技术都切换到docker上来,包括storm、hadoop等等。
之前我对Hadoop的接触仅限于概念,从来没有实际操作过。一方面是没有机会,另一方面更多的是部署这样的一个集群不是简单的事,你很难在什么都不懂得情况下短时间内成功搭建一个集群。


于是,什么都不懂的我开始基于Docker搭建Hadoop集群。把Hadoop docker化的工作前人已经做过了(sequenceiq/hadoop-docker),我基本就是基于这个镜像开始搭建。很可惜,这个镜像是本地版的,没有提供真正的分布式的教程。
在成功部署上单机版后,又开始马不停蹄的增加节点调试。碰到了两个问题,一个是如何互连(配置文件怎么写),还有一个就是通过start-all.sh 脚本启动会产生多个不互联的集群。


一开始,我是在所有的节点上执行start-all.sh脚本来启动集群的,但是似乎Hadoop节点会对比自己的hostname和配置文件来决定服务是否要启动,而docker swarm service name跟hostname是不一样的,导致了与预期不符的情况。而且当时的版本hostname不能自己指定,我当时的解决方案就是改写bootstrap.sh,在启动的时候根据传入的参数来决定启动什么服务,脚本相当混乱。

正文开始

好在docker swarm从1.13开始支持--hostname,这下之前写的脚本就可以大大缩减了。在完成升级之后,整理了一下脚本和配置文件,把原来的镜像做了一点改动(加入默认配置,自动开机创建集群),创建了一个新的镜像(newnius/hadoop),使得创建集群更加便捷。就当是中文版的README了吧。

注意:docker版本要在1.13以上

从最简单的开始

创建1个mastre节点,3个slave节点的集群

创建集群

hadoop-master1

docker service create \
--name hadoop-master \
--network swarm-net \
--hostname hadoop-master \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop

hadoop-slave1

docker service create \
--name hadoop-slave1 \
--network swarm-net \
--hostname hadoop-slave1 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop

hadoop-slave2

docker service create \
--name hadoop-slave2 \
--network swarm-net \
--hostname hadoop-slave2 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop

hadoop-slave3

docker service create \
--name hadoop-slave3 \
--network swarm-net \
--hostname hadoop-slave3 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop

这样一个集群就创建好了。
默认配置文件里已经按照这个写好了,所以不需要再做其他的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值