0
我正在实现用于在HDFS中写入的数据节点故障转移,即当块的第一个datanode出现故障时,HDFS仍然可以写入块。HDFS排除AddblockRequestProto中的数据节点
该算法是。首先,识别故障节点。然后,请求一个新块。 HDFS port api提供了excludeNodes
,我用它告诉Namenode不要在那里分配新块。 failedDatanodes
被标识为失败的datanodes,并且它们在日志中是正确的。
req := &hdfs.AddBlockRequestProto{
Src: proto.String(bw.src),
ClientName: proto.String(bw.clientName),
ExcludeNodes: failedDatanodes,
}
但是,namenode仍然定位到发生故障的datanodes的块。
任何人都知道为什么?我在这里错过了什么吗? 谢谢。