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.
