由于MapReduce在成百上千台机器上处理海量数据,所以容错机制是不可或缺的。
总的来说,MapReduce通过重新执行失效的地方来实现容错。
Master失效
Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失效,系统就从最近的一个检查点恢复并重新执行。
由于只有一个Master在运行,如果Master失效了,则只能终止整个MapReduce程序的运行并重新开始。
Worker失效
Master会周期性地给Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。