org.apache.hadoop.net
Class AbstractDNSToSwitchMapping

java.lang.Object
  extended by org.apache.hadoop.net.AbstractDNSToSwitchMapping
All Implemented Interfaces:
Configurable, DNSToSwitchMapping
Direct Known Subclasses:
CachedDNSToSwitchMapping

@InterfaceAudience.Public
@InterfaceStability.Evolving
public abstract class AbstractDNSToSwitchMapping
extends Object
implements DNSToSwitchMapping, Configurable

This is a base class for DNS to Switch mappings.

It is not mandatory to derive DNSToSwitchMapping implementations from it, but it is strongly recommended, as it makes it easy for the Hadoop developers to add new methods to this base class that are automatically picked up by all implementations.

This class does not extend the Configured base class, and should not be changed to do so, as it causes problems for subclasses. The constructor of the Configured calls the setConf(Configuration) method, which will call into the subclasses before they have been fully constructed.


Constructor Summary
protected AbstractDNSToSwitchMapping()
          Create an unconfigured instance
protected AbstractDNSToSwitchMapping(Configuration conf)
          Create an instance, caching the configuration file.
 
Method Summary
 String dumpTopology()
          Generate a string listing the switch mapping implementation, the mapping for every known node and the number of nodes and unique switches known about -each entry to a separate line.
 Configuration getConf()
          Return the configuration used by this object.
 Map<String,String> getSwitchMap()
          Get a copy of the map (for diagnostics)
static boolean isMappingSingleSwitch(DNSToSwitchMapping mapping)
          Query for a DNSToSwitchMapping instance being on a single switch.
 boolean isSingleSwitch()
          Predicate that indicates that the switch mapping is known to be single-switch.
protected  boolean isSingleSwitchByScriptPolicy()
           
 void setConf(Configuration conf)
          Set the configuration to be used by this object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.hadoop.net.DNSToSwitchMapping
reloadCachedMappings, reloadCachedMappings, resolve
 

Constructor Detail

AbstractDNSToSwitchMapping

protected AbstractDNSToSwitchMapping()
Create an unconfigured instance


AbstractDNSToSwitchMapping

protected AbstractDNSToSwitchMapping(Configuration conf)
Create an instance, caching the configuration file. This constructor does not call setConf(Configuration); if a subclass extracts information in that method, it must call it explicitly.

Parameters:
conf - the configuration
Method Detail

getConf

public Configuration getConf()
Description copied from interface: Configurable
Return the configuration used by this object.

Specified by:
getConf in interface Configurable

setConf

public void setConf(Configuration conf)
Description copied from interface: Configurable
Set the configuration to be used by this object.

Specified by:
setConf in interface Configurable

isSingleSwitch

public boolean isSingleSwitch()
Predicate that indicates that the switch mapping is known to be single-switch. The base class returns false: it assumes all mappings are multi-rack. Subclasses may override this with methods that are more aware of their topologies.

This method is used when parts of Hadoop need know whether to apply single rack vs multi-rack policies, such as during block placement. Such algorithms behave differently if they are on multi-switch systems.

Returns:
true if the mapping thinks that it is on a single switch

getSwitchMap

public Map<String,String> getSwitchMap()
Get a copy of the map (for diagnostics)

Returns:
a clone of the map or null for none known

dumpTopology

public String dumpTopology()
Generate a string listing the switch mapping implementation, the mapping for every known node and the number of nodes and unique switches known about -each entry to a separate line.

Returns:
a string that can be presented to the ops team or used in debug messages.

isSingleSwitchByScriptPolicy

protected boolean isSingleSwitchByScriptPolicy()

isMappingSingleSwitch

public static boolean isMappingSingleSwitch(DNSToSwitchMapping mapping)
Query for a DNSToSwitchMapping instance being on a single switch.

This predicate simply assumes that all mappings not derived from this class are multi-switch.

Parameters:
mapping - the mapping to query
Returns:
true if the base class says it is single switch, or the mapping is not derived from this class.


Copyright © 2014 Apache Software Foundation. All Rights Reserved.