Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.10.1
-
None
Description
In 2.10, the metric for distance between the client and the data node is wrong for machines that aren't running data nodes (ie. getWeightUsingNetworkLocation). The code works correctly in 3.3+.
Currently
Client | DataNode | getWeight | getWeightUsingNetworkLocation |
---|---|---|---|
/rack1/node1 | /rack1/node1 | 0 | 0 |
/rack1/node1 | /rack1/node2 | 2 | 2 |
/rack1/node1 | /rack2/node2 | 4 | 2 |
/pod1/rack1/node1 | /pod1/rack1/node2 | 2 | 2 |
/pod1/rack1/node1 | /pod1/rack2/node2 | 4 | 2 |
/pod1/rack1/node1 | /pod2/rack2/node2 | 6 | 4 |
This bug will destroy data locality on clusters where the clients share racks with DataNodes, but are running on machines that aren't running DataNodes, such as striping federated HDFS clusters across racks.
Attachments
Issue Links
- is related to
-
HADOOP-16161 NetworkTopology#getWeightUsingNetworkLocation return unexpected result
- Resolved
- links to