超出 Hadoop 内存限制



我正在运行一个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}" 的脚本验证了主机上作业的内存使用情况。

有人可以帮助我理解/调试/解决此问题吗?

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

来自Hive动态分区查询的MapReduce任务被杀死。

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

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

相关内容

  • 没有找到相关文章

最新更新