我打算在运行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 回答
您可以指定该属性是只读的,并且无法使用 final 覆盖,如下所示: