Hi Akira Ajisaka, its really an interesting feature and would like to take this ahead. To begin with, I have gone through the -setBalancerBandwidth feature. Here, Namenode is sending the DNA_BALANCERBANDWIDTHUPDATE command to the Datanodes as a heartbeat response and Datanode will update the new bandwidth value. In normal case, after setting the bandwidth all the datanodes will have the same value. But I could see few corner cases where all the Datanodes in a cluster not having unique bandwidth value.
Case-1) Newly added Datanodes will not aware about the new value and will have the default bandwidth value.
Case-2) Assume we have 10 Datanodes, after sending heartbeat responses to 1 to 5 Datanodes, unfortunately Namenode restarted. Since bandwidth value is not persisted restarted Namenode will not have the new bandwidth value. Now, the rest of the 6 to 10 Datanodes will be having old value.
Is this expected behavior?. If yes, we have to design the -getBalancerBandwidth command in such a way to list each Datanode with the corresponding bandwidth value like, each Datanode = bandwidth value. Any thoughts?