Affects Version/s: 0.11.0
Fix Version/s: 0.12.0
This issue aims to improve the rack-aware replica placement performance. A major idea is to avoid constructing lists of possible targets for random selection in chooseTarget, which currently needs interating all DatanodeDescriptors. I plan to change the NetworkTopology data structure as follow:
1. each InnerNode stores its childrens as a list;
2. each InnerNode adds a new field numberOfLeaves the total number of leaves (i.e. data nodes) in its subtree.
NetworkTopology will support two new methods:
1. DatanodeDescriptor chooseRandom( String scope): it randomly choose one leave from scope.
2. DatanodeDescriptor chooseRandomExclude(String excludedScope): it randomly choose one leave from ~scope
In addition, Issue 971 will also help improve the performance of the rack-aware DFS patch.