<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
<document>
	<header>
		<title>Hadoop Commands Guide</title>
	</header>
	
	<body>
		<section>
			<title>Overview</title>
			<p>
				All Hadoop commands are invoked by the bin/hadoop script. Running the Hadoop
				script without any arguments prints the description for all commands.
			</p>
			<p>
				<code>Usage: hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]</code>
			</p>
			<p>
				Hadoop has an option parsing framework that employs parsing generic options as well as running classes.
			</p>
			<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>--config confdir</code></td>
			            <td>Overwrites the default Configuration directory. Default is ${HADOOP_HOME}/conf.</td>
			           </tr>
			           <tr>
			          	<td><code>GENERIC_OPTIONS</code></td>
			            <td>The common set of options supported by multiple commands.</td>
			           </tr>
			           <tr>
			          	<td><code>COMMAND</code><br/><code>COMMAND_OPTIONS</code></td>
			            <td>Various commands with their options are described in the following sections. The commands 
			            have been grouped into <a href="commands_manual.html#User+Commands">User Commands</a> 
			            and <a href="commands_manual.html#Administration+Commands">Administration Commands</a>.</td>
			           </tr>
			     </table>
			 <section>
				<title>Generic Options</title>
				<p>
				  The following options are supported by <a href="commands_manual.html#dfsadmin">dfsadmin</a>, 
				  <a href="commands_manual.html#fs">fs</a>, <a href="commands_manual.html#fsck">fsck</a> and 
				  <a href="commands_manual.html#job">job</a>. 
				  Applications should implement 
				  <a href="ext:api/org/apache/hadoop/util/tool">Tool</a> to support
				  <a href="ext:api/org/apache/hadoop/util/genericoptionsparser">
				  GenericOptions</a>.
				</p>
			     <table>
			          <tr><th> GENERIC_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-conf &lt;configuration file&gt;</code></td>
			            <td>Specify an application configuration file.</td>
			           </tr>
			           <tr>
			          	<td><code>-D &lt;property=value&gt;</code></td>
			            <td>Use value for given property.</td>
			           </tr>
			           <tr>
			          	<td><code>-fs &lt;local|namenode:port&gt;</code></td>
			            <td>Specify a namenode.</td>
			           </tr>
			           <tr>
			          	<td><code>-jt &lt;local|jobtracker:port&gt;</code></td>
			            <td>Specify a job tracker. Applies only to <a href="commands_manual.html#job">job</a>.</td>
			           </tr>
			           <tr>
			          	<td><code>-files &lt;comma separated list of files&gt;</code></td>
			            <td>Specify comma separated files to be copied to the map reduce cluster. 
			            Applies only to <a href="commands_manual.html#job">job</a>.</td>
			           </tr>
			           <tr>
			          	<td><code>-libjars &lt;comma seperated list of jars&gt;</code></td>
			            <td>Specify comma separated jar files to include in the classpath. 
			            Applies only to <a href="commands_manual.html#job">job</a>.</td>
			           </tr>
			           <tr>
			          	<td><code>-archives &lt;comma separated list of archives&gt;</code></td>
			            <td>Specify comma separated archives to be unarchived on the compute machines. 
			            Applies only to <a href="commands_manual.html#job">job</a>.</td>
			           </tr>
				</table>
			</section>	   
		</section>
		
		<section>
			<title> User Commands </title>
			<p>Commands useful for users of a Hadoop cluster.</p>
			<section>
				<title> archive </title>
				<p>
					Creates a Hadoop archive. More information see the <a href="hadoop_archives.html">Hadoop Archives Guide</a>.
				</p>
				<p>
					<code>Usage: hadoop archive -archiveName NAME &lt;src&gt;* &lt;dest&gt;</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
					   <tr>
			          	<td><code>-archiveName NAME</code></td>
			            <td>Name of the archive to be created.</td>
			           </tr>
			           <tr>
			          	<td><code>src</code></td>
			            <td>Filesystem pathnames which work as usual with regular expressions.</td>
			           </tr>
			           <tr>
			          	<td><code>dest</code></td>
			            <td>Destination directory which would contain the archive.</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> distcp </title>
				<p>
					Copy file or directories recursively. More information can be found at <a href="distcp.html">DistCp Guide</a>.
				</p>
				<p>
					<code>Usage: hadoop distcp &lt;srcurl&gt; &lt;desturl&gt;</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>srcurl</code></td>
			            <td>Source Url</td>
			           </tr>
			           <tr>
			          	<td><code>desturl</code></td>
			            <td>Destination Url</td>
			           </tr>
			     </table>
			</section>
			       
			<section>
				<title> fs </title>
				<p>
					Runs a generic filesystem user client.
				</p>
				<p>
					<code>Usage: hadoop fs [</code><a href="commands_manual.html#Generic+Options">GENERIC_OPTIONS</a><code>] 
					[COMMAND_OPTIONS]</code>
				</p>
				<p>
					The various COMMAND_OPTIONS can be found at 
					<a href="http://hadoop.apache.org/common/docs/current/file_system_shell.html">File System Shell Guide</a>.
				</p>   
			</section>
			
			<section>
				<title> fsck </title>
				<p>
					Runs a HDFS filesystem checking utility. See <a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Fsck">Fsck</a> for more info.
				</p> 
				<p><code>Usage: hadoop fsck [</code><a href="commands_manual.html#Generic+Options">GENERIC_OPTIONS</a><code>] 
				&lt;path&gt; [-move | -delete | -openforwrite] [-files [-blocks 
				[-locations | -racks]]]</code></p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			          <tr>
			            <td><code>&lt;path&gt;</code></td>
			            <td>Start checking from this path.</td>
			           </tr>
			           <tr>
			          	<td><code>-move</code></td>
			            <td>Move corrupted files to /lost+found</td>
			           </tr>
			           <tr>
			          	<td><code>-delete</code></td>
			            <td>Delete corrupted files.</td>
			           </tr>
			           <tr>
			          	<td><code>-openforwrite</code></td>
			            <td>Print out files opened for write.</td>
			           </tr>
			           <tr>
			          	<td><code>-files</code></td>
			            <td>Print out files being checked.</td>
			           </tr>
			           <tr>
			          	<td><code>-blocks</code></td>
			            <td>Print out block report.</td>
			           </tr>
			           <tr>
			          	<td><code>-locations</code></td>
			            <td>Print out locations for every block.</td>
			           </tr>
			           <tr>
			          	<td><code>-racks</code></td>
			            <td>Print out network topology for data-node locations.</td>
			           </tr>
					</table>
			</section>
			
			<section>
				<title> jar </title>
				<p>
					Runs a jar file. Users can bundle their Map Reduce code in a jar file and execute it using this command.
				</p> 
				<p>
					<code>Usage: hadoop jar &lt;jar&gt; [mainClass] args...</code>
				</p>
				<p>
					The streaming jobs are run via this command. For examples, see 
					<a href="streaming.html">Hadoop Streaming</a>.
				</p>
				<p>
					The WordCount example is also run using jar command. For examples, see the
					<a href="mapred_tutorial.html">MapReduce Tutorial</a>.
				</p>
			</section>
			
			<section>
				<title> job </title>
				<p>
					Command to interact with Map Reduce Jobs.
				</p>
				<p>
					<code>Usage: hadoop job [</code><a href="commands_manual.html#Generic+Options">GENERIC_OPTIONS</a><code>] 
					[-submit &lt;job-file&gt;] | [-status &lt;job-id&gt;] | 
					[-counter &lt;job-id&gt; &lt;group-name&gt; &lt;counter-name&gt;] | [-kill &lt;job-id&gt;] | 
					[-events &lt;job-id&gt; &lt;from-event-#&gt; &lt;#-of-events&gt;] | [-history [all] &lt;historyFile&gt;] |
					[-list [all]] | [-kill-task &lt;task-id&gt;] | [-fail-task &lt;task-id&gt;] | 
          [-set-priority &lt;job-id&gt; &lt;priority&gt;]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-submit &lt;job-file&gt;</code></td>
			            <td>Submits the job.</td>
			           </tr>
			           <tr>
			          	<td><code>-status &lt;job-id&gt;</code></td>
			            <td>Prints the map and reduce completion percentage and all job counters.</td>
			           </tr>
			           <tr>
			          	<td><code>-counter &lt;job-id&gt; &lt;group-name&gt; &lt;counter-name&gt;</code></td>
			            <td>Prints the counter value.</td>
			           </tr>
			           <tr>
			          	<td><code>-kill &lt;job-id&gt;</code></td>
			            <td>Kills the job.</td>
			           </tr>
			           <tr>
			          	<td><code>-events &lt;job-id&gt; &lt;from-event-#&gt; &lt;#-of-events&gt;</code></td>
			            <td>Prints the events' details received by jobtracker for the given range.</td>
			           </tr>
			           <tr>
			          	<td><code>-history [all] &lt;historyFile&gt;</code></td>
			            <td>-history &lt;historyFile&gt; prints job details, failed and killed tip details. More details 
			            about the job such as successful tasks and task attempts made for each task can be viewed by 
			            specifying the [all] option. </td>
			           </tr>
			           <tr>
			          	<td><code>-list [all]</code></td>
			            <td>-list all displays all jobs. -list displays only jobs which are yet to complete.</td>
			           </tr>
			           <tr>
			          	<td><code>-kill-task &lt;task-id&gt;</code></td>
			            <td>Kills the task. Killed tasks are NOT counted against failed attempts.</td>
			           </tr>
			           <tr>
			          	<td><code>-fail-task &lt;task-id&gt;</code></td>
			            <td>Fails the task. Failed tasks are counted against failed attempts.</td>
			           </tr>
                 <tr>
                  <td><code>-set-priority &lt;job-id&gt; &lt;priority&gt;</code></td>
                  <td>Changes the priority of the job. 
                  Allowed priority values are VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW</td>
                 </tr>
					</table>
			</section>
			
			<section>
				<title> pipes </title>
				<p>
					Runs a pipes job.
				</p>
				<p>
					<code>Usage: hadoop pipes [-conf &lt;path&gt;] [-jobconf &lt;key=value&gt;, &lt;key=value&gt;, ...] 
					[-input &lt;path&gt;] [-output &lt;path&gt;] [-jar &lt;jar file&gt;] [-inputformat &lt;class&gt;] 
					[-map &lt;class&gt;] [-partitioner &lt;class&gt;] [-reduce &lt;class&gt;] [-writer &lt;class&gt;] 
					[-program &lt;executable&gt;] [-reduces &lt;num&gt;] </code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			          <tr>
			          	<td><code>-conf &lt;path&gt;</code></td>
			            <td>Configuration for job</td>
			           </tr>
			           <tr>
			          	<td><code>-jobconf &lt;key=value&gt;, &lt;key=value&gt;, ...</code></td>
			            <td>Add/override configuration for job</td>
			           </tr>
			           <tr>
			          	<td><code>-input &lt;path&gt;</code></td>
			            <td>Input directory</td>
			           </tr>
			           <tr>
			          	<td><code>-output &lt;path&gt;</code></td>
			            <td>Output directory</td>
			           </tr>
			           <tr>
			          	<td><code>-jar &lt;jar file&gt;</code></td>
			            <td>Jar filename</td>
			           </tr>
			           <tr>
			          	<td><code>-inputformat &lt;class&gt;</code></td>
			            <td>InputFormat class</td>
			           </tr>
			           <tr>
			          	<td><code>-map &lt;class&gt;</code></td>
			            <td>Java Map class</td>
			           </tr>
			           <tr>
			          	<td><code>-partitioner &lt;class&gt;</code></td>
			            <td>Java Partitioner</td>
			           </tr>
			           <tr>
			          	<td><code>-reduce &lt;class&gt;</code></td>
			            <td>Java Reduce class</td>
			           </tr>
			           <tr>
			          	<td><code>-writer &lt;class&gt;</code></td>
			            <td>Java RecordWriter</td>
			           </tr>
			           <tr>
			          	<td><code>-program &lt;executable&gt;</code></td>
			            <td>Executable URI</td>
			           </tr>
			           <tr>
			          	<td><code>-reduces &lt;num&gt;</code></td>
			            <td>Number of reduces</td>
			           </tr>
					</table>
			</section>
      <section>
        <title> queue </title>
        <p>
          command to interact and view Job Queue information
        </p>
        <p>
          <code>Usage : hadoop queue [-list] | [-info &lt;job-queue-name&gt; [-showJobs]] | [-showacls]</code>
        </p>
        <table>
        <tr>
          <th> COMMAND_OPTION </th><th> Description </th>
        </tr>
        <tr>
          <td><anchor id="QueuesList"/><code>-list</code> </td>
          <td>Gets list of Job Queues configured in the system. Along with scheduling information
          associated with the job queues.
          </td>
        </tr>
        <tr>
          <td><anchor id="QueuesInfo"/><code>-info &lt;job-queue-name&gt; [-showJobs]</code></td>
          <td>
           Displays the job queue information and associated scheduling information of particular
           job queue. If -showJobs options is present a list of jobs submitted to the particular job
           queue is displayed. 
          </td>
        </tr>
        <tr>
          <td><code>-showacls</code></td>
          <td>Displays the queue name and associated queue operations allowed for the current user.
          The list consists of only those queues to which the user has access.
          </td>
          </tr>
        </table>
      </section>  	
			<section>
				<title> version </title>
				<p>
					Prints the version.
				</p> 
				<p>
					<code>Usage: hadoop version</code>
				</p>
			</section>
			<section>
				<title> CLASSNAME </title>
				<p>
					 Hadoop script can be used to invoke any class.
				</p>
				<p>
					 Runs the class named CLASSNAME.
				</p>

				<p>
					<code>Usage: hadoop CLASSNAME</code>
				</p>

			</section>
    </section>
		<section>
			<title> Administration Commands </title>
			<p>Commands useful for administrators of a Hadoop cluster.</p>
			<section>
				<title> balancer </title>
				<p>
					Runs a cluster balancing utility. An administrator can simply press Ctrl-C to stop the 
					rebalancing process. For more details see 
					<a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Rebalancer">Rebalancer</a>.
				</p>
				<p>
					<code>Usage: hadoop balancer [-threshold &lt;threshold&gt;]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-threshold &lt;threshold&gt;</code></td>
			            <td>Percentage of disk capacity. This overwrites the default threshold.</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> daemonlog </title>
				<p>
					 Get/Set the log level for each daemon.
				</p> 
				<p>
					<code>Usage: hadoop daemonlog  -getlevel &lt;host:port&gt; &lt;name&gt;</code><br/>
					<code>Usage: hadoop daemonlog  -setlevel &lt;host:port&gt; &lt;name&gt; &lt;level&gt;</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-getlevel &lt;host:port&gt; &lt;name&gt;</code></td>
			            <td>Prints the log level of the daemon running at &lt;host:port&gt;. 
			            This command internally connects to http://&lt;host:port&gt;/logLevel?log=&lt;name&gt;</td>
			           </tr>
			           <tr>
			          	<td><code>-setlevel &lt;host:port&gt; &lt;name&gt; &lt;level&gt;</code></td>
			            <td>Sets the log level of the daemon running at &lt;host:port&gt;. 
			            This command internally connects to http://&lt;host:port&gt;/logLevel?log=&lt;name&gt;</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> datanode</title>
				<p>
					Runs a HDFS datanode.
				</p> 
				<p>
					<code>Usage: hadoop datanode [-rollback]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-rollback</code></td>
			            <td>Rollsback the datanode to the previous version. This should be used after stopping the datanode 
			            and distributing the old Hadoop version.</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> dfsadmin </title>
				<p>
					Runs a HDFS dfsadmin client.
				</p> 
				<p>
					<code>Usage: hadoop dfsadmin  [</code><a href="commands_manual.html#Generic+Options">GENERIC_OPTIONS</a><code>] [-report] [-safemode enter | leave | get | wait] [-refreshNodes]
					 [-finalizeUpgrade] [-upgradeProgress status | details | force] [-metasave filename] 
					 [-setQuota &lt;quota&gt; &lt;dirname&gt;...&lt;dirname&gt;] [-clrQuota &lt;dirname&gt;...&lt;dirname&gt;] 
					 [-restoreFailedStorage true|false|check] 
					 [-help [cmd]]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-report</code></td>
			            <td>Reports basic filesystem information and statistics.</td>
			           </tr>
			           <tr>
			          	<td><code>-safemode enter | leave | get | wait</code></td>
			            <td>Safe mode maintenance command.
                Safe mode is a Namenode state in which it <br/>
                        1.  does not accept changes to the name space (read-only) <br/> 
                        2.  does not replicate or delete blocks. <br/>
                Safe mode is entered automatically at Namenode startup, and
                leaves safe mode automatically when the configured minimum
                percentage of blocks satisfies the minimum replication
                condition.  Safe mode can also be entered manually, but then
                it can only be turned off manually as well.</td>
			           </tr>
			           <tr>
			          	<td><code>-refreshNodes</code></td>
			            <td>Re-read the hosts and exclude files to update the set
                of Datanodes that are allowed to connect to the Namenode
                and those that should be decommissioned or recommissioned.</td>
			           </tr>
			           <tr>
			          	<td><code>-finalizeUpgrade</code></td>
			            <td>Finalize upgrade of HDFS.
                Datanodes delete their previous version working directories,
                followed by Namenode doing the same.
                This completes the upgrade process.</td>
			           </tr>
			           <tr>
			          	<td><code>-printTopology</code></td>
			            <td>Print a tree of the rack/datanode topology of the
                 cluster as seen by the NameNode.</td>
			           </tr>
			           <tr>
			          	<td><code>-upgradeProgress status | details | force</code></td>
			            <td>Request current distributed upgrade status,
                a detailed status or force the upgrade to proceed.</td>
			           </tr>
			           <tr>
			          	<td><code>-metasave filename</code></td>
			            <td>Save Namenode's primary data structures
                to &lt;filename&gt; in the directory specified by hadoop.log.dir property.
                &lt;filename&gt; will contain one line for each of the following <br/>
                        1. Datanodes heart beating with Namenode<br/>
                        2. Blocks waiting to be replicated<br/>
                        3. Blocks currrently being replicated<br/>
                        4. Blocks waiting to be deleted</td>
			           </tr>
			           <tr>
			          	<td><code>-setQuota &lt;quota&gt; &lt;dirname&gt;...&lt;dirname&gt;</code></td>
			            <td>Set the quota &lt;quota&gt; for each directory &lt;dirname&gt;.
                The directory quota is a long integer that puts a hard limit on the number of names in the directory tree.<br/>
                Best effort for the directory, with faults reported if<br/>
                1. N is not a positive integer, or<br/>
                2. user is not an administrator, or<br/>
                3. the directory does not exist or is a file, or<br/>
                4. the directory would immediately exceed the new quota.</td>
			           </tr>
			           <tr>
			          	<td><code>-clrQuota &lt;dirname&gt;...&lt;dirname&gt;</code></td>
			            <td>Clear the quota for each directory &lt;dirname&gt;.<br/>
                Best effort for the directory. with fault reported if<br/>
                1. the directory does not exist or is a file, or<br/>
                2. user is not an administrator.<br/>
                It does not fault if the directory has no quota.</td>
			           </tr>
			           <tr>
			          	<td><code>-restoreFailedStorage true | false | check</code></td>
			            <td>This option will turn on/off automatic attempt to restore failed storage replicas. 
			            If a failed storage becomes available again the system will attempt to restore 
			            edits and/or fsimage during checkpoint. 'check' option will return current setting.</td>
			           </tr>
			           <tr>
			          	<td><code>-help [cmd]</code></td>
			            <td> Displays help for the given command or all commands if none
                is specified.</td>
			           </tr>
			     </table>
			</section>
			<section>
        <title>mradmin</title>
        <p>Runs MR admin client</p>
        <p><code>Usage: hadoop mradmin  [</code>
        <a href="commands_manual.html#Generic+Options">GENERIC_OPTIONS</a>
        <code>] [-refreshServiceAcl] [-refreshQueues] [-refreshNodes] [-help [cmd]] </code></p>
        <table>
        <tr>
        <th> COMMAND_OPTION </th><th> Description </th>
        </tr>
        <tr>
        <td><code>-refreshServiceAcl</code></td>
        <td> Reload the service-level authorization policies. Jobtracker
         will reload the authorization policy file.</td>
        </tr>
        <tr>
        <td><anchor id="RefreshQueues"/><code>-refreshQueues</code></td>
        <td><p> Reload the queues' configuration at the JobTracker.
          Most of the configuration of the queues can be refreshed/reloaded
          without restarting the Map/Reduce sub-system. Administrators
          typically own the
          <a href="cluster_setup.html#mapred-queues.xml">
          <em>conf/mapred-queues.xml</em></a>
          file, can edit it while the JobTracker is still running, and can do
          a reload by running this command.</p>
          <p>It should be noted that while trying to refresh queues'
          configuration, one cannot change the hierarchy of queues itself.
          This means no operation that involves a change in either the
          hierarchy structure itself or the queues' names will be allowed.
          Only selected properties of queues can be changed during refresh.
          For example, new queues cannot be added dynamically, neither can an
          existing queue be deleted.</p>
          <p>If during a reload of queue configuration,
          a syntactic or semantic error in made during the editing of the
          configuration file, the refresh command fails with an exception that
          is printed on the standard output of this command, thus informing the
          requester with any helpful messages of what has gone wrong during
          the edit/reload. Importantly, the existing queue configuration is
          untouched and the system is left in a consistent state.
          </p>
          <p>As described in the
          <a href="cluster_setup.html#mapred-queues.xml"><em>
          conf/mapred-queues.xml</em></a> section, the
          <a href="cluster_setup.html#properties_tag"><em>
          &lt;properties&gt;</em></a> tag in the queue configuration file can
          also be used to specify per-queue properties needed by the scheduler.
           When the framework's queue configuration is reloaded using this
          command, this scheduler specific configuration will also be reloaded
          , provided the scheduler being configured supports this reload.
          Please see the documentation of the particular scheduler in use.</p>
          </td>
        </tr>
        <tr>
        <td><code>-refreshNodes</code></td>
        <td> Refresh the hosts information at the jobtracker.</td>
        </tr>
        <tr>
        <td><code>-help [cmd]</code></td>
        <td>Displays help for the given command or all commands if none
                is specified.</td>
        </tr>
        </table>
      </section>
			<section>
				<title> jobtracker </title>
				<p>
					Runs the MapReduce job Tracker node.
				</p> 
				<p>
					<code>Usage: hadoop jobtracker [-dumpConfiguration]</code>
					</p>
          <table>
          <tr>
          <th>COMMAND_OPTION</th><th> Description</th>
          </tr>
          <tr>
          <td><code>-dumpConfiguration</code></td>
          <td> Dumps the configuration used by the JobTracker alongwith queue
          configuration in JSON format into Standard output used by the 
          jobtracker and exits.</td>
          </tr>
          </table>
				
			</section>
			
			<section>
				<title> namenode </title>
				<p>
					Runs the namenode. For more information about upgrade, rollback and finalize see 
					<a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Upgrade+and+Rollback">Upgrade and Rollback</a>.
				</p>
				<p>
					<code>Usage: hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint] | [-checkpoint] | [-backup]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
                <tr>
                  <td><code>-regular</code></td>
                  <td>Start namenode in standard, active role rather than as backup or checkpoint node. This is the default role.</td>
                </tr>
                <tr>
                  <td><code>-checkpoint</code></td>
                  <td>Start namenode in checkpoint role, creating periodic checkpoints of the active namenode metadata.</td>
                </tr>
                <tr>
                  <td><code>-backup</code></td>
                  <td>Start namenode in backup role, maintaining an up-to-date in-memory copy of the namespace and creating periodic checkpoints.</td>
                </tr>
			           <tr>
			          	<td><code>-format</code></td>
			            <td>Formats the namenode. It starts the namenode, formats it and then shut it down.</td>
			           </tr>
			           <tr>
			          	<td><code>-upgrade</code></td>
			            <td>Namenode should be started with upgrade option after the distribution of new Hadoop version.</td>
			           </tr>
			           <tr>
			          	<td><code>-rollback</code></td>
			            <td>Rollsback the namenode to the previous version. This should be used after stopping the cluster 
			            and distributing the old Hadoop version.</td>
			           </tr>
			           <tr>
			          	<td><code>-finalize</code></td>
			            <td>Finalize will remove the previous state of the files system. Recent upgrade will become permanent. 
			            Rollback option will not be available anymore. After finalization it shuts the namenode down.</td>
			           </tr>
			           <tr>
			          	<td><code>-importCheckpoint</code></td>
			            <td>Loads image from a checkpoint directory and saves it into the current one. Checkpoint directory 
			            is read from property fs.checkpoint.dir
			            (see <a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Import+checkpoint">Import Checkpoint</a>).
			            </td>
			           </tr>
			            <tr>
			          	<td><code>-checkpoint</code></td>
			            <td>Enables checkpointing 
			            (see <a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Checkpoint+Node">Checkpoint Node</a>).</td>
			           </tr>
			            <tr>
			          	<td><code>-backup</code></td>
			            <td>Enables checkpointing and maintains an in-memory, up-to-date copy of the file system namespace 
			            (see <a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Backup+Node">Backup Node</a>).</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> secondarynamenode </title>
				<note>
					The Secondary NameNode has been deprecated. Instead, consider using the
					<a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Checkpoint+Node">Checkpoint Node</a> or 
					<a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Backup+Node">Backup Node</a>. 
				</note>
				<p>	
					Runs the HDFS secondary 
					namenode. See <a href="http://hadoop.apache.org/hdfs/docs/current/hdfs_user_guide.html#Secondary+NameNode">Secondary NameNode</a> 
					for more info.
				</p>
				<p>
					<code>Usage: hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]</code>
				</p>
				<table>
			          <tr><th> COMMAND_OPTION </th><th> Description </th></tr>
			
			           <tr>
			          	<td><code>-checkpoint [force]</code></td>
			            <td>Checkpoints the Secondary namenode if EditLog size >= fs.checkpoint.size. 
			            If -force is used, checkpoint irrespective of EditLog size.</td>
			           </tr>
			           <tr>
			          	<td><code>-geteditsize</code></td>
			            <td>Prints the EditLog size.</td>
			           </tr>
			     </table>
			</section>
			
			<section>
				<title> tasktracker </title>
				<p>
					Runs a MapReduce task Tracker node.
				</p> 
				<p>
					<code>Usage: hadoop tasktracker</code>
				</p>
			</section>
			
		</section>
		
		
		      

	</body>
</document>      
