Hadoop2.2内存调优
来源:互联网 发布:图标上下不停跳动js 编辑:程序博客网 时间:2024/06/01 11:46
今天散仙写了个MapReduce作业,目的是读数据库里面多个表的数据,然后在JAVA中根据具体的业务情况做过滤,并把符合数据的结果写入到HDFS上,在Eclipse里面提交作业进行调试的时候,发现在Reduce阶段,总是抛出Java heap space的异常,这异常明显,就是堆内存溢出造成的,然后散仙仔细看了下业务块的代码,在Reduce里读数据库的时候,有几个表的返回数据量比较大约有50万左右,因为具体的数量不会太大,所以没有采用分页来返回,读完后数据,采用Map集合封装,在业务处理的一段时间里,一直会停留在内存里,原来的mapred-site.xml里面的配置reduce内存比较小,只需调大此处内存即可。
<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作业运行失败,现在我们只需要调大这个比率即可,避免发生这种异常。具体调大多小,可根据具体情况来设置。
- Hadoop2.2内存调优
- Hadoop2.2内存调优
- hadoop2.0 yarn 内存溢出问题解决
- Hadoop2-MapReduce(2)
- hadoop2.2下载
- hadoop2.2 源码编译
- hadoop2.2 hdfs
- hadoop2.2编译
- hadoop2.2安装配置
- hadoop2.2+hive0.12.0
- hadoop2.2+pig0.12
- hadoop2.2+mahout-0.8
- hadoop2.2环境搭建
- 重新编译Hadoop2.2
- Hadoop2.2 HA安装
- Hadoop2.2源代码编译
- Hadoop2.2 WordCount示例
- hadoop2.2安装
- JavaScript:student-information-system-node-express-mongoose 学生信息管理系统
- UART0串口编程系列 串口编程(UART0)之中断方式(二)
- js 只能输入数字和小数点
- C++primer学习:标准库特殊设施:bitset
- 迭代器 table
- Hadoop2.2内存调优
- 【剑指offer】之第一个只出现一次的字符
- javascript DOM
- 让PHP 7达到最高性能的几个Tips
- 直接操作USRP属性树
- UART0串口编程系列 UART0串口编程之在UC/OS—II中遭遇的危机
- 【归并排序】
- OPENCV中使用SVM训练并识别车牌的初步应用
- iOS框架介绍——N&O&P字头