Class NetworkTopologyWithNodeGroup

java.lang.Object
org.apache.hadoop.net.NetworkTopology
org.apache.hadoop.net.NetworkTopologyWithNodeGroup

@LimitedPrivate({"HDFS","MapReduce"}) @Unstable public class NetworkTopologyWithNodeGroup extends NetworkTopology
The class extends NetworkTopology to represents a cluster of computer with a 4-layers hierarchical network topology. In this network topology, leaves represent data nodes (computers) and inner nodes represent switches/routers that manage traffic in/out of data centers, racks or physical host (with virtual switch).
See Also:
  • Field Details

  • Constructor Details

    • NetworkTopologyWithNodeGroup

      public NetworkTopologyWithNodeGroup()
  • Method Details

    • getNodeForNetworkLocation

      protected Node getNodeForNetworkLocation(Node node)
      Description copied from class: NetworkTopology
      Return a reference to the node given its string representation. Default implementation delegates to NetworkTopology.getNode(String).

      To be overridden in subclasses for specific NetworkTopology implementations, as alternative to overriding the full NetworkTopology.add(Node) method.

      Overrides:
      getNodeForNetworkLocation in class NetworkTopology
      Parameters:
      node - The string representation of this node's network location is used to retrieve a Node object.
      Returns:
      a reference to the node; null if the node is not in the tree
      See Also:
    • getRack

      public String getRack(String loc)
      Description copied from class: NetworkTopology
      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.
      Overrides:
      getRack in class NetworkTopology
      Parameters:
      loc - a path-like string representation of a network location
      Returns:
      a rack string
    • getNodeGroup

      public String getNodeGroup(String loc)
      Given a string representation of a node group for a specific network location
      Parameters:
      loc - a path-like string representation of a network location
      Returns:
      a node group string
    • isOnSameRack

      public boolean isOnSameRack(Node node1, Node node2)
      Description copied from class: NetworkTopology
      Check if two nodes are on the same rack
      Overrides:
      isOnSameRack in class NetworkTopology
      Parameters:
      node1 - one node (can be null)
      node2 - another node (can be null)
      Returns:
      true if node1 and node2 are on the same rack; false otherwise
    • isOnSameNodeGroup

      public 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.
      Overrides:
      isOnSameNodeGroup in class NetworkTopology
      Parameters:
      node1 - one node (can be null)
      node2 - another node (can be null)
      Returns:
      true if node1 and node2 are on the same node group; false otherwise
      Throws:
      IllegalArgumentException - when either node1 or node2 is null, or node1 or node2 do not belong to the cluster
    • isNodeGroupAware

      public boolean isNodeGroupAware()
      Check if network topology is aware of NodeGroup
      Overrides:
      isNodeGroupAware in class NetworkTopology
      Returns:
      Check if network topology is aware of NodeGroup.
    • add

      public void add(Node node)
      Add a leaf node Update node counter & rack counter if necessary
      Overrides:
      add in class NetworkTopology
      Parameters:
      node - node to be added; can be null
      Throws:
      IllegalArgumentException - if add a node to a leave or node to be added is not a leaf
    • remove

      public void remove(Node node)
      Remove a node Update node counter and rack counter if necessary
      Overrides:
      remove in class NetworkTopology
      Parameters:
      node - node to be removed; can be null
    • getWeight

      protected int getWeight(Node reader, Node node)
      Description copied from class: NetworkTopology
      Returns an integer weight which specifies how far away {node} is away from {reader}. A lower value signifies that a node is closer.
      Overrides:
      getWeight in class NetworkTopology
      Parameters:
      reader - Node where data will be read
      node - Replica of data
      Returns:
      weight
    • sortByDistance

      public void sortByDistance(Node reader, Node[] nodes, int activeLen)
      Sort nodes array by their distances to reader.

      This is the same as NetworkTopology.sortByDistance(Node, Node[], int) except with a four-level network topology which contains the additional network distance of a "node group" which is between local and same rack.

      Overrides:
      sortByDistance in class NetworkTopology
      Parameters:
      reader - Node where data will be read
      nodes - Available replicas with the requested data
      activeLen - Number of active nodes at the front of the array