首页 文章

如何在hadoop中设置默认java opts而不在运行时重叠

提问于
浏览
0

我打算在运行YARN应用程序时将默认gc收集器设置为 -XX:+UseSerialGC .

我试图在hadoop-env.sh中设置此参数,既不是 HADOOP_OPTS 也不是 HADOOP_CLIENT_OPTS 它是否有效:

//hadoop-env.sh
export HADOOP_OPTS="$HADOOP_OPTS -Dmapreduce.map.java.opts='-XX:+UseSerialGC'"
export HADOOP_CLIENT_OPTS="-XX:+UseSerialGC $HADOOP_CLIENT_OPTS"

同样,当在mapred-site.xml中设置它时如下所示,当我通过 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi -Dmapreduce.map.java.opts="-Xmx256M" 4 1000 运行hadoop任务时,结果是重叠,其中rumtime参数'-Dmapreduce.map.java.opts'覆盖了在mapred-site.xml中配置的内容 .

//mapred-site.xml
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M -XX:+UseSerialGC</value>
</property>

检查参数是否生效的方法是登录DataNode并发出命令:

/usr/java/jdk1.7.0_11/bin/jps -mlv | grep -i gc

有什么解决方案吗?非常感谢!

1 回答

  • 0

    您可以指定该属性是只读的,并且无法使用 final 覆盖,如下所示:

    <property>
      <name>mapreduce.map.java.opts</name>
      <value>-Xmx1024M -XX:+UseSerialGC</value>
      <final>true</final>
    </property>
    

相关问题