我有10个数据noes和2个名称节点Hadoop集群配置了3个重复项,我想知道如果其中一个数据节点发生故障,hadoop会尝试在其他活动节点上生成丢失的重复数据吗?或者什么都不做(因为还剩下2个复制品).
添加,如果down数据节点在一段时间后返回,该怎么办才能识别该节点上的数据?谢谢!
hadoop会尝试在其他活动节点上生成丢失的重复项吗?或者什么都不做(因为还剩下2个复制品).
是的,Hadoop会识别它并在其他一些节点上复制该数据.当Namenode停止从数据节点接收心跳时,它假定数据节点丢失.为了将所有数据的复制保持为定义的复制因子,它将在其他数据节点上创建副本.
添加,如果down数据节点在一段时间后返回,该怎么办才能识别该节点上的数据?
是的,当数据节点返回其所有数据时,Name节点将删除/删除额外的数据副本.在下一个心跳到数据节点时,Name节点将发送指令以删除额外数据并释放磁盘空间.
来自Apache HDFS文档的片段:
每个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
.