在其中一个数据节点关闭之后,Hadoop会做什么

时间:2015-12-25 02:44:20

标签: hadoop

我有10个数据noes和2个名称节点Hadoop集群配置了3个重复项,我想知道如果其中一个数据节点发生故障,hadoop会尝试在其他活动节点上生成丢失的重复数据吗?或者什么都不做(因为还剩下2个复制品)。

添加,如果向下数据节点在一段时间后回来怎么办,可以hadoop识别该节点上的数据?谢谢!

1 个答案:

答案 0 :(得分:10)

  

将hadoop尝试在其他活动节点上生成丢失的重复项?或者什么都不做(因为还剩下2个复制品)。

是的,Hadoop会识别它并在其他一些节点上复制该数据。当Namenode停止从数据节点接收心跳时,它假定数据节点丢失。为了将所有数据的复制保持为定义的复制因子,它将在其他数据节点上创建副本。

  

添加,如果down数据节点在一段时间后回来,可以hadoop识别该节点上的数据怎么办?

是的,当数据节点返回其所有数据时,Name节点将删除/删除额外的数据副本。在下一个心跳到数据节​​点时,Name节点将发送指令以删除额外数据并释放磁盘空间。

来自Apache HDFS文档的

Snippet:

  

每个DataNode定期向NameNode发送Heartbeat消息。网络分区可能导致DataNode的子集失去与NameNode的连接。 NameNode通过缺少Heartbeat消息来检测此情况。 NameNode将没有最近Heartbeats的DataNodes标记为已死,并且不会将任何新的IO请求转发给它们。注册到死DataNode的任何数据都不再可用于HDFS。 DataNode死亡可能导致某些块的复制因子低于其指定值。 NameNode不断跟踪需要复制的块,并在必要时启动复制。 The necessity for re-replication may arise due to many reasons: a DataNode may become unavailable, a replica may become corrupted, a hard disk on a DataNode may fail, or the replication factor of a file may be increased