【发布时间】:2016-11-12 02:29:12
【问题描述】:
我正在实现一个用于写入 HDFS 的数据节点故障转移,当块的第一个数据节点发生故障时,HDFS 仍然可以写入一个块。
算法是。首先,将识别故障节点。然后,请求一个新块。 HDFS 端口 api 提供了excludeNodes,我用来告诉 Namenode 不要在那里分配新块。 failedDatanodes 被识别为失败的数据节点,它们在日志中是正确的。
req := &hdfs.AddBlockRequestProto{
Src: proto.String(bw.src),
ClientName: proto.String(bw.clientName),
ExcludeNodes: failedDatanodes,
}
但是,namenode 仍然将块定位到失败的数据节点。
有人知道为什么吗?我在这里错过了什么吗? 谢谢。
【问题讨论】: