java - mapred-site.xml 未覆盖 mapred-default.xml 中的参数

标签 java hadoop configuration

我正在使用 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 中的设置。 -- 但我怎样才能知道它是什么?

最佳答案

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

关于java - mapred-site.xml 未覆盖 mapred-default.xml 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20996895/

相关文章:

hadoop - Amazon Web Services Map-Reduce 错误 Illegal character in path at index

user-interface - .INF 文件和 NCF_HAS_UI : how to write . dll 用于显示网络驱动程序的高级属性选项卡?

groovy - 如何加快 Gradle 依赖项解析或总体上提高性能?

java - 创建子类的实例是否会自动创建其父类(super class)对象?

java - 为什么我在 Java 中收到 NoClassDefFoundError 错误?

database - 错误转换列:0到TIMESTAMP

c# - 处理多个配置文件实例的最佳方式?

java - 如何将复选框监听器与动态 JTable 一起使用?

标识为主类的 Java 主要参数

hadoop - 谁能澄清一下? "Block pool storage is not partitioned..."