hadoop2.0 yarn 内存溢出问题解决

在运行MapReduce程序时遇到内存溢出问题,经过排查发现可能的原因包括:io.file.buffer.size设置不当、YARN虚拟内存计算比例问题以及Hadoop内存监控设置。通过调整io.file.buffer.size、修改yarn.nodemanager.vmem-pmem-ratio比例和配置mapreduce.cluster.map/reduce.memory.mb,成功解决了内存溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题描述:在跑一个mapreduce程序的过程中,提示内存溢出的错误,确定非程序影响。
百度了很多可能的问题产生原因,依次排除后,终于解决了。想把前人的经验总结一下方便后人查阅。


异常提示:Container [pid=23708,containerID=container_1369623433359_0404_01_000151] is running beyond physical memory limits. Current usage: 3.2gb of 3.0gb physical memory used; 4.5gb of 6.3gb virtual memory used. Killing container.

1. io.file.buffer.size 的设置问题

    io.file.buffer.size 的值设置过大,map和reduce的任务可能会存在溢出。我这个值的设置是128k,其实不大,后来改成4k仍然出现异常证明不是这个问题. (io.file.buffer.size作为hadoop缓冲区,用于 hadoop读hdfs的文件和写hdfs的文件,还有map的输出都用到了这个缓冲区容量)


2. yarn的虚拟内存计算方式导致

这个问题应该是导致running beyond virtual memory limits.虽然没有解决问题,但感觉不知道这个的人很容易被坑的
running beyond virtual memory limits. Current usage: 32.1mb of 1.0gb physical memory used; 6.2gb of 2.1gb virtual memory used. Killing container。
该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的 值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错误。调节比例值可以解决该问题。具体参

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值