Hadoop 2.7.3版本能否使用YARN Docker Runtime特性?其向后兼容性如何?
关于Hadoop 2.7.3使用YARN Docker Runtime特性的解答
直接给结论:Hadoop 2.7.3这类旧版本不支持YARN Docker Runtime特性,下面给你详细拆解原因和背景:
先理清两个Docker相关组件的区别
早期YARN提供的是DockerContainerExecutor,这个组件是直接替换掉默认的LinuxContainerExecutor,存在不少架构缺陷:
- 每个NodeManager只能配置一种
ContainerExecutor,一旦集群切换到DockerContainerExecutor,常规的MapReduce、Tez、Spark作业就没法启动了 - 实现
DockerContainerExecutor需要重新复刻LinuxContainerExecutor的全部功能(比如cgroups、流量整形),重复造轮子还容易引入bug
而你提到的Docker Runtime是Hadoop后续版本(主要是3.x及以后)才引入的新抽象层,它的核心是解决DockerContainerExecutor的这些痛点——不需要替换整个Executor,而是通过容器运行时的抽象,让NodeManager同时支持常规容器和Docker容器,灵活性和兼容性都强很多。
Hadoop 2.7.3的实际情况
Hadoop 2.7.3属于2.x分支的较早版本,它的YARN生态里只有DockerContainerExecutor这一种Docker相关的实现,完全没有集成后来的Docker Runtime特性。如果在这个版本里想要用Docker跑任务,只能选择启用DockerContainerExecutor,但必须接受它带来的那些限制;如果想要使用更灵活的Docker Runtime特性,唯一的办法就是升级到支持该特性的Hadoop 3.x及以上版本。
内容的提问来源于stack exchange,提问作者Pun Master
相关产品推荐
相关产品推荐

