我正在阅读有关 Hadoop 以及它的容错性的信息。我阅读了 HDFS 并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提到 mapreduce 如何执行容错的文档。特别是当包含 Job Tracker 的主节点宕机或任何从节点宕机时会发生什么?
如果有人可以向我指出一些详细解释这一点的链接和参考资料。
我正在阅读有关 Hadoop 以及它的容错性的信息。我阅读了 HDFS 并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提到 mapreduce 如何执行容错的文档。特别是当包含 Job Tracker 的主节点宕机或任何从节点宕机时会发生什么?
如果有人可以向我指出一些详细解释这一点的链接和参考资料。
MapReduce 层的容错取决于 hadoop 版本。对于 hadoop.0.21 之前的版本,没有检查点,JobTracker 失败会导致数据丢失。
但是,从 hadoop.0.21 开始的版本,添加了检查点,其中 JobTracker 在文件中记录其进度。当 JobTracker 启动时,它会查找此类数据,以便可以从中断的地方重新开始工作。
Hadoop 中的容错
如果 JobTracker 在指定的时间段内(默认设置为 10 分钟)没有收到来自 TaskTracker 的任何心跳,则 JobTracker 了解与该 TaskTracker 关联的工作人员已失败。当这种情况发生时,JobTracker 需要将所有挂起和正在进行的任务重新调度到另一个 TaskTracker,因为属于失败的 TaskTracker 的中间数据可能不再可用。
如果所有已完成的 map 任务属于未完成的作业,它们也需要重新调度,因为驻留在失败的 TaskTracker 文件系统中的中间结果可能无法被 reduce 任务访问。
TaskTracker 也可以被列入黑名单。在这种情况下,列入黑名单的 TaskTracker 与 JobTracker 保持通信,但没有任务分配给相应的工作人员。当属于由 TaskTracker 管理的特定作业的给定数量的任务(默认情况下,此数量设置为 4)失败时,系统认为发生了故障。
TaskTracker 发送给 JobTracker 的心跳中的一些相关信息是: ● TaskTrackerStatus
● 重新启动
● 如果是第一次心跳
● 如果节点需要执行更多任务
TaskTrackerStatus 包含有关由 TaskTracker 管理的工作人员的信息,例如可用的虚拟和物理内存以及有关 CPU 的信息。JobTracker 保留有故障的 TaskTracker 的黑名单,以及从该 TaskTracker 接收到的最后一个心跳。因此,当接收到新的重新启动/第一次心跳时,JobTracker 可以通过使用此信息来决定是重新启动 TaskTracker 还是将 TaskTracker 从黑名单中删除
之后,在 JobTracker 中更新 TaskTracker 的状态并创建 HeartbeatResponse。此 HeartbeatResponse 包含 TaskTracker 将采取的下一个操作。如果有任务要执行,TaskTracker 需要新任务(这是 Heartbeat 的一个参数)并且它不在黑名单中,则创建清理任务和设置任务(清理/设置机制尚未进一步研究) . 如果没有要执行的清理或设置任务,JobTracker 会获取新任务。当任务可用时,LunchTaskAction 被封装在每个任务中,然后 JobTracker 也会查找:
- 被杀死的任务
-杀死/清理的工作
- 尚未保存输出的任务。
所有这些操作(如果适用)都将添加到要在 HeartbeatResponse 中发送的操作列表中。Hadoop 中实现的容错机制仅限于在给定执行失败时重新分配任务。在这种情况下,支持两种情况: 1. 如果分配给给定 TaskTracker 的任务失败,则通过 Heartbeat 通信通知 JobTracker,如果可能,JobTracker 会将任务重新分配给另一个节点。2. 如果TaskTracker 失败,JobTracker 会注意到故障情况,因为它不会收到来自该TaskTracker 的Heartbeats。然后,JobTracker 会将 TaskTracker 拥有的任务分配给另一个 TaskTracker。JobTracker 中也存在单点故障,因为如果它失败了,整个执行就会失败。
在 Hadoop 中实现的容错标准方法的主要优点在于其简单性,并且似乎在本地集群中运行良好。但是,对于大型分布式基础设施,标准方法还不够,节点之间的距离可能太大,并且重新分配任务所浪费的时间可能会减慢系统速度
Master 节点(NameNode)是 hadoop 中的单点故障。如果它出现故障,则系统不可用。
从(计算)节点故障很好,故障时在它们上运行的任何东西都只是在不同的节点上重新运行。事实上,即使节点运行缓慢,也可能发生这种情况。
有一些项目/公司希望消除单点故障。如果您有兴趣,谷歌搜索“hadoop ha”(高可用性)应该会让您上路。