2016-11-08 7 views
0

Я реализую переход на резервный ресурс datanode для записи в HDFS, что HDFS все еще может записать блок, когда первый datanode блока выходит из строя.HDFS исключить datanodes в AddblockRequestProto

Алгоритм. Во-первых, узел отказа будет идентифицирован. Затем запрашивается новый блок. Порт HDFS api предоставляет excludeNodes, который я использовал, чтобы сообщить Namenode о том, чтобы не выделять там новый блок. failedDatanodes идентифицированы неудавшиеся datanodes, и они правильны в журналах.

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

Но, номенелод все еще находит блок в неудавшихся датанодах.

Кто-нибудь знает почему? Я что-то пропустил? Спасибо.

ответ

0

Я нашел решение, которое сначала покидает блок, а затем запрашивает новый блок. В предыдущем проекте новый запрошенный блок не может заменить старый