Rack Awareness
·
For
small clusters in which all servers are connected by a single switch, there are
only two levels of locality: "on-machine" and
"off-machine." When loading data from a DataNode's local drive into
HDFS, the NameNode will schedule one copy to go into the local DataNode, and
will pick two other machines at random from the cluster.
·
For
larger Hadoop installations which span multiple racks, it is important to
ensure that replicas of data exist on multiple racks. This way, the loss of a
switch does not render portions of the data unavailable due to all replicas
being underneath it.
·
HDFS
can be made rack-aware by the use of a script which allows the master node to
map the network topology of the cluster. While alternate configuration
strategies can be used, the default implementation allows you to provide an
executable script which returns the "rack address" of each of a list
of IP addresses.
·
The
network topology script receives as arguments one or more IP addresses of nodes
in the cluster. It returns on stdout a list of rack names, one for each input.
The input and output order must be consistent.
·
To
set the rack mapping script, specify the key topology.script.file.name in conf/hadoop-site.xml. This provides a
command to run to return a rack id; it must be an executable script or program.
By default, Hadoop will attempt to send a set of IP addresses to the file as
several separate command line arguments. You can control the maximum acceptable
number of arguments with the topology.script.number.args
key.
·
Rack
ids in Hadoop are hierarchical and look like path names. By default, every node
has a rack id of /default-rack. You can set rack ids for nodes to any arbitrary
path, e.g., /foo/bar-rack. Path elements further to the left are higher up the
tree. Thus a reasonable structure for a large installation may be
/top-switch-name/rack-name.
·
Hadoop
rack ids are not currently expressive enough to handle an unusual routing
topology such as a 3-d torus; they assume that each node is connected to a
single switch which in turn has a single upstream switch. This is not usually a
problem, however. Actual packet routing will be directed using the topology
discovered by or set in switches and routers. The Hadoop rack ids will be used
to find "near" and "far" nodes for replica placement (and
in 0.17, MapReduce task placement).
No comments:
Post a Comment