您的位置:首页 > 编程语言 > Java开发

Hadoop中mapred.child.java.opds参数意义

2017-08-04 10:44 337 查看
最近发现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

在mapred-site.xml中加上如下配置:
<property>
<name>mapreduce.admin.map.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>mapreduce.admin.reduce.child.java.opts</name>
<value>-Xmx5120m</value>
</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参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: