Hadoop 参数 mapred.map.child.java.opts

最近发现Hadoop Job集群的load非常高,最后发现是mapred.child.java.opts设置过大导致的,我们当初设置为-Xmx5120导致TaskTracker上内存资源耗尽,进而开始不断swap磁盘上数据,load升高 在执行一个Task的时候,首先会根据JobConf中设定的JVM参数写入一个taskjvm.sh文件中,然后调用Linux命令 bin/bash -c taskjvm.sh 来执行 task.

mapred.child.java.opts就是设定jvm的参数之一,在新版本中已经标准为过期,取而代之的是区分Map Task 和Reduce Task 的jvm opts , mapred.map.child.java.opts和mapred.reduce.child.java.opts(默认值为-Xmx200m)

当用户在不设置该值情况下,会以最大1G jvm heap size启动task,有可能导致OutOfMemory,所以最简单的做法就是设大参数,并且由于这个值不是final,所以用户可以在自己的mapred-site.xml中可以覆盖默认值

其实在构造JVM Args的过程中,是有另外一个admin参考可以覆盖用户端设置的

mapreduce.admin.map.child.java.opts   mapreduce.admin.reduce.child.java.opts

[html]  view plain  copy
  1. 在mapred-site.xml中加上如下配置:  
  2. <property>  
  3.    <name>mapreduce.admin.map.child.java.opts</name>  
  4.    <value>-Xmx1024m</value>  
  5. </property>  
  6. <property>  
  7.     <name>mapreduce.admin.reduce.child.java.opts</name>  
  8.     <value>-Xmx5120m</value>  
  9. </property>  


mapred.child.java.opts设置成多大比较合适:

这个参数是配置每个map或reduce使用的内存数量,默认是200m,一般情况下,该值设置为 总内存/并发数量(=核数)


mapred.map.child.java.opts和mapreduce.map.memeory.mb的区别:

mapreduce.map.memory.mb是向RM申请的内存资源大小,这些资源可用用于各种程序语言编写的程序, mapred.map.child.java.opts 一般只用于配置JVM参数


猜你喜欢

转载自blog.csdn.net/weibin_6388/article/details/80222800
今日推荐