@InterfaceAudience.LimitedPrivate(value={"HDFS","MapReduce"}) @InterfaceStability.Unstable public class NetworkTopologyWithNodeGroup extends NetworkTopology
NetworkTopologyNetworkTopology.InvalidTopologyException| Modifier and Type | Field and Description |
|---|---|
static String |
DEFAULT_NODEGROUP |
DEFAULT_HOST_LEVEL, DEFAULT_RACK, LOG, netlock, numOfRacks, r| Constructor and Description |
|---|
NetworkTopologyWithNodeGroup() |
| Modifier and Type | Method and Description |
|---|---|
void |
add(Node node)
Add a leaf node
Update node counter & rack counter if necessary
|
protected Node |
getNodeForNetworkLocation(Node node)
Return a reference to the node given its string representation.
|
String |
getNodeGroup(String loc)
Given a string representation of a node group for a specific network
location
|
String |
getRack(String loc)
Given a string representation of a rack for a specific network
location
To be overridden in subclasses for specific NetworkTopology
implementations, as alternative to overriding the full
NetworkTopology.getRack(String) method. |
boolean |
isNodeGroupAware()
Check if network topology is aware of NodeGroup
|
boolean |
isOnSameNodeGroup(Node node1,
Node node2)
Check if two nodes are on the same node group (hypervisor) The
assumption here is: each nodes are leaf nodes.
|
boolean |
isOnSameRack(Node node1,
Node node2)
Check if two nodes are on the same rack
|
void |
pseudoSortByDistance(Node reader,
Node[] nodes)
Sort nodes array by their distances to reader
It linearly scans the array, if a local node is found, swap it with
the first element of the array.
|
void |
remove(Node node)
Remove a node
Update node counter and rack counter if necessary
|
chooseRandom, contains, countNumOfAvailableNodes, getDatanodesInRack, getDistance, getFirstHalf, getInstance, getLastHalf, getLeaves, getNode, getNumOfLeaves, getNumOfRacks, isSameParents, swap, toStringpublic static final String DEFAULT_NODEGROUP
protected Node getNodeForNetworkLocation(Node node)
NetworkTopologyNetworkTopology.getNode(String).
To be overridden in subclasses for specific NetworkTopology
implementations, as alternative to overriding the full NetworkTopology.add(Node)
method.
getNodeForNetworkLocation in class NetworkTopologynode - The string representation of this node's network location is
used to retrieve a Node object.NetworkTopology.add(Node),
NetworkTopology.getNode(String)public String getRack(String loc)
NetworkTopologyNetworkTopology.getRack(String) method.getRack in class NetworkTopologyloc - a path-like string representation of a network locationpublic String getNodeGroup(String loc)
loc - a path-like string representation of a network locationpublic boolean isOnSameRack(Node node1, Node node2)
NetworkTopologyisOnSameRack in class NetworkTopologynode1 - one node (can be null)node2 - another node (can be null)public boolean isOnSameNodeGroup(Node node1, Node node2)
isOnSameNodeGroup in class NetworkTopologynode1 - one node (can be null)node2 - another node (can be null)IllegalArgumentException - when either node1 or node2 is null, or node1 or node2 do
not belong to the clusterpublic boolean isNodeGroupAware()
isNodeGroupAware in class NetworkTopologypublic void add(Node node)
add in class NetworkTopologynode - node to be added; can be nullIllegalArgumentException - if add a node to a leave
or node to be added is not a leafpublic void remove(Node node)
remove in class NetworkTopologynode - node to be removed; can be nullpublic void pseudoSortByDistance(Node reader, Node[] nodes)
pseudoSortByDistance in class NetworkTopologyreader - the node that wishes to read a block from one of the nodesnodes - the list of nodes containing data for the readerCopyright © 2013 Apache Software Foundation. All rights reserved.