如何处理在map / reduce期间死亡的datanode

时间:2011-01-27 19:12:36

标签: exception-handling hadoop mapreduce

当map / reduce使用的datanode出现故障时会发生什么?不应该将工作重定向到另一个datanode吗?我的代码应如何处理这种异常情况?

2 个答案:

答案 0 :(得分:1)

这主要取决于您的HDFS复制。如果它大于1,则作业将要求一个不在“已关闭”服务器上的块。如果存在有效的复制,则它将流式传输到作业,并且可以使用新块再次运行作业。

  

我的代码应如何处理这种异常情况?

如果整个工作失败,你将不会遇到任何这样的例外。在这种情况下,您可以重新安排工作,并希望datanode重新启动。

答案 1 :(得分:1)

如果datanode发生故障,那么在该节点上运行的任务(假设您也将其用作任务跟踪器)将失败,并且这些失败的任务将被分配给其他任务执行器以便重新执行。死数据节点中丢失的数据块将在其他数据节点中可用,因为将跨群集复制数据。因此,即使数据节点发生故障,除了重新执行失败任务的非常短暂的延迟之外,不会有任何损失。所有这些都将由框架处理。您的代码无需担心这一点。