Hadoop2.2内存调优

[b][color=green][size=large]今天散仙写了个MapReduce作业,目的是读数据库里面多个表的数据,然后在JAVA中根据具体的业务情况做过滤,并把符合数据的结果写入到HDFS上,在Eclipse里面提交作业进行调试的时候,发现在Reduce阶段,总是抛出Java heap space的异常,这异常明显,就是堆内存溢出造成的,然后散仙仔细看了下业务块的代码,在Reduce里读数据库的时候,有几个表的返回数据量比较大约有50万左右,因为具体的数量不会太大,所以没有采用分页来返回,读完后数据,采用Map集合封装,在业务处理的一段时间里,一直会停留在内存里,原来的mapred-site.xml里面的配置reduce内存比较小,只需调大此处内存即可。

[/size][/color][/b]

<property>    <name>mapreduce.map.memory.mb</name>    <value>215</value></property><property>    <name>mapreduce.map.java.opts</name>    <value>-Xmx215M</value></property><property>    <name>mapreduce.reduce.memory.mb</name>    <value>1024</value></property><property>    <name>mapreduce.reduce.java.opts</name>    <value>-Xmx1024M</value></property>

hadoop2.2内存控制的几个重要参数:

YARNyarn.scheduler.minimum-allocation-mbyarn.scheduler.maximum-allocation-mbyarn.nodemanager.vmem-pmem-ratioyarn.nodemanager.resource.memory.mbMapreuceMap Memorymapreduce.map.java.optsmapreduce.map.memory.mbReduce Memorymapreduce.reduce.java.optsmapreduce.reduce.memory.mb

如果出现异常:

Container [pid=17645,containerID=container_1415210272486_0013_01_000004] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.6 GB of 2.1 GB virtual memory used. Killing container.Dump of the process-tree for container_1415210272486_0013_01_000004 :

可以调整yarn.nodemanager.vmem-pmem-ratio 的比率,默认是2.1,或者加大程序reduce的运行个数进行尝试,这个比率的控制影响着虚拟内存的使用,当yarn计算出来的虚拟内存,比在mapred-site.xml里的mapreduce.map.memory.mb或mapreduce.reduce.memory.mb的2.1倍还要多时,就会发生上面截图中的异常,而默认的mapreduce.map.memory.mb或
mapreduce.reduce.memory.mb得初始大小为1024M,然后根据异常中的yarn自身根据运行环境推算出来的虚拟内存来做比较,发现比1024*2.1还要大,所以就会由NodeManage守护进程kill掉AM容器,从而导致整个MR作业运行失败,现在我们只需要调大这个比率即可,避免发生这种异常。具体调大多小,可根据具体情况来设置。

[img]http://dl2.iteye.com/upload/attachment/0102/8671/9b71c299-6ee1-323b-9256-9289409b58df.jpg[/img]

[b][color=green][size=large]
最后备注一下,hadoop的环境变量的脚本配置java.sh:
[/size][/color][/b]

export PATH=.:$PATHexport FSE_HOME="/home/search/fse2"export FSE_CONF_DIR=$FSE_HOME/confexport PATH=$PATH:$FSE_HOME/binuser="search"export JAVA_HOME="/usr/local/jdk"export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/binexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HADOOP_HOME=/home/search/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport CLASSPATH=.:$CLASSPATH:$HADOOP_COMMON_HOME:$HADOOP_COMMON_HOMEi/lib:$HADOOP_MAPRED_HOME:$HADOOP_HDFS_HOME:$HADOOP_HDFS_HOME#export HADOOP_HOME=/home/$user/hadoop#export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop#export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/lib#export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport ANT_HOME=/usr/local/antexport CLASSPATH=$CLASSPATH:$ANT_HOME/libexport PATH=$PATH:$ANT_HOME/binexport MAVEN_HOME="/usr/local/maven"export CLASSPATH=$CLASSPATH:$MAVEN_HOME/libexport PATH=$PATH:$MAVEN_HOME/bin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值