为了账号安全,请及时绑定邮箱和手机立即绑定

容器运行超出内存限制

容器运行超出内存限制

素胚勾勒不出你 2019-11-06 10:37:57
在Hadoop v1中,我为每个7个映射器和化简器插槽分配了1GB的大小,我的映射器和化简器运行良好。我的机器有8G内存,8个处理器。现在使用YARN,在同一台计算机上运行相同的应用程序时,出现了容器错误。默认情况下,我有以下设置:  <property>    <name>yarn.scheduler.minimum-allocation-mb</name>    <value>1024</value>  </property>  <property>    <name>yarn.scheduler.maximum-allocation-mb</name>    <value>8192</value>  </property>  <property>    <name>yarn.nodemanager.resource.memory-mb</name>    <value>8192</value>  </property>它给了我错误:Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.然后,我尝试在mapred-site.xml中设置内存限制:  <property>    <name>mapreduce.map.memory.mb</name>    <value>4096</value>  </property>  <property>    <name>mapreduce.reduce.memory.mb</name>    <value>4096</value>  </property>但仍然出现错误:Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. Killing container.我很困惑为什么map任务需要这么多的内存。据我了解,1GB的内存足以完成我的地图/缩小任务。为什么当我为容器分配更多内存时,任务使用了更多内存?是因为每个任务都会得到更多分割吗?我觉得稍微减少容器的大小并创建更多的容器会更有效,以便更多的任务并行运行。问题是如何确定每个容器分配的拆分数量是否超过其处理能力?
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

在EMR中使用HIVE时,我遇到了一个非常相似的问题。现存的解决方案中没有为我工作-即没有为我工作映射精简配置的; 而且都没有设置yarn.nodemanager.vmem-check-enabled为false。


但是,最终的工作是设置tez.am.resource.memory.mb,例如:


hive -hiveconf tez.am.resource.memory.mb=4096

考虑调整的另一个设置是 yarn.app.mapreduce.am.resource.mb


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 1071 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信