Hadoop 0.13.1 API

Hadoop is a distributed computing platform.

See:
          Description

Core
org.apache.hadoop  
org.apache.hadoop.conf Configuration of system parameters.
org.apache.hadoop.contrib.utils.join  
org.apache.hadoop.dfs A distributed implementation of FileSystem.
org.apache.hadoop.filecache  
org.apache.hadoop.fs An abstract file system API.
org.apache.hadoop.fs.s3 A distributed implementation of FileSystem that uses Amazon S3.
org.apache.hadoop.io Generic i/o code for use when reading and writing data to the network, to databases, and to files.
org.apache.hadoop.io.compress  
org.apache.hadoop.io.compress.lzo  
org.apache.hadoop.io.compress.zlib  
org.apache.hadoop.io.retry A mechanism for selectively retrying methods that throw exceptions under certain circumstances.
org.apache.hadoop.ipc Tools to help define network clients and servers.
org.apache.hadoop.mapred A system for scalable, fault-tolerant, distributed computation over large data collections.
org.apache.hadoop.mapred.jobcontrol Utilities for managing dependent jobs.
org.apache.hadoop.mapred.lib Library of generally useful mappers, reducers, and partitioners.
org.apache.hadoop.mapred.lib.aggregate Classes for performing various counting and aggregations.
org.apache.hadoop.metrics This package defines an API for reporting performance metric information.
org.apache.hadoop.metrics.file Implementation of the metrics package that writes the metrics to a file.
org.apache.hadoop.metrics.ganglia Implementation of the metrics package that sends metric data to Ganglia.
org.apache.hadoop.metrics.spi The Service Provider Interface for the Metrics API.
org.apache.hadoop.net Network-related classes.
org.apache.hadoop.record Hadoop record I/O contains classes and a record description language translator for simplifying serialization and deserialization of records in a language-neutral manner.
org.apache.hadoop.record.compiler This package contains classes needed for code generation from the hadoop record compiler.
org.apache.hadoop.record.compiler.ant  
org.apache.hadoop.record.compiler.generated This package contains code generated by JavaCC from the Hadoop record syntax file rcc.jj.
org.apache.hadoop.tools  
org.apache.hadoop.util Common utilities.

 

Examples
org.apache.hadoop.examples Hadoop example code.

 

contrib: Streaming
org.apache.hadoop.streaming  

 

Hadoop is a distributed computing platform.

Hadoop primarily consists of a distributed filesystem (DFS, in org.apache.hadoop.dfs) and an implementation of a MapReduce distributed data processor (in org.apache.hadoop.mapred ).

Requirements

  1. Java 1.5.x, preferably from Sun Set JAVA_HOME to the root of your Java installation.
  2. ssh must be installed and sshd must be running to use Hadoop's scripts to manage remote Hadoop daemons. On Ubuntu, this may done with
    sudo apt-get install ssh
  3. rsync must be installed to use Hadoop's scripts to manage remote Hadoop installations. On Ubuntu, this may done with
    sudo apt-get install rsync.
  4. On Win32, cygwin, for shell support. To use Subversion on Win32, select the subversion package when you install, in the "Devel" category. Distributed operation has not been well tested on Win32, so this should primarily be considered a development platform at this point, not a production platform.

Getting Started

First, you need to get a copy of the Hadoop code.

You can download a nightly build from http://cvs.apache.org/dist/lucene/hadoop/nightly/. Unpack the release and connect to its top-level directory.

Or, check out the code from subversion and build it with Ant.

Edit the file conf/hadoop-env.sh to define at least JAVA_HOME.

Try the following command:

bin/hadoop

This will display the documentation for the Hadoop command script.

Standalone operation

By default, Hadoop is configured to run things in a non-distributed mode, as a single Java process. This is useful for debugging, and can be demonstrated as follows:

mkdir input
cp conf/*.xml input
bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
cat output/*

This will display counts for each match of the regular expression.

Note that input is specified as a directory containing input files and that output is also specified as a directory where parts are written.

Distributed operation

To configure Hadoop for distributed operation you must specify the following:
  1. The NameNode (Distributed Filesystem master) host and port. This is specified with the configuration property fs.default.name.
  2. The JobTracker (MapReduce master) host and port. This is specified with the configuration property mapred.job.tracker.
  3. A slaves file that lists the names of all the hosts in the cluster. The default slaves file is conf/slaves.

Pseudo-distributed configuration

You can in fact run everything on a single host. To run things this way, put the following in conf/hadoop-site.xml: <configuration> <property> <name>fs.default.name</name> <value>localhost:9000</value> </property> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>

(We also set the DFS replication level to 1 in order to reduce warnings when running on a single node.)

Now check that the command
ssh localhost
does not require a password. If it does, execute the following commands:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Bootstrapping

A new distributed filesystem must be formatted with the following command, run on the master node:

bin/hadoop namenode -format

The Hadoop daemons are started with the following command:

bin/start-all.sh

Daemon log output is written to the logs/ directory.

Input files are copied into the distributed filesystem as follows:

bin/hadoop dfs -put input input

Distributed execution

Things are run as before, but output must be copied locally to examine it:

bin/hadoop org.apache.hadoop.mapred.demo.Grep input output 'dfs[a-z.]+'
bin/hadoop dfs -get output output cat output/*

When you're done, stop the daemons with:

bin/stop-all.sh

Fully-distributed operation

Distributed operation is just like the pseudo-distributed operation described above, except:

  1. Specify hostname or IP address of the master server in the values for fs.default.name and mapred.job.tracker in conf/hadoop-site.xml. These are specified as host:port pairs.
  2. Specify directories for dfs.name.dir and dfs.data.dir in conf/hadoop-site.xml. These are used to hold distributed filesystem data on the master node and slave nodes respectively. Note that dfs.data.dir may contain a space- or comma-separated list of directory names, so that data may be stored on multiple devices.
  3. Specify mapred.local.dir in conf/hadoop-site.xml. This determines where temporary MapReduce data is written. It also may be a list of directories.
  4. Specify mapred.map.tasks and mapred.reduce.tasks in conf/mapred-default.xml. As a rule of thumb, use 10x the number of slave processors for mapred.map.tasks, and 2x the number of slave processors for mapred.reduce.tasks.
  5. List all slave hostnames or IP addresses in your conf/slaves file, one per line.



Copyright © 2006 The Apache Software Foundation