MapReduce中的容错

时间:2011-04-28 04:35:02

标签: mapreduce distributed-computing fault-tolerance

我正在阅读有关Hadoop以及它是如何容错的。我阅读了HDFS并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提及mapreduce如何执行容错的文档。特别是,当包含Job Tracker的主节点发生故障或任何从节点发生故障时会发生什么?

如果有人能指出一些链接和参考资料,可以详细解释这一点。

3 个答案:

答案 0 :(得分:4)

MapReduce图层的容错程度取决于hadoop版本。对于hadoop.0.21之前的版本,没有检查点,JobTracker的失败会导致数据丢失。

但是,从hadoop.0.21开始的版本,在JobTracker在文件中记录其进度的地方添加了检查点。当JobTracker启动时,它会查找此类数据,以便它可以从停止的位置重新开始工作。

答案 1 :(得分:4)

HADOOP中的容错

如果JobTracker在指定的时间段内没有从TaskTracker收到任何心跳 时间(默认情况下,设置为10分钟),JobTracker了解与之关联的工作人员 TaskTracker失败了。当这种情况发生时,JobTracker需要重新安排所有 待处理和正在进行的任务到另一个TaskTracker,因为属于的中间数据 失败的TaskTracker可能不再可用。

所有已完成的地图任务也需要 如果他们属于不完整的工作,则重新安排,因为中间结果存在于失败的工作中 减少任务可能无法访问TaskTracker文件系统。

TaskTracker也可以列入黑名单。在这种情况下,列入黑名单的TaskTracker仍然存在 与JobTracker进行通信,但没有任务分配给相应的工作人员。当一个 给定的任务数(默认情况下,此数字设置为4)属于由a管理的特定作业 TaskTracker失败,系统认为发生了故障。

TaskTracker发送给JobTracker的心跳中的一些相关信息是: ●TaskTrackerStatus

●重新启动

●如果是第一次心跳

●如果节点需要执行更多任务

TaskTrackerStatus包含有关TaskTracker管理的工作人员的信息,例如 可用的虚拟和物理内存以及有关CPU的信息。 JobTracker将黑名单与错误的TaskTracker以及最后收到的心跳保持在一起 从那个TaskTracker。因此,当收到新的重新启动/第一个心跳时,使用JobTracker 此信息可以决定是重新启动TaskTracker还是从中删除TaskTracker 黑名单

之后,在JobTracker中更新TaskTracker的状态,HeartbeatResponse是 创建。此HeartbeatResponse包含TaskTracker将采取的下一个操作。 如果要执行任务,TaskTracker需要新任务(这是一个参数) Heartbeat)并且它不在黑名单中,然后创建清理任务和设置任务( 清理/设置机制尚未进一步研究)。如果没有清理或 设置要执行的任务,JobTracker获得新任务。当任务可用时, LunchTaskAction被封装在每个中,然后JobTracker也会查找:

- 被杀的事件

-Jobs to kill / cleanup

- 输出尚未保存的任务。

所有这些操作(如果适用)都会添加到要在HeartbeatResponse中发送的操作列表中。 Hadoop中实现的容错机制仅限于在给定时重新分配任务 执行失败。在这种情况下,支持两种方案: 1.如果分配给给定TaskTracker的任务失败,则通过Heartbeat进行通信 用于通知JobTracker,如果可能,JobTracker会将任务重新分配给另一个节点。 2.如果TaskTracker失败,JobTracker会发现错误情况,因为它不会收到 来自TaskTracker的Heartbeats。然后,JobTracker将分配TaskTracker具有的任务 到另一个TaskTracker。 JobTracker中还存在单点故障,因为如果失败,则整个执行失败。

Hadoop中实现的容错标准方法的主要好处在于其简单性,并且它似乎在本地集群中运行良好但是,标准方法对于大型分布式基础架构来说还不够,节点之间的距离可能太大,重新分配任务所浪费的时间可能会降低系统的速度

答案 2 :(得分:2)

主节点(NameNode)是hadoop中的单点故障。如果它关闭,系统将无法使用。

Slave(Computational)节点故障很好,故障时在它们上运行的任何东西都只是在另一个节点上重新运行。实际上,即使节点运行缓慢,也可能发生这种情况。

有些项目/公司希望消除单点故障。如果你感兴趣的话,谷歌搜索“hadoop ha”(高可用性)应该让你上路。