Hadoop 2.6 YARN配置重复问题:确认实际生效配置
问题分析与解答
首先给你划个核心结论:实际生效的是来自yarn-default.xml的yarn.nodemanager.vmem-check-enabled=true配置,问题出在你自己的配置项拼写错误上!
先看UI里的两条配置细节:
- 第一条配置的名称是
yarn.nodemanamger.vmem-check-enabled(注意这里是nodemanamger,多了一个字母a),值为false,来源标识是java.io.BufferedInputStream@2893de87 - 第二条是正确的配置项
yarn.nodemanager.vmem-check-enabled,值为true,来源是默认配置文件
YARN的配置是严格匹配key名称的,拼写错误的配置项会被当成一个全新的、无关的配置条目,根本不会覆盖默认的yarn.nodemanager.vmem-check-enabled。所以你在yarn-site.xml里的修改等于没生效,集群还是沿用默认的虚拟内存检查开启状态。
再解释下java.io.BufferedInputStream@xxx这个来源标识:它通常表示该配置不是来自常规的XML配置文件,而是通过动态输入流加载的——比如你可能在启动YARN时通过命令行参数传递了这个拼写错误的配置,或是某个脚本动态生成并加载了这条配置。但不管来源是什么,因为key名称不匹配,它完全不会影响正确的虚拟内存检查配置。
解决方法很直接:把yarn-site.xml里的配置项名称修正为yarn.nodemanager.vmem-check-enabled,然后重启YARN的ResourceManager和NodeManager,之后UI里就会显示正确的配置覆盖关系了。
内容的提问来源于stack exchange,提问作者J Schmidt




