【问题标题】:How to know if a MapReduce job has restarted or is a fresh start?如何知道 MapReduce 作业是重新启动还是重新开始?
【发布时间】:2016-06-24 00:00:05
【问题描述】:

我有一个使用 job.waitForCompletion(true) 运行的 MapReduce 作业。如果一个/多个 reducer 任务在作业执行过程中被杀死或崩溃,则整个 MapReduce 作业将重新启动,并再次执行 mapper 和 reducer(文档)。以下是我的问题:

1] 我们能否在作业开始时知道作业是重新开始还是由于上一次运行中的某些故障而重新启动? (这导致我进入第二季度)

2] 计数器可以提供帮助吗?如果某些任务失败,计数器的值是否会被结转,从而导致整个作业重新启动?

3] Hadoop 是否提供任何内置检查点方法来跟踪先前的计算并帮助避免在失败/崩溃之前执行映射器和化简器完成的相同计算?

对不起,如果问题的措辞不清楚。 感谢您的帮助。

【问题讨论】:

    标签: java hadoop mapreduce crash-recovery


    【解决方案1】:
    1. 对术语的一些修正。如果一项或多项任务失败,则作业不会重新启动。任务可能会重新启动。从 mapper/reducer 上下文中,您可以获得 https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/TaskAttemptContext.html#getTaskAttemptID(),其中包含尝试编号作为 id 的最后一个标记。

    2. 来自失败任务尝试的计数器更新不会汇总到作业总数中,因此不必担心计数过多。

    3. 一般不会。框架清除失败任务的输出。如果您因为任务失败而害怕丢失计算成本高昂的东西,我建议您将您的工作分成多个 map/reduce 阶段。 您也可以拥有自己的可变分布式缓存,但也不建议这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 2012-11-01
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多