【问题标题】:mapred-site.xml not overriding parameters from mapred-default.xmlmapred-site.xml 没有覆盖 mapred-default.xml 中的参数
【发布时间】:2014-01-26 15:02:52
【问题描述】:

我正在使用 Hadoop 版本 0.20.2(Cloudera 发行版 cdh3u6)并看到问题。据我了解,如果我在/etc/hadoop/conf/mapred-site.xml 中设置一个值,它应该会自动覆盖 Hadoop 默认值。所以我设置了一个变量如下:

<property>
  <name>mapred.child.java.opts</name>
  <value>-Xmx1024m</value>
</property>

但是,这没有任何效果。现在,我知道文件正在被 hadoop 读取,因为如果我将变量设置为 final (&lt;final&gt;true&lt;/final&gt;),那么设置确实适用于我的工作。但是,据我了解,这不是必需的,因为 mapred-site.xml 应该在 mapred-default.xml 之后加载,所以它应该简单地覆盖它。

您可能会问,链中的其他内容是否也覆盖了 mapred-site.xml 的设置?这将是一个合乎逻辑的结论,但我找不到任何证据。我有以/var/log/hadoop 结尾的作业配置文件,并且可以方便地说明它们的属性是从哪里加载的。所以我得到这样的值:

<property><!--Loaded from /var/hadoop/mapred/local/jobTracker/job_201401081300_0009.xml--><name>mapred.child.java.opts</name><value>-Xmx200m</value></property>

/var/hadoop/mapred/local/jobTracker 下引用的作业“子配置”是短暂的,仅在作业运行时存在,但是从正在运行的作业中检查一个,我发现以下内容:

<property><!--Loaded from mapred-default.xml--><name>mapred.child.java.opts</name><value>-Xmx200m</value></property>

所以最终的作业配置最终似乎只是从mapred-default.xml 加载——那么为什么mapred-site.xml 的值不会覆盖它?

虽然设置final 可以解决问题,但我想了解在这种情况下发生了什么,因为它可能表明其他问题。此外,这会生成一个警告:WARN org.apache.hadoop.conf.Configuration: /var/hadoop/mapred/local/jobTracker/job_201401081300_0009.xml: a attempt to override final parameter: mapred.child.java.opts; Ignoring.。此警告表明另一个配置解析器确实覆盖了来自mapred-site.xml 的设置——但我怎样才能找出它是什么?

【问题讨论】:

    标签: java hadoop configuration


    【解决方案1】:

    我遇到了这个问题,但是在重新启动服务(hadoop-yarn-resourcemanager,hadoop-yarn-nodemanager)后,它从 mapred-site.xml 中获取了值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多