yarn环境跑mapreduce报错某个container 600s未报告进度超时被杀

本文探讨了MapReduce程序中reduce阶段遇到长时间挂起的问题,并提供了通过调整配置参数来解决此问题的方法。重点在于理解任务超时机制及其如何导致container被杀,并通过设置mapred.task.timeout属性来避免此类情况。文章还分析了一个具体案例,其中双层循环可能导致reduce内部长时间无操作,从而引起问题。最终,通过调整配置和识别并优化循环结构,问题得以解决。

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


问题:

发现每次reduce阶段跑到98%,相关的container被杀,报出的log大概的意思:container 600s未报告进度超时被杀

解决办法:

在mapreduce程序里加上

conf.set("mapred.task.timeout", "0");                        //不检查超时


重新打包运行,最后没有出现错误,但是运行很长时间,总算运行完了,怀疑程序问题有大循环
最后检查reduce发现会有双层循环,有可能会非常大,导致卡在reduce内部,长时间没有进行任何的读写,也就没有汇报他的进度情况

总结

问题的原因起于对于悬挂的task,如果NMr在一段时间(默认是10min,可以通过mapred.task.timeout属性值来设置,单位是毫秒)内一直没有收到它的进度报告,则把它标记为失效



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值