Hadoop On Docker 实践


Nodemanager

Docker 上启动 Nodemanager 进程后,Docker 容器会承载很多 Container(Yarn 的资源单元),而这些 Container 其实是需要对外提供 tcp 服务的,而这些端口需要暴露到网络上,所以,选择 Docker 网络时需要注意,如果运行Docker容器的主机没有提供 sudo 权限其实会有很多限制,那么可以:


docker run --network="host" \
  --cap-add=SYS_ADMIN \
  -h="dn100" ...


--network 指定 host 表示完全使用主机的网络,例如:启动 tomcat 监听 8080,而运行 docker 容器的主机 ip 为 10.0.0.11,则可以在局域网中访问 10.0.0.11:8080,事实上 容器 中的 /etc/hosts /etc/hostname 这些都是和宿主机一样,而且默认 hostname xxx 来更改主机名时是不允许的,但是可以通过增加 --cap-add=SYS_ADMIN 选项来搞定,而且它改得只是 docker 容器的,不是宿主机的。-h="dn100" 选项貌似是没有用的。


datanode


如果启用了 kerberos,而且 datanode 使用 jsvc 启动时,docker 容器默认情况比较难启动起来:

cat /data/logs/hadoop/jsvc.err
  set_caps: failed to set capabilities
  check that your kernel supports capabilities
  set_caps(CAPS) failed for user 'hadoop'
  Service exit with a return value of 4

需要某些内核特性的支持:

http://man7.org/linux/man-pages/man7/capabilities.7.html


这时可以通过在 docker run 增加   --cap-add=ALL 解决;







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值