hadoop之docker伪分布式部署

配置环境: macbook、两台ubuntu 16.04 server虚拟机,用VMware Fusion创建的,虚拟机网络适配器模式是NAT模式(注意此处一定要是NAT模式)

第一步:搭建虚拟网桥br0,br1

这步可以按照网上的一些通用做法来做,没什么特别的,如这篇文章 http://blog.csdn.net/canot/article/details/52895897

不过我要说下为什么要用虚拟网桥,在知道这个东西前,我也尝试了很多方法让不同虚拟机之间的docker互相访问,刚开始想用端口映射,把虚拟机的22端口映射到docker,这样虽然解决了ssh的问题,但是一旦有实际程序跑起来,需要其他端口,就不行了,遂放弃;后面又想用--net host模式,但是这样搞得虚拟机和docker分不清哪个用哪个,于是也放弃了。后面看到虚拟网桥的方法,感觉可行,它的原理就是把一台虚拟机的eth0网卡作为虚拟网桥br0的一个端口,这台虚拟机的docker里也把eth0作为虚拟网桥br0的端口,这样单台虚拟机和它的docker就能互相访问;同样在另一台虚拟机配置虚拟网桥br1,由于NAT模式的存在(不是很确信),br0和br1也可以互相访问,于是全部打通了。

第二步:下载镜像

docker pull daocloud.io/shenaishiren/hadoop-run

这个镜像是我基于 kiwenlau/hadoop:1.0这个镜像,加了bridge-utils和vim之后构建的镜像,pull下来之后在一台虚拟机(作为master)上运行如下命令

docker run -itd --name hadoop-master --hostname hadoop-master -p 50070:50070 -p 8088:8088 daocloud.io/shenaishiren/hadoop-run &> /dev/null

(如果docker ps发现没运行起来,你可能要运行docker rm -f hadoop-master删掉以前的容器了)

另一台运行

docker run -itd --name hadoop-slave1 --hostname hadoop-slave1 daocloud.io/shenaishiren/hadoop-run &> /dev/null
然后运行下面的命令进入hadoop-master

docker exec -it hadoop-master bash
接着运行(192.168.1.64是hadoop-slave1的ip地址)

echo "192.168.1.64 hadoop-slave1" >> /etc/hosts
在容器hadoop-slave1上同样 (192.168.1.128是hadoop-master的ip地址)

echo "192.168.1.128 hadoop-master" >> /etc/hosts
然后在hadoop-master容器里先运行./start-hadoop.sh,再运行./run-wordcount.sh就行了

最后再说一下遇到的坑和解决办法

遇到问题第一件事就是关掉hadoop

/usr/local/hadoop/sbin/stop-dfs.sh && /usr/local/hadoop/sbin/stop-yarn.sh

然后第一个问题就是“there is no datanode(0)啥的”,遇到这个问题,首先要去从节点用jps看看DataNode有没有在运行,像我遇到这个问题是因为我多次格式化namenode,造成namenode的clusterID和datanode的clusterID不一样,导致DataNode开启失败,具体解决办法看链接http://jingyan.baidu.com/article/3c343ff7e75e9e0d36796347.html

第二个问题就是9000端口访问拒绝,解决办法是记得开启前格式化namenode,而且你的 dfs.datanode.data.dir对应的文件夹下的current文件夹必须存在

hadoop namenode -format

然后正常运行上面提到了的start-hadoop.sh和run-wordcount.sh

解决了所有问题,终于迎来了胜利的曙光,成功运行字符统计!

(N台分布式的配置同上)










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值