@InterfaceAudience.LimitedPrivate(value={"HDFS","MapReduce"}) @InterfaceStability.Unstable public class NetworkTopologyWithNodeGroup extends NetworkTopology
NetworkTopology
NetworkTopology.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, toString
public static final String DEFAULT_NODEGROUP
protected Node getNodeForNetworkLocation(Node node)
NetworkTopology
NetworkTopology.getNode(String)
.
To be overridden in subclasses for specific NetworkTopology
implementations, as alternative to overriding the full NetworkTopology.add(Node)
method.
getNodeForNetworkLocation
in class NetworkTopology
node
- 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)
NetworkTopology
NetworkTopology.getRack(String)
method.getRack
in class NetworkTopology
loc
- 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)
NetworkTopology
isOnSameRack
in class NetworkTopology
node1
- one node (can be null)node2
- another node (can be null)public boolean isOnSameNodeGroup(Node node1, Node node2)
isOnSameNodeGroup
in class NetworkTopology
node1
- 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 NetworkTopology
public void add(Node node)
add
in class NetworkTopology
node
- 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 NetworkTopology
node
- node to be removed; can be nullpublic void pseudoSortByDistance(Node reader, Node[] nodes)
pseudoSortByDistance
in class NetworkTopology
reader
- 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.