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