Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Exception handling 如何处理在映射/减少期间死亡的datanode_Exception Handling_Hadoop_Mapreduce - Fatal编程技术网

Exception handling 如何处理在映射/减少期间死亡的datanode

Exception handling 如何处理在映射/减少期间死亡的datanode,exception-handling,hadoop,mapreduce,Exception Handling,Hadoop,Mapreduce,当map/reduce使用的datanode关闭时会发生什么情况?作业不应该重定向到另一个datanode吗?我的代码应该如何处理这种异常情况?这主要取决于您的HDFS复制。如果大于1,作业将请求一个不在“停机”服务器上的块。如果存在有效的复制,它将流式传输到作业,作业可以使用新块再次运行。 我的代码应该如何处理这种异常情况 即使整个工作都失败了,你也不会遇到这样的例外。在这种情况下,您可以重新安排作业,并希望datanode恢复运行。如果datanode停止运行,则该节点上运行的任务(假设您

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

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

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


即使整个工作都失败了,你也不会遇到这样的例外。在这种情况下,您可以重新安排作业,并希望datanode恢复运行。

如果datanode停止运行,则该节点上运行的任务(假设您也将其用作tasktracker)将失败,并且这些失败的任务将分配给其他tasktracker重新执行。在dead datanode中丢失的数据块将在其他datanode中可用,因为将在集群中复制数据。因此,即使datanode宕机,也不会有任何损失,除了重新执行失败任务的短暂延迟。所有这些都将由框架来处理。您的代码不必担心这一点。

Hmm…我的复制实际上是3,在测试过程中我关闭了2个数据节点,但我得到了以下信息:INFO hdfs.DFSClient:无法从任何节点获得blk_7178702856169522439_8519块:java.io.IOException:没有活动节点包含当前块。因此复制未完全完成。