|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.hadoop.net.NetworkTopology
public class NetworkTopology
The class represents a cluster of computer with a tree hierarchical network topology. For example, a cluster may be consists of many data centers filled with racks of computers. In a network topology, leaves represent data nodes (computers) and inner nodes represent switches/routers that manage traffic in/out of data centers or racks.
Nested Class Summary | |
---|---|
static class |
NetworkTopology.InvalidTopologyException
|
Field Summary | |
---|---|
static int |
DEFAULT_HOST_LEVEL
|
static String |
DEFAULT_RACK
|
static org.apache.commons.logging.Log |
LOG
|
protected ReadWriteLock |
netlock
|
protected int |
numOfRacks
|
protected static Random |
r
|
Constructor Summary | |
---|---|
NetworkTopology()
|
Method Summary | |
---|---|
void |
add(Node node)
Add a leaf node Update node counter & rack counter if neccessary |
Node |
chooseRandom(String scope)
randomly choose one node from scope if scope starts with ~, choose one from the all nodes except for the ones in scope; otherwise, choose one from scope |
boolean |
contains(Node node)
Check if the tree contains node node |
int |
countNumOfAvailableNodes(String scope,
Collection<Node> excludedNodes)
return the number of leaves in scope but not in excludedNodes if scope starts with ~, return the number of nodes that are not in scope and excludedNodes; |
int |
getDistance(Node node1,
Node node2)
Return the distance between two nodes It is assumed that the distance from one node to its parent is 1 The distance between two nodes is calculated by summing up their distances to their closest common ancestor. |
static String |
getFirstHalf(String networkLocation)
Divide networklocation string into two parts by last separator, and get the first part here. |
static NetworkTopology |
getInstance(Configuration conf)
Get an instance of NetworkTopology based on the value of the configuration parameter net.topology.impl. |
static String |
getLastHalf(String networkLocation)
Divide networklocation string into two parts by last separator, and get the second part here. |
List<Node> |
getLeaves(String scope)
return leaves in scope |
Node |
getNode(String loc)
Given a string representation of a node, return its reference |
protected Node |
getNodeForNetworkLocation(Node node)
Return a reference to the node given its string representation. |
int |
getNumOfLeaves()
Return the total number of nodes |
int |
getNumOfRacks()
Return the total number of racks |
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 getRack(String) method. |
boolean |
isNodeGroupAware()
Check if network topology is aware of NodeGroup |
boolean |
isOnSameNodeGroup(Node node1,
Node node2)
Return false directly as not aware of NodeGroup, to be override in sub-class |
boolean |
isOnSameRack(Node node1,
Node node2)
Check if two nodes are on the same rack |
protected boolean |
isSameParents(Node node1,
Node node2)
Compare the parents of each node for equality |
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 & rack counter if neccessary |
protected static void |
swap(Node[] nodes,
int i,
int j)
|
String |
toString()
convert a network tree to a string |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final String DEFAULT_RACK
public static final int DEFAULT_HOST_LEVEL
public static final org.apache.commons.logging.Log LOG
protected int numOfRacks
protected ReadWriteLock netlock
protected static final Random r
Constructor Detail |
---|
public NetworkTopology()
Method Detail |
---|
public static NetworkTopology getInstance(Configuration conf)
conf
- the configuration to be used
public void add(Node node)
node
- node to be added
IllegalArgumentException
- if add a node to a leave
or node to be added is not a leafprotected Node getNodeForNetworkLocation(Node node)
getNode(String)
.
To be overridden in subclasses for specific NetworkTopology
implementations, as alternative to overriding the full add(Node)
method.
node
- The string representation of this node's network location is
used to retrieve a Node object.
add(Node)
,
getNode(String)
public void remove(Node node)
node
- node to be removedpublic boolean contains(Node node)
node
- a node
public Node getNode(String loc)
loc
- a path-like string representation of a node
public String getRack(String loc)
getRack(String)
method.
loc
- a path-like string representation of a network location
public int getNumOfRacks()
public int getNumOfLeaves()
public int getDistance(Node node1, Node node2)
node1
- one nodenode2
- another node
public boolean isOnSameRack(Node node1, Node node2)
node1
- one nodenode2
- another node
IllegalArgumentException
- when either node1 or node2 is null, or
node1 or node2 do not belong to the clusterpublic boolean isNodeGroupAware()
public boolean isOnSameNodeGroup(Node node1, Node node2)
protected boolean isSameParents(Node node1, Node node2)
To be overridden in subclasses for specific NetworkTopology
implementations, as alternative to overriding the full
isOnSameRack(Node, Node)
method.
node1
- the first node to comparenode2
- the second node to compare
isOnSameRack(Node, Node)
public Node chooseRandom(String scope)
scope
- range of nodes from which a node will be choosen
public List<Node> getLeaves(String scope)
scope
- a path string
public int countNumOfAvailableNodes(String scope, Collection<Node> excludedNodes)
scope
- a path string that may start with ~excludedNodes
- a list of nodes
public String toString()
toString
in class Object
public static String getFirstHalf(String networkLocation)
networkLocation
-
public static String getLastHalf(String networkLocation)
networkLocation
-
protected static void swap(Node[] nodes, int i, int j)
public void pseudoSortByDistance(Node reader, Node[] nodes)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |