Block move execution
The HDFS Balancer dispatches a scheduled block move by invoking the
DataTransferProtocol.replaceBlock(..)
method to the target DataNode.
The Balancer specifies the
proxy, and the source as delete-hint
in the method call. The target
DataNode copies the replica directly from the proxy to its local storage. When the
copying process has been completed, the target DataNode reports the new replica to the
NameNode with the delete-hint
. NameNode uses
delete-hint
to delete the extra replica, that is, delete the
replica stored in the source.
After all block moves are dispatched, the HDFS Balancer waits until all the moves
are completed. Then, the HDFS Balancer continues running a new iteration and repeats
all of the steps. If the scheduled moves fail for 5
consecutive
iterations, the HDFS Balancer terminates with a NO_MOVE_PROGRESS
exit status.