mapred-site.xml不重写mapred-default.xml中的参数

yh2wf1be  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(346)

我正在使用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( <final>true</final> )那么这个设置确实适用于我的工作。然而,据我所知,这不应该是必要的,因为 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 --但我怎么才能知道是什么呢?

vmdwslir

vmdwslir1#

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

相关问题