关于yarn平台下mapreduce运行出现的虚拟内存溢出问题

最近在测试一个统计类型的mapreduce 应用的job新功能时候,reducetask在运行中直接抛出了下面的异常:

Container [pid=23708,containerID=container_1369623433359_0404_01_000151] is running beyond physical memory limits. Current usage: 192Mb of 1.0gb physical memory used; 2.9gb of 2.1gb virtual memory used. Killing container.

设置了10个reducetask,而每个reducetask的4次尝试 taskattempt 都失败了 都以为同样的虚拟内存的溢出问题。由于该Yarn所在的集群规模比较小,相应的机器的配置也不高,平均每台服务器的内存只有20G左右,因此之前我在配置task的container的大小的时候,每个container的物理内存配置为1024M

,而yarn-site.xml 中的yarn.nodemanager.vmem-pmem-ratio的比例采用默认的2.1,根据这个比例 计算出来的预分配的虚拟内存为2.1G,而在实际运行中,发现单个reducetask需要2.9G的虚拟内存,因此导致了异常的出现。虽然通过调整了yarn-site.xml中的参数,通过增大虚拟内存的方式 解决了job中的内存错误,但心里还是有那个疙瘩。当初自己在开发这个 统计任务的时候,数据量比当前大的多的情况下都没出现过该问题,简单的通过内存参数调整并不能真正解决问题,问题的隐患也不一定被完全发现,问题应该还是出在job对于资源的申请上。接下来估计会仔细研究下该job是否存在着什么问题,毕竟一旦发布到线上,将会迎来大数据量的考验。


你可能感兴趣的:(关于yarn平台下mapreduce运行出现的虚拟内存溢出问题)