有作业运行状态的图像。
如您所见,map任务已经完成,reduce任务已经达到90.74%。根据MapReduce模型,不应该这样。怎么会发生这种情况?为什么?有没有办法解决它?
我的环境:
答案 0 :(得分:1)
如果减速器或减速器数量无法从给定的地图任务或任务跟踪器中提取临时地图输出,则会发生这种情况(例如,由于某种原因,运行地图任务00001的任务跟踪器失败。
在这种情况下,Hadoop将在另一个节点上重新运行map任务。在你的情况下,它更复杂 - 看起来你有一个列入黑名单的任务跟踪器和一些失败的减速器任务。
我猜这种情况是在运行reducer阶段的过程中,在单个任务跟踪器上运行的所有reducer任务都失败了 - 导致任务跟踪器被列入黑名单。在这种情况下,在该节点上运行的任何地图任务都需要重新安排在另一个任务跟踪器上再次运行 - 因此有5个待处理的Map任务。
至于如何解决这个问题 - 这是Hadoop内置的错误处理案例。你应该检查失败的map任务的日志和失败的reducer任务的线索 - 因为它可能是一些问题(磁盘空间,任务跟踪器的最大http线程数,reducer实现的内存要求,你的ser中的错误) -de自定义可写入方法,...)。
随意调查并将堆栈跟踪发布回原始问题(或新问题)