【发布时间】:2013-08-14 08:00:56
【问题描述】:
我从 hadoop 操作中了解到,如果数据节点在写入过程中失败,
包含剩余数据节点的新复制管道是 打开并继续写入。在这一点上,事情大多回到 正常并且写操作一直持续到文件被关闭。这 namenode 会注意到文件中的块之一是 复制不足并将安排创建新副本 异步。一个客户端可以从多个失败的数据节点中恢复 提供至少最少数量的副本被写入(由 默认,这是一个)。
但是如果所有数据节点都失败了怎么办?即,未写入最小副本数? 客户会要求 namenode 提供新的数据节点列表吗?还是会失败?
注意:我的问题不是当集群中的所有数据节点都发生故障时会发生什么。问题是如果客户端应该写入的所有数据节点都失败了,在写入操作期间
假设namenode告诉客户端将BLOCK B1写入Rack1中的数据节点D1,Rack2中的D2和Rack1中的D3。集群中可能还有其他机架(机架 4、5、6、...)。如果 Rack1 和 2 在写过程中失败了,client 没有收到 datanodes 的 ACK 就知道数据没有写成功,此时会要求 Namenode 给新的 datanodes 集合吗?可能在仍然活着的机架中?
【问题讨论】: