hdfs排除addblockrequestproto中的数据节点

2skhul33  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(888)

我正在实现一个datanode故障转移来写入hdfs,当块的第一个datanode发生故障时,hdfs仍然可以写入一个块。
算法是。首先,确定故障节点。然后,请求一个新的块。hdfs端口api提供 excludeNodes ,我曾经告诉namenode不要在那里分配新的块。 failedDatanodes 是已识别的失败数据节点,它们在日志中是正确的。

req := &hdfs.AddBlockRequestProto{
    Src:           proto.String(bw.src),
    ClientName:    proto.String(bw.clientName),
    ExcludeNodes:  failedDatanodes,
}

但是,namenode仍然将块定位到失败的datanodes。
有人知道为什么吗?我错过什么了吗?谢谢您。

t5zmwmid

t5zmwmid1#

我找到了一个解决方案,首先放弃块,然后请求新块。在以前的设计中,新请求的块不能替换旧的块

相关问题