超出了Hadoop内存限制

时间:2012-04-13 12:08:30

标签: hadoop mapreduce

我正在运行Hadoop流媒体作业。此作业失败,错误:

"TaskTree [pid=13549,tipID=attempt_201202130706_121058_m_000000_0] is running beyond memory-limits. Current usage : 1667149824bytes. Limit : 1610612736bytes. Killing task."

对于这项工作,mapred.job.map.memory.mb设置为1536.将此设置为1536*2 = 3072会有所帮助,但会导致1个地图任务使用2个插槽,这是不可取的。

当我在主机上运行此作业时,我发现它使用1.07 GB的峰值内存,小于1536 MB。我使用“top”和每1秒使用"ps -o vsz=${pid}"的脚本验证了主机上作业的内存使用情况。

有人可以帮我理解/调试/修复这个问题。

1 个答案:

答案 0 :(得分:0)

这个问题可能与我在CDH版本here上发现的这个错误有关:

  

来自Hive动态分区查询的MapReduce任务被终止。

     

问题:使用Hive脚本动态创建和填充分区表时,TaskTracker日志文件中会报告以下错误:

TaskTree [pid=30275,tipID=attempt_201305041854_0350_m_000000_0] is running beyond memory-limits. Current usage : 1619562496bytes. Limit : 1610612736bytes. Killing task.

您必须关闭 mapred-site.xml 中的内存设置:

mapred.cluster.map.memory.mb = -1
mapred.cluster.reduce.memory.mb = -1
mapred.job.map.memory.mb = -1
mapred.job.reduce.memory.mb = -1
mapred.cluster.max.map.memory.mb = -1
mapred.cluster.max.reduce.memory.mb = -1