java—如何知道mapreduce作业是否已重新启动或是新的开始?

bq9c1y66  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(321)

我有一个mapreduce作业,我使用 job.waitForCompletion(true) . 如果一个或多个reducer任务在作业执行期间被终止或崩溃,则会重新启动整个mapreduce作业,并再次执行mappers和reducer(文档)。以下是我的问题:
1] 我们能在作业开始时知道作业是新启动的还是因为上一次运行失败而重新启动的吗(这让我想到了问题2)
2] 你能帮忙吗?如果某些任务失败导致整个作业重新启动,计数器的值是否会结转?
3] hadoop是否提供了任何内置的检查点方法来跟踪以前的计算,并帮助避免在失败/崩溃之前由Map器和还原器执行相同的计算?
对不起,如果这些问题没有措辞不清的话。谢谢你的帮助。

5cg8jx4n

5cg8jx4n1#

对术语的一些修正。如果一个或多个任务失败,作业不会重新启动。任务可能会重新启动。从mapper/reducer上下文可以得到https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/taskattemptcontext.html#gettaskattemptid(),其中包含作为id的最后一个标记的尝试编号。
来自失败任务尝试的计数器更新不会聚合到作业总数中,因此不应担心过度计算。
一般不会。框架清除失败任务的输出。如果你害怕因为任务失败而失去一些昂贵的计算,我建议你将你的工作分成多个map/reduce阶段。您也可以拥有自己的可变分布式缓存,但也不建议这样做。

相关问题