Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道MapReduce作业是否已重新启动或是新的开始?_Java_Hadoop_Mapreduce_Crash Recovery - Fatal编程技术网

Java 如何知道MapReduce作业是否已重新启动或是新的开始?

Java 如何知道MapReduce作业是否已重新启动或是新的开始?,java,hadoop,mapreduce,crash-recovery,Java,Hadoop,Mapreduce,Crash Recovery,我有一个MapReduce作业,我使用job.waitForCompletion(true)运行它。如果一个或多个reducer任务在作业执行期间被终止或崩溃,则会重新启动整个MapReduce作业,并再次执行映射程序和reducer(文档)。以下是我的问题: 1] 在作业开始时,我们是否可以知道作业是重新启动的,还是由于上一次运行中的某些故障而重新启动的?(这让我想到了第二季度) 2] 柜台能帮忙吗?如果某些任务失败,导致整个作业重新启动,计数器的值是否会结转 3] Hadoop是否提供了任何

我有一个MapReduce作业,我使用
job.waitForCompletion(true)
运行它。如果一个或多个reducer任务在作业执行期间被终止或崩溃,则会重新启动整个MapReduce作业,并再次执行映射程序和reducer(文档)。以下是我的问题:

1] 在作业开始时,我们是否可以知道作业是重新启动的,还是由于上一次运行中的某些故障而重新启动的?(这让我想到了第二季度)

2] 柜台能帮忙吗?如果某些任务失败,导致整个作业重新启动,计数器的值是否会结转

3] Hadoop是否提供了任何内置的检查点方法来跟踪以前的计算,并帮助避免在失败/崩溃之前执行映射程序和还原程序所做的相同计算

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

  • 对术语的一些更正。如果作业的一个或多个任务失败,作业不会重新启动。任务可能会重新启动。从mapper/reducer上下文中,您可以获得包含作为id的最后一个标记的尝试编号

  • 来自失败任务尝试的计数器更新不会聚合到作业总数中,因此不应担心过度计数

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