如何在 hadoop 中设置默认的 java 选项,而不会在运行时重叠



我打算在运行 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>

我检查参数是否生效的方法是登录到数据节点并发出命令:

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

有什么解决办法吗?多谢!

您可以指定该属性是只读的,并且不能通过使用 final 进行重写,如下所示:

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

相关内容

  • 没有找到相关文章