<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8">
<meta name="Forrest-skin-name" content="pelt">
<title>
      Hadoop On Demand User Guide
    </title>
<link type="text/css" href="skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
<link type="text/css" href="skin/profile.css" rel="stylesheet">
<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="images/favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/core/">Core</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://hadoop.apache.org/core/"><img class="logoImage" alt="Hadoop" src="images/core-logo.gif" title="Scalable Computing Platform"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="hadoop.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
                    <input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li>
<a class="unselected" href="http://hadoop.apache.org/core/">Project</a>
</li>
<li>
<a class="unselected" href="http://wiki.apache.org/hadoop">Wiki</a>
</li>
<li class="current">
<a class="selected" href="index.html">Hadoop 0.18 Documentation</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs"></div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">

             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">Documentation</div>
<div id="menu_1.1" class="menuitemgroup">
<div class="menuitem">
<a href="index.html">Overview</a>
</div>
<div class="menuitem">
<a href="quickstart.html">Quickstart</a>
</div>
<div class="menuitem">
<a href="cluster_setup.html">Cluster Setup</a>
</div>
<div class="menuitem">
<a href="hdfs_design.html">HDFS Architecture</a>
</div>
<div class="menuitem">
<a href="hdfs_user_guide.html">HDFS User Guide</a>
</div>
<div class="menuitem">
<a href="hdfs_permissions_guide.html">HDFS Permissions Guide</a>
</div>
<div class="menuitem">
<a href="hdfs_quota_admin_guide.html">HDFS Quotas Administrator Guide</a>
</div>
<div class="menuitem">
<a href="commands_manual.html">Commands Manual</a>
</div>
<div class="menuitem">
<a href="hdfs_shell.html">FS Shell Guide</a>
</div>
<div class="menuitem">
<a href="distcp.html">DistCp Guide</a>
</div>
<div class="menuitem">
<a href="mapred_tutorial.html">Map-Reduce Tutorial</a>
</div>
<div class="menuitem">
<a href="native_libraries.html">Native Hadoop Libraries</a>
</div>
<div class="menuitem">
<a href="streaming.html">Streaming</a>
</div>
<div class="menuitem">
<a href="hadoop_archives.html">Hadoop Archives</a>
</div>
<div class="menuitem">
<a href="hod.html">Hadoop On Demand</a>
</div>
<div class="menuitem">
<a href="api/index.html">API Docs</a>
</div>
<div class="menuitem">
<a href="jdiff/changes.html">API Changes</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/hadoop/">Wiki</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/hadoop/FAQ">FAQ</a>
</div>
<div class="menuitem">
<a href="http://hadoop.apache.org/core/mailing_lists.html">Mailing Lists</a>
</div>
<div class="menuitem">
<a href="releasenotes.html">Release Notes</a>
</div>
<div class="menuitem">
<a href="changes.html">All Changes</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2"></div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="hod_user_guide.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<h1>
      Hadoop On Demand User Guide
    </h1>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Introduction-N1000C"> Introduction </a>
</li>
<li>
<a href="#Getting+Started+Using+HOD"> Getting Started Using HOD </a>
<ul class="minitoc">
<li>
<a href="#A+typical+HOD+session">A typical HOD session</a>
</li>
<li>
<a href="#Running+hadoop+scripts+using+HOD">Running hadoop scripts using HOD</a>
</li>
</ul>
</li>
<li>
<a href="#HOD+Features"> HOD Features </a>
<ul class="minitoc">
<li>
<a href="#Provisioning+and+Managing+Hadoop+Clusters"> Provisioning and Managing Hadoop Clusters </a>
</li>
<li>
<a href="#Using+a+tarball+to+distribute+Hadoop"> Using a tarball to distribute Hadoop </a>
</li>
<li>
<a href="#Using+an+external+HDFS"> Using an external HDFS </a>
</li>
<li>
<a href="#Options+for+Configuring+Hadoop"> Options for Configuring Hadoop </a>
</li>
<li>
<a href="#Viewing+Hadoop+Web-UIs"> Viewing Hadoop Web-UIs </a>
</li>
<li>
<a href="#Collecting+and+Viewing+Hadoop+Logs"> Collecting and Viewing Hadoop Logs </a>
</li>
<li>
<a href="#Auto-deallocation+of+Idle+Clusters"> Auto-deallocation of Idle Clusters </a>
</li>
<li>
<a href="#Specifying+Additional+Job+Attributes"> Specifying Additional Job Attributes </a>
</li>
<li>
<a href="#Capturing+HOD+exit+codes+in+Torque"> Capturing HOD exit codes in Torque </a>
</li>
<li>
<a href="#Command+Line"> Command Line</a>
</li>
<li>
<a href="#Options+Configuring+HOD"> Options Configuring HOD </a>
</li>
</ul>
</li>
<li>
<a href="#Troubleshooting-N10579"> Troubleshooting </a>
<ul class="minitoc">
<li>
<a href="#Hangs+During+Allocation">hod Hangs During Allocation </a>
</li>
<li>
<a href="#Hangs+During+Deallocation">hod Hangs During Deallocation </a>
</li>
<li>
<a href="#Fails+With+an+Error+Code+and+Error+Message">hod Fails With an Error Code and Error Message </a>
</li>
<li>
<a href="#Hadoop+DFSClient+Warns+with+a%0A++NotReplicatedYetException">Hadoop DFSClient Warns with a
  NotReplicatedYetException</a>
</li>
<li>
<a href="#Hadoop+Jobs+Not+Running+on+a+Successfully+Allocated+Cluster"> Hadoop Jobs Not Running on a Successfully Allocated Cluster </a>
</li>
<li>
<a href="#My+Hadoop+Job+Got+Killed"> My Hadoop Job Got Killed </a>
</li>
<li>
<a href="#Hadoop+Job+Fails+with+Message%3A+%27Job+tracker+still+initializing%27"> Hadoop Job Fails with Message: 'Job tracker still initializing' </a>
</li>
<li>
<a href="#The+Exit+Codes+For+HOD+Are+Not+Getting+Into+Torque"> The Exit Codes For HOD Are Not Getting Into Torque </a>
</li>
<li>
<a href="#The+Hadoop+Logs+are+Not+Uploaded+to+HDFS"> The Hadoop Logs are Not Uploaded to HDFS </a>
</li>
<li>
<a href="#Locating+Ringmaster+Logs"> Locating Ringmaster Logs </a>
</li>
<li>
<a href="#Locating+Hodring+Logs"> Locating Hodring Logs </a>
</li>
</ul>
</li>
</ul>
</div>
  
<a name="N1000C"></a><a name="Introduction-N1000C"></a>
<h2 class="h3"> Introduction </h2>
<div class="section">
<a name="Introduction" id="Introduction"></a>
<p>Hadoop On Demand (HOD) is a system for provisioning virtual Hadoop clusters over a large physical cluster. It uses the Torque resource manager to do node allocation. On the allocated nodes, it can start Hadoop Map/Reduce and HDFS daemons. It automatically generates the appropriate configuration files (hadoop-site.xml) for the Hadoop daemons and client. HOD also has the capability to distribute Hadoop to the nodes in the virtual cluster that it allocates. In short, HOD makes it easy for administrators and users to quickly setup and use Hadoop. It is also a very useful tool for Hadoop developers and testers who need to share a physical cluster for testing their own Hadoop versions.</p>
<p>HOD supports Hadoop from version 0.15 onwards.</p>
<p>The rest of this document comprises of a quick-start guide that helps you get quickly started with using HOD, a more detailed guide of all HOD features, and a trouble-shooting section.</p>
</div>
  
<a name="N1001E"></a><a name="Getting+Started+Using+HOD"></a>
<h2 class="h3"> Getting Started Using HOD </h2>
<div class="section">
<a name="Getting_Started_Using_HOD_0_4" id="Getting_Started_Using_HOD_0_4"></a>
<p>In this section, we shall see a step-by-step introduction on how to use HOD for the most basic operations. Before following these steps, it is assumed that HOD and its dependent hardware and software components are setup and configured correctly. This is a step that is generally performed by system administrators of the cluster.</p>
<p>The HOD user interface is a command line utility called <span class="codefrag">hod</span>. It is driven by a configuration file, that is typically setup for users by system administrators. Users can override this configuration when using the <span class="codefrag">hod</span>, which is described later in this documentation. The configuration file can be specified in two ways when using <span class="codefrag">hod</span>, as described below: </p>
<ul>
    
<li> Specify it on command line, using the -c option. Such as <span class="codefrag">hod &lt;operation&gt; &lt;required-args&gt; -c path-to-the-configuration-file [other-options]</span>
</li>
    
<li> Set up an environment variable <em>HOD_CONF_DIR</em> where <span class="codefrag">hod</span> will be run. This should be pointed to a directory on the local file system, containing a file called <em>hodrc</em>. Note that this is analogous to the <em>HADOOP_CONF_DIR</em> and <em>hadoop-site.xml</em> file for Hadoop. If no configuration file is specified on the command line, <span class="codefrag">hod</span> shall look for the <em>HOD_CONF_DIR</em> environment variable and a <em>hodrc</em> file under that.</li>
    
</ul>
<p>In examples listed below, we shall not explicitly point to the configuration option, assuming it is correctly specified.</p>
<a name="N1005B"></a><a name="A+typical+HOD+session"></a>
<h3 class="h4">A typical HOD session</h3>
<a name="HOD_Session" id="HOD_Session"></a>
<p>A typical session of HOD will involve at least three steps: allocate, run hadoop jobs, deallocate. In order to do this, perform the following steps.</p>
<p>
<strong> Create a Cluster Directory </strong>
</p>
<a name="Create_a_Cluster_Directory" id="Create_a_Cluster_Directory"></a>
<p>The <em>cluster directory</em> is a directory on the local file system where <span class="codefrag">hod</span> will generate the Hadoop configuration, <em>hadoop-site.xml</em>, corresponding to the cluster it allocates. Pass this directory to the <span class="codefrag">hod</span> operations as stated below. If the cluster directory passed doesn't already exist, HOD will automatically try to create it and use it. Once a cluster is allocated, a user can utilize it to run Hadoop jobs by specifying the cluster directory as the Hadoop --config option. </p>
<p>
<strong> Operation <em>allocate</em></strong>
</p>
<a name="Operation_allocate" id="Operation_allocate"></a>
<p>The <em>allocate</em> operation is used to allocate a set of nodes and install and provision Hadoop on them. It has the following syntax. Note that it requires a cluster_dir ( -d, --hod.clusterdir) and the number of nodes (-n, --hod.nodecount) needed to be allocated:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes [OPTIONS]</span></td>
        
</tr>
      
    
</table>
<p>If the command completes successfully, then <span class="codefrag">cluster_dir/hadoop-site.xml</span> will be generated and will contain information about the allocated cluster. It will also print out the information about the Hadoop web UIs.</p>
<p>An example run of this command produces the following output. Note in this example that <span class="codefrag">~/hod-clusters/test</span> is the cluster directory, and we are allocating 5 nodes:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
    
<tr>
      
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d ~/hod-clusters/test -n 5</span>
<br>
      
<span class="codefrag">INFO - HDFS UI on http://foo1.bar.com:53422</span>
<br>
      
<span class="codefrag">INFO - Mapred UI on http://foo2.bar.com:55380</span>
<br>
</td>
      
</tr>
   
</table>
<p>
<strong> Running Hadoop jobs using the allocated cluster </strong>
</p>
<a name="Running_Hadoop_jobs_using_the_al" id="Running_Hadoop_jobs_using_the_al"></a>
<p>Now, one can run Hadoop jobs using the allocated cluster in the usual manner. This assumes variables like <em>JAVA_HOME</em> and path to the Hadoop installation are set up correctly.:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hadoop --config cluster_dir hadoop_command hadoop_command_args</span></td>
        
</tr>
      
    
</table>
<p>or</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ export HADOOP_CONF_DIR=cluster_dir</span> 
<br>
              
<span class="codefrag">$ hadoop hadoop_command hadoop_command_args</span></td>
        
</tr>
      
    
</table>
<p>Continuing our example, the following command will run a wordcount example on the allocated cluster:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">$ hadoop --config ~/hod-clusters/test jar /path/to/hadoop/hadoop-examples.jar wordcount /path/to/input /path/to/output</span></td>
</tr>
</table>
<p>or</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
    
<td colspan="1" rowspan="1"><span class="codefrag">$ export HADOOP_CONF_DIR=~/hod-clusters/test</span>
<br>
    
<span class="codefrag">$ hadoop jar /path/to/hadoop/hadoop-examples.jar wordcount /path/to/input /path/to/output</span></td>
    
</tr>
  
</table>
<p>
<strong> Operation <em>deallocate</em></strong>
</p>
<a name="Operation_deallocate" id="Operation_deallocate"></a>
<p>The <em>deallocate</em> operation is used to release an allocated cluster. When finished with a cluster, deallocate must be run so that the nodes become free for others to use. The <em>deallocate</em> operation has the following syntax. Note that it requires the cluster_dir (-d, --hod.clusterdir) argument:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod deallocate -d cluster_dir</span></td>
        
</tr>
      
    
</table>
<p>Continuing our example, the following command will deallocate the cluster:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">$ hod deallocate -d ~/hod-clusters/test</span></td>
</tr>
</table>
<p>As can be seen, HOD allows the users to allocate a cluster, and use it flexibly for running Hadoop jobs. For example, users can run multiple jobs in parallel on the same cluster, by running hadoop from multiple shells pointing to the same configuration.</p>
<a name="N1012A"></a><a name="Running+hadoop+scripts+using+HOD"></a>
<h3 class="h4">Running hadoop scripts using HOD</h3>
<a name="HOD_Script_Mode" id="HOD_Script_Mode"></a>
<p>The HOD <em>script operation</em> combines the operations of allocating, using and deallocating a cluster into a single operation. This is very useful for users who want to run a script of hadoop jobs and let HOD handle the cleanup automatically once the script completes. In order to run hadoop scripts using <span class="codefrag">hod</span>, do the following:</p>
<p>
<strong> Create a script file </strong>
</p>
<a name="Create_a_script_file" id="Create_a_script_file"></a>
<p>This will be a regular shell script that will typically contain hadoop commands, such as:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">$ hadoop jar jar_file options</span></td>
  
</tr>
</table>
<p>However, the user can add any valid commands as part of the script. HOD will execute this script setting <em>HADOOP_CONF_DIR</em> automatically to point to the allocated cluster. So users do not need to worry about this. The users however need to specify a cluster directory just like when using the allocate operation.</p>
<p>
<strong> Running the script </strong>
</p>
<a name="Running_the_script" id="Running_the_script"></a>
<p>The syntax for the <em>script operation</em> as is as follows. Note that it requires a cluster directory ( -d, --hod.clusterdir), number of nodes (-n, --hod.nodecount) and a script file (-s, --hod.script):</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod script -d cluster_directory -n number_of_nodes -s script_file</span></td>
        
</tr>
      
    
</table>
<p>Note that HOD will deallocate the cluster as soon as the script completes, and this means that the script must not complete until the hadoop jobs themselves are completed. Users must take care of this while writing the script. </p>
</div>
  
<a name="N1016F"></a><a name="HOD+Features"></a>
<h2 class="h3"> HOD Features </h2>
<div class="section">
<a name="HOD_0_4_Features" id="HOD_0_4_Features"></a><a name="N10177"></a><a name="Provisioning+and+Managing+Hadoop+Clusters"></a>
<h3 class="h4"> Provisioning and Managing Hadoop Clusters </h3>
<a name="Provisioning_and_Managing_Hadoop" id="Provisioning_and_Managing_Hadoop"></a>
<p>The primary feature of HOD is to provision Hadoop Map/Reduce and HDFS clusters. This is described above in the Getting Started section. Also, as long as nodes are available, and organizational policies allow, a user can use HOD to allocate multiple Map/Reduce clusters simultaneously. The user would need to specify different paths for the <span class="codefrag">cluster_dir</span> parameter mentioned above for each cluster he/she allocates. HOD provides the <em>list</em> and the <em>info</em> operations to enable managing multiple clusters.</p>
<p>
<strong> Operation <em>list</em></strong>
</p>
<a name="Operation_list" id="Operation_list"></a>
<p>The list operation lists all the clusters allocated so far by a user. The cluster directory where the hadoop-site.xml is stored for the cluster, and its status vis-a-vis connectivity with the JobTracker and/or HDFS is shown. The list operation has the following syntax:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod list</span></td>
        
</tr>
      
    
</table>
<p>
<strong> Operation <em>info</em></strong>
</p>
<a name="Operation_info" id="Operation_info"></a>
<p>The info operation shows information about a given cluster. The information shown includes the Torque job id, and locations of the important daemons like the HOD Ringmaster process, and the Hadoop JobTracker and NameNode daemons. The info operation has the following syntax. Note that it requires a cluster directory (-d, --hod.clusterdir):</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
      
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod info -d cluster_dir</span></td>
        
</tr>
      
    
</table>
<p>The <span class="codefrag">cluster_dir</span> should be a valid cluster directory specified in an earlier <em>allocate</em> operation.</p>
<a name="N101C2"></a><a name="Using+a+tarball+to+distribute+Hadoop"></a>
<h3 class="h4"> Using a tarball to distribute Hadoop </h3>
<a name="Using_a_tarball_to_distribute_Ha" id="Using_a_tarball_to_distribute_Ha"></a>
<p>When provisioning Hadoop, HOD can use either a pre-installed Hadoop on the cluster nodes or distribute and install a Hadoop tarball as part of the provisioning operation. If the tarball option is being used, there is no need to have a pre-installed Hadoop on the cluster nodes, nor a need to use a pre-installed one. This is especially useful in a development / QE environment where individual developers may have different versions of Hadoop to test on a shared cluster. </p>
<p>In order to use a pre-installed Hadoop, you must specify, in the hodrc, the <span class="codefrag">pkgs</span> option in the <span class="codefrag">gridservice-hdfs</span> and <span class="codefrag">gridservice-mapred</span> sections. This must point to the path where Hadoop is installed on all nodes of the cluster.</p>
<p>The syntax for specifying tarball is as follows:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -t hadoop_tarball_location</span></td>
        
</tr>
    
</table>
<p>For example, the following command allocates Hadoop provided by the tarball <span class="codefrag">~/share/hadoop.tar.gz</span>:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d ~/hadoop-cluster -n 10 -t ~/share/hadoop.tar.gz</span></td>
</tr>
</table>
<p>Similarly, when using hod script, the syntax is as follows:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod script -d cluster_directory -s script_file -n number_of_nodes -t hadoop_tarball_location</span></td>
        
</tr>
    
</table>
<p>The hadoop_tarball specified in the syntax above should point to a path on a shared file system that is accessible from all the compute nodes. Currently, HOD only supports NFS mounted file systems.</p>
<p>
<em>Note:</em>
</p>
<ul>
    
<li> For better distribution performance it is recommended that the Hadoop tarball contain only the libraries and binaries, and not the source or documentation.</li>
    
<li> When you want to run jobs against a cluster allocated using the tarball, you must use a compatible version of hadoop to submit your jobs. The best would be to untar and use the version that is present in the tarball itself.</li>
    
<li> You need to make sure that there are no Hadoop configuration files, hadoop-env.sh and hadoop-site.xml, present in the conf directory of the tarred distribution. The presence of these files with incorrect values could make the cluster allocation to fail.</li>
  
</ul>
<a name="N10218"></a><a name="Using+an+external+HDFS"></a>
<h3 class="h4"> Using an external HDFS </h3>
<a name="Using_an_external_HDFS" id="Using_an_external_HDFS"></a>
<p>In typical Hadoop clusters provisioned by HOD, HDFS is already set up statically (without using HOD). This allows data to persist in HDFS after the HOD provisioned clusters is deallocated. To use a statically configured HDFS, your hodrc must point to an external HDFS. Specifically, set the following options to the correct values in the section <span class="codefrag">gridservice-hdfs</span> of the hodrc:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1">external = true</td>
</tr>
<tr>
<td colspan="1" rowspan="1">host = Hostname of the HDFS NameNode</td>
</tr>
<tr>
<td colspan="1" rowspan="1">fs_port = Port number of the HDFS NameNode</td>
</tr>
<tr>
<td colspan="1" rowspan="1">info_port = Port number of the HDFS NameNode web UI</td>
</tr>
</table>
<p>
<em>Note:</em> You can also enable this option from command line. That is, to use a static HDFS, you will need to say: <br>
    
</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes --gridservice-hdfs.external</span></td>
        
</tr>
    
</table>
<p>HOD can be used to provision an HDFS cluster as well as a Map/Reduce cluster, if required. To do so, set the following option in the section <span class="codefrag">gridservice-hdfs</span> of the hodrc:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1">external = false</td>
</tr>
</table>
<a name="N1025C"></a><a name="Options+for+Configuring+Hadoop"></a>
<h3 class="h4"> Options for Configuring Hadoop </h3>
<a name="Options_for_Configuring_Hadoop" id="Options_for_Configuring_Hadoop"></a>
<p>HOD provides a very convenient mechanism to configure both the Hadoop daemons that it provisions and also the hadoop-site.xml that it generates on the client side. This is done by specifying Hadoop configuration parameters in either the HOD configuration file, or from the command line when allocating clusters.</p>
<p>
<strong> Configuring Hadoop Daemons </strong>
</p>
<a name="Configuring_Hadoop_Daemons" id="Configuring_Hadoop_Daemons"></a>
<p>For configuring the Hadoop daemons, you can do the following:</p>
<p>For Map/Reduce, specify the options as a comma separated list of key-value pairs to the <span class="codefrag">server-params</span> option in the <span class="codefrag">gridservice-mapred</span> section. Likewise for a dynamically provisioned HDFS cluster, specify the options in the <span class="codefrag">server-params</span> option in the <span class="codefrag">gridservice-hdfs</span> section. If these parameters should be marked as <em>final</em>, then include these in the <span class="codefrag">final-server-params</span> option of the appropriate section.</p>
<p>For example:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">server-params = mapred.reduce.parallel.copies=20,io.sort.factor=100,io.sort.mb=128,io.file.buffer.size=131072</span></td>
</tr>
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">final-server-params = mapred.child.java.opts=-Xmx512m,dfs.block.size=134217728,fs.inmemory.size.mb=128</span></td>
  
</tr>
</table>
<p>In order to provide the options from command line, you can use the following syntax:</p>
<p>For configuring the Map/Reduce daemons use:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -Mmapred.reduce.parallel.copies=20 -Mio.sort.factor=100</span></td>
        
</tr>
    
</table>
<p>In the example above, the <em>mapred.reduce.parallel.copies</em> parameter and the <em>io.sort.factor</em> parameter will be appended to the other <span class="codefrag">server-params</span> or if they already exist in <span class="codefrag">server-params</span>, will override them. In order to specify these are <em>final</em> parameters, you can use:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -Fmapred.reduce.parallel.copies=20 -Fio.sort.factor=100</span></td>
        
</tr>
    
</table>
<p>However, note that final parameters cannot be overwritten from command line. They can only be appended if not already specified.</p>
<p>Similar options exist for configuring dynamically provisioned HDFS daemons. For doing so, replace -M with -H and -F with -S.</p>
<p>
<strong> Configuring Hadoop Job Submission (Client) Programs </strong>
</p>
<a name="Configuring_Hadoop_Job_Submissio" id="Configuring_Hadoop_Job_Submissio"></a>
<p>As mentioned above, if the allocation operation completes successfully then <span class="codefrag">cluster_dir/hadoop-site.xml</span> will be generated and will contain information about the allocated cluster's JobTracker and NameNode. This configuration is used when submitting jobs to the cluster. HOD provides an option to include additional Hadoop configuration parameters into this file. The syntax for doing so is as follows:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -Cmapred.userlog.limit.kb=200 -Cmapred.child.java.opts=-Xmx512m</span></td>
        
</tr>
    
</table>
<p>In this example, the <em>mapred.userlog.limit.kb</em> and <em>mapred.child.java.opts</em> options will be included into the hadoop-site.xml that is generated by HOD.</p>
<a name="N102EE"></a><a name="Viewing+Hadoop+Web-UIs"></a>
<h3 class="h4"> Viewing Hadoop Web-UIs </h3>
<a name="Viewing_Hadoop_Web_UIs" id="Viewing_Hadoop_Web_UIs"></a>
<p>The HOD allocation operation prints the JobTracker and NameNode web UI URLs. For example:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d ~/hadoop-cluster -n 10 -c ~/hod-conf-dir/hodrc</span>
<br>
    
<span class="codefrag">INFO - HDFS UI on http://host242.foo.com:55391</span>
<br>
    
<span class="codefrag">INFO - Mapred UI on http://host521.foo.com:54874</span>
    </td>
</tr>
</table>
<p>The same information is also available via the <em>info</em> operation described above.</p>
<a name="N10310"></a><a name="Collecting+and+Viewing+Hadoop+Logs"></a>
<h3 class="h4"> Collecting and Viewing Hadoop Logs </h3>
<a name="Collecting_and_Viewing_Hadoop_Lo" id="Collecting_and_Viewing_Hadoop_Lo"></a>
<p>To get the Hadoop logs of the daemons running on one of the allocated nodes: </p>
<ul>
    
<li> Log into the node of interest. If you want to look at the logs of the JobTracker or NameNode, then you can find the node running these by using the <em>list</em> and <em>info</em> operations mentioned above.</li>
    
<li> Get the process information of the daemon of interest (for example, <span class="codefrag">ps ux | grep TaskTracker</span>)</li>
    
<li> In the process information, search for the value of the variable <span class="codefrag">-Dhadoop.log.dir</span>. Typically this will be a decendent directory of the <span class="codefrag">hodring.temp-dir</span> value from the hod configuration file.</li>
    
<li> Change to the <span class="codefrag">hadoop.log.dir</span> directory to view daemon and user logs.</li>
  
</ul>
<p>HOD also provides a mechanism to collect logs when a cluster is being deallocated and persist them into a file system, or an externally configured HDFS. By doing so, these logs can be viewed after the jobs are completed and the nodes are released. In order to do so, configure the log-destination-uri to a URI as follows:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">log-destination-uri = hdfs://host123:45678/user/hod/logs</span> or</td>
</tr>
    
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">log-destination-uri = file://path/to/store/log/files</span></td>
</tr>
    
</table>
<p>Under the root directory specified above in the path, HOD will create a path user_name/torque_jobid and store gzipped log files for each node that was part of the job.</p>
<p>Note that to store the files to HDFS, you may need to configure the <span class="codefrag">hodring.pkgs</span> option with the Hadoop version that matches the HDFS mentioned. If not, HOD will try to use the Hadoop version that it is using to provision the Hadoop cluster itself.</p>
<a name="N10359"></a><a name="Auto-deallocation+of+Idle+Clusters"></a>
<h3 class="h4"> Auto-deallocation of Idle Clusters </h3>
<a name="Auto_deallocation_of_Idle_Cluste" id="Auto_deallocation_of_Idle_Cluste"></a>
<p>HOD automatically deallocates clusters that are not running Hadoop jobs for a given period of time. Each HOD allocation includes a monitoring facility that constantly checks for running Hadoop jobs. If it detects no running Hadoop jobs for a given period, it will automatically deallocate its own cluster and thus free up nodes which are not being used effectively.</p>
<p>
<em>Note:</em> While the cluster is deallocated, the <em>cluster directory</em> is not cleaned up automatically. The user must deallocate this cluster through the regular <em>deallocate</em> operation to clean this up.</p>
<a name="N1036F"></a><a name="Specifying+Additional+Job+Attributes"></a>
<h3 class="h4"> Specifying Additional Job Attributes </h3>
<a name="Specifying_Additional_Job_Attrib" id="Specifying_Additional_Job_Attrib"></a>
<p>HOD allows the user to specify a wallclock time and a name (or title) for a Torque job. </p>
<p>The wallclock time is the estimated amount of time for which the Torque job will be valid. After this time has expired, Torque will automatically delete the job and free up the nodes. Specifying the wallclock time can also help the job scheduler to better schedule jobs, and help improve utilization of cluster resources.</p>
<p>To specify the wallclock time, use the following syntax:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -l time_in_seconds</span></td>
        
</tr>
    
</table>
<p>The name or title of a Torque job helps in user friendly identification of the job. The string specified here will show up in all information where Torque job attributes are displayed, including the <span class="codefrag">qstat</span> command.</p>
<p>To specify the name or title, use the following syntax:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr>
          
<td colspan="1" rowspan="1"><span class="codefrag">$ hod allocate -d cluster_dir -n number_of_nodes -N name_of_job</span></td>
        
</tr>
    
</table>
<p>
<em>Note:</em> Due to restriction in the underlying Torque resource manager, names which do not start with an alphabet character or contain a 'space' will cause the job to fail. The failure message points to the problem being in the specified job name.</p>
<a name="N103A6"></a><a name="Capturing+HOD+exit+codes+in+Torque"></a>
<h3 class="h4"> Capturing HOD exit codes in Torque </h3>
<a name="Capturing_HOD_exit_codes_in_Torq" id="Capturing_HOD_exit_codes_in_Torq"></a>
<p>HOD exit codes are captured in the Torque exit_status field. This will help users and system administrators to distinguish successful runs from unsuccessful runs of HOD. The exit codes are 0 if allocation succeeded and all hadoop jobs ran on the allocated cluster correctly. They are non-zero if allocation failed or some of the hadoop jobs failed on the allocated cluster. The exit codes that are possible are mentioned in the table below. <em>Note: Hadoop job status is captured only if the version of Hadoop used is 16 or above.</em>
</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
    
      
<tr>
        
<td colspan="1" rowspan="1"> Exit Code </td>
        <td colspan="1" rowspan="1"> Meaning </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 6 </td>
        <td colspan="1" rowspan="1"> Ringmaster failure </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 7 </td>
        <td colspan="1" rowspan="1"> HDFS failure </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 8 </td>
        <td colspan="1" rowspan="1"> Job tracker failure </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 10 </td>
        <td colspan="1" rowspan="1"> Cluster dead </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 12 </td>
        <td colspan="1" rowspan="1"> Cluster already allocated </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 13 </td>
        <td colspan="1" rowspan="1"> HDFS dead </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 14 </td>
        <td colspan="1" rowspan="1"> Mapred dead </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 16 </td>
        <td colspan="1" rowspan="1"> All Map/Reduce jobs that ran on the cluster failed. Refer to hadoop logs for more details. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 17 </td>
        <td colspan="1" rowspan="1"> Some of the Map/Reduce jobs that ran on the cluster failed. Refer to hadoop logs for more details. </td>
      
</tr>
    
  
</table>
<a name="N10438"></a><a name="Command+Line"></a>
<h3 class="h4"> Command Line</h3>
<a name="Command_Line" id="Command_Line"></a>
<p>HOD command line has the following general syntax:<br>
      
<em>hod &lt;operation&gt; [ARGS] [OPTIONS]<br>
</em>
      Allowed operations are 'allocate', 'deallocate', 'info', 'list', 'script' and 'help'. For help on a particular operation one can do : <span class="codefrag">hod help &lt;operation&gt;</span>. To have a look at possible options one can do a <span class="codefrag">hod help options.</span>
</p>
<p>
<em>allocate</em>
<br>
      
<em>Usage : hod allocate -d cluster_dir -n number_of_nodes [OPTIONS]</em>
<br>
        Allocates a cluster on the given number of cluster nodes, and store the allocation information in cluster_dir for use with subsequent <span class="codefrag">hadoop</span> commands. Note that the <span class="codefrag">cluster_dir</span> must exist before running the command.</p>
<p>
<em>list</em>
<br>
      
<em>Usage : hod list [OPTIONS]</em>
<br>
       Lists the clusters allocated by this user. Information provided includes the Torque job id corresponding to the cluster, the cluster directory where the allocation information is stored, and whether the Map/Reduce daemon is still active or not.</p>
<p>
<em>info</em>
<br>
      
<em>Usage : hod info -d cluster_dir [OPTIONS]</em>
<br>
        Lists information about the cluster whose allocation information is stored in the specified cluster directory.</p>
<p>
<em>deallocate</em>
<br>
      
<em>Usage : hod deallocate -d cluster_dir [OPTIONS]</em>
<br>
        Deallocates the cluster whose allocation information is stored in the specified cluster directory.</p>
<p>
<em>script</em>
<br>
      
<em>Usage : hod script -s script_file -d cluster_directory -n number_of_nodes [OPTIONS]</em>
<br>
        Runs a hadoop script using HOD<em>script</em> operation. Provisions Hadoop on a given number of nodes, executes the given script from the submitting node, and deallocates the cluster when the script completes.</p>
<p>
<em>help</em>
<br>
      
<em>Usage : hod help [operation | 'options']</em>
<br>
       When no argument is specified, <span class="codefrag">hod help</span> gives the usage and basic options, and is equivalent to <span class="codefrag">hod --help</span> (See below). When 'options' is given as argument, hod displays only the basic options that hod takes. When an operation is specified, it displays the usage and description corresponding to that particular operation. For e.g, to know about allocate operation, one can do a <span class="codefrag">hod help allocate</span>
</p>
<p>Besides the operations, HOD can take the following command line options.</p>
<p>
<em>--help</em>
<br>
        Prints out the help message to see the usage and basic options.</p>
<p>
<em>--verbose-help</em>
<br>
        All configuration options provided in the hodrc file can be passed on the command line, using the syntax <span class="codefrag">--section_name.option_name[=value]</span>. When provided this way, the value provided on command line overrides the option provided in hodrc. The verbose-help command lists all the available options in the hodrc file. This is also a nice way to see the meaning of the configuration options.</p>
<p>See the <a href="#Options_Configuring_HOD">next section</a> for a description of most important hod configuration options. For basic options, one can do a <span class="codefrag">hod help options</span> and for all options possible in hod configuration, one can see <span class="codefrag">hod --verbose-help</span>. See <a href="hod_config_guide.html">config guide</a> for a description of all options.</p>
<a name="N104BF"></a><a name="Options+Configuring+HOD"></a>
<h3 class="h4"> Options Configuring HOD </h3>
<a name="Options_Configuring_HOD" id="Options_Configuring_HOD"></a>
<p>As described above, HOD is configured using a configuration file that is usually set up by system administrators. This is a INI style configuration file that is divided into sections, and options inside each section. Each section relates to one of the HOD processes: client, ringmaster, hodring, mapreduce or hdfs. The options inside a section comprise of an option name and value. </p>
<p>Users can override the configuration defined in the default configuration in two ways: </p>
<ul>
    
<li> Users can supply their own configuration file to HOD in each of the commands, using the <span class="codefrag">-c</span> option</li>
    
<li> Users can supply specific configuration options to HOD/ Options provided on command line <em>override</em> the values provided in the configuration file being used.</li>
  
</ul>
<p>This section describes some of the most commonly used configuration options. These commonly used options are provided with a <em>short</em> option for convenience of specification. All other options can be specified using a <em>long</em> option that is also described below.</p>
<p>
<em>-c config_file</em>
<br>
    Provides the configuration file to use. Can be used with all other options of HOD. Alternatively, the <span class="codefrag">HOD_CONF_DIR</span> environment variable can be defined to specify a directory that contains a file named <span class="codefrag">hodrc</span>, alleviating the need to specify the configuration file in each HOD command.</p>
<p>
<em>-d cluster_dir</em>
<br>
        This is required for most of the hod operations. As described <a href="#Create_a_Cluster_Directory">here</a>, the <em>cluster directory</em> is a directory on the local file system where <span class="codefrag">hod</span> will generate the Hadoop configuration, <em>hadoop-site.xml</em>, corresponding to the cluster it allocates. Pass it to the <span class="codefrag">hod</span> operations as an argument to -d or --hod.clusterdir. If it doesn't already exist, HOD will automatically try to create it and use it. Once a cluster is allocated, a user can utilize it to run Hadoop jobs by specifying the clusterdirectory as the Hadoop --config option.</p>
<p>
<em>-n number_of_nodes</em>
<br>
  This is required for the hod 'allocation' operation and for script operation. This denotes the number of nodes to be allocated.</p>
<p>
<em>-s script-file</em>
<br>
   Required when using script operation, specifies the script file to execute.</p>
<p>
<em>-b 1|2|3|4</em>
<br>
    Enables the given debug level. Can be used with all other options of HOD. 4 is most verbose.</p>
<p>
<em>-t hadoop_tarball</em>
<br>
    Provisions Hadoop from the given tar.gz file. This option is only applicable to the <em>allocate</em> operation. For better distribution performance it is strongly recommended that the Hadoop tarball is created <em>after</em> removing the source or documentation.</p>
<p>
<em>-N job-name</em>
<br>
    The Name to give to the resource manager job that HOD uses underneath. For e.g. in the case of Torque, this translates to the <span class="codefrag">qsub -N</span> option, and can be seen as the job name using the <span class="codefrag">qstat</span> command.</p>
<p>
<em>-l wall-clock-time</em>
<br>
    The amount of time for which the user expects to have work on the allocated cluster. This is passed to the resource manager underneath HOD, and can be used in more efficient scheduling and utilization of the cluster. Note that in the case of Torque, the cluster is automatically deallocated after this time expires.</p>
<p>
<em>-j java-home</em>
<br>
    Path to be set to the JAVA_HOME environment variable. This is used in the <em>script</em> operation. HOD sets the JAVA_HOME environment variable tot his value and launches the user script in that.</p>
<p>
<em>-A account-string</em>
<br>
    Accounting information to pass to underlying resource manager.</p>
<p>
<em>-Q queue-name</em>
<br>
    Name of the queue in the underlying resource manager to which the job must be submitted.</p>
<p>
<em>-Mkey1=value1 -Mkey2=value2</em>
<br>
    Provides configuration parameters for the provisioned Map/Reduce daemons (JobTracker and TaskTrackers). A hadoop-site.xml is generated with these values on the cluster nodes. <br>
    
<em>Note:</em> Values which have the following characters: space, comma, equal-to, semi-colon need to be escaped with a '\' character, and need to be enclosed within quotes. You can escape a '\' with a '\' too. </p>
<p>
<em>-Hkey1=value1 -Hkey2=value2</em>
<br>
    Provides configuration parameters for the provisioned HDFS daemons (NameNode and DataNodes). A hadoop-site.xml is generated with these values on the cluster nodes <br>
    
<em>Note:</em> Values which have the following characters: space, comma, equal-to, semi-colon need to be escaped with a '\' character, and need to be enclosed within quotes. You can escape a '\' with a '\' too. </p>
<p>
<em>-Ckey1=value1 -Ckey2=value2</em>
<br>
    Provides configuration parameters for the client from where jobs can be submitted. A hadoop-site.xml is generated with these values on the submit node. <br>
    
<em>Note:</em> Values which have the following characters: space, comma, equal-to, semi-colon need to be escaped with a '\' character, and need to be enclosed within quotes. You can escape a '\' with a '\' too. </p>
<p>
<em>--section-name.option-name=value</em>
<br>
    This is the method to provide options using the <em>long</em> format. For e.g. you could say <em>--hod.script-wait-time=20</em>
</p>
</div>
	
<a name="N10579"></a><a name="Troubleshooting-N10579"></a>
<h2 class="h3"> Troubleshooting </h2>
<div class="section">
<a name="Troubleshooting" id="Troubleshooting"></a>
<p>The following section identifies some of the most likely error conditions users can run into when using HOD and ways to trouble-shoot them</p>
<a name="N10584"></a><a name="Hangs+During+Allocation"></a>
<h3 class="h4">hod Hangs During Allocation </h3>
<a name="_hod_Hangs_During_Allocation" id="_hod_Hangs_During_Allocation"></a><a name="hod_Hangs_During_Allocation" id="hod_Hangs_During_Allocation"></a>
<p>
<em>Possible Cause:</em> One of the HOD or Hadoop components have failed to come up. In such a case, the <span class="codefrag">hod</span> command will return after a few minutes (typically 2-3 minutes) with an error code of either 7 or 8 as defined in the Error Codes section. Refer to that section for further details. </p>
<p>
<em>Possible Cause:</em> A large allocation is fired with a tarball. Sometimes due to load in the network, or on the allocated nodes, the tarball distribution might be significantly slow and take a couple of minutes to come back. Wait for completion. Also check that the tarball does not have the Hadoop sources or documentation.</p>
<p>
<em>Possible Cause:</em> A Torque related problem. If the cause is Torque related, the <span class="codefrag">hod</span> command will not return for more than 5 minutes. Running <span class="codefrag">hod</span> in debug mode may show the <span class="codefrag">qstat</span> command being executed repeatedly. Executing the <span class="codefrag">qstat</span> command from a separate shell may show that the job is in the <span class="codefrag">Q</span> (Queued) state. This usually indicates a problem with Torque. Possible causes could include some nodes being down, or new nodes added that Torque is not aware of. Generally, system administator help is needed to resolve this problem.</p>
<a name="N105B1"></a><a name="Hangs+During+Deallocation"></a>
<h3 class="h4">hod Hangs During Deallocation </h3>
<a name="_hod_Hangs_During_Deallocation" id="_hod_Hangs_During_Deallocation"></a><a name="hod_Hangs_During_Deallocation" id="hod_Hangs_During_Deallocation"></a>
<p>
<em>Possible Cause:</em> A Torque related problem, usually load on the Torque server, or the allocation is very large. Generally, waiting for the command to complete is the only option.</p>
<a name="N105C2"></a><a name="Fails+With+an+Error+Code+and+Error+Message"></a>
<h3 class="h4">hod Fails With an Error Code and Error Message </h3>
<a name="hod_Fails_With_an_error_code_and" id="hod_Fails_With_an_error_code_and"></a><a name="_hod_Fails_With_an_error_code_an" id="_hod_Fails_With_an_error_code_an"></a>
<p>If the exit code of the <span class="codefrag">hod</span> command is not <span class="codefrag">0</span>, then refer to the following table of error exit codes to determine why the code may have occurred and how to debug the situation.</p>
<p>
<strong> Error Codes </strong>
</p>
<a name="Error_Codes" id="Error_Codes"></a>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
    
      
<tr>
        
<th colspan="1" rowspan="1">Error Code</th>
        <th colspan="1" rowspan="1">Meaning</th>
        <th colspan="1" rowspan="1">Possible Causes and Remedial Actions</th>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 1 </td>
        <td colspan="1" rowspan="1"> Configuration error </td>
        <td colspan="1" rowspan="1"> Incorrect configuration values specified in hodrc, or other errors related to HOD configuration. The error messages in this case must be sufficient to debug and fix the problem. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 2 </td>
        <td colspan="1" rowspan="1"> Invalid operation </td>
        <td colspan="1" rowspan="1"> Do <span class="codefrag">hod help</span> for the list of valid operations. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 3 </td>
        <td colspan="1" rowspan="1"> Invalid operation arguments </td>
        <td colspan="1" rowspan="1"> Do <span class="codefrag">hod help operation</span> for listing the usage of a particular operation.</td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 4 </td>
        <td colspan="1" rowspan="1"> Scheduler failure </td>
        <td colspan="1" rowspan="1"> 1. Requested more resources than available. Run <span class="codefrag">checknodes cluster_name</span> to see if enough nodes are available. <br>
          2. Requested resources exceed resource manager limits. <br>
          3. Torque is misconfigured, the path to Torque binaries is misconfigured, or other Torque problems. Contact system administrator. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 5 </td>
        <td colspan="1" rowspan="1"> Job execution failure </td>
        <td colspan="1" rowspan="1"> 1. Torque Job was deleted from outside. Execute the Torque <span class="codefrag">qstat</span> command to see if you have any jobs in the <span class="codefrag">R</span> (Running) state. If none exist, try re-executing HOD. <br>
          2. Torque problems such as the server momentarily going down, or becoming unresponsive. Contact system administrator. <br>
          3. The system administrator might have configured account verification, and an invalid account is specified. Contact system administrator.</td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 6 </td>
        <td colspan="1" rowspan="1"> Ringmaster failure </td>
        <td colspan="1" rowspan="1"> HOD prints the message "Cluster could not be allocated because of the following errors on the ringmaster host &lt;hostname&gt;". The actual error message may indicate one of the following:<br>
          1. Invalid configuration on the node running the ringmaster, specified by the hostname in the error message.<br>
          2. Invalid configuration in the <span class="codefrag">ringmaster</span> section,<br>
          3. Invalid <span class="codefrag">pkgs</span> option in <span class="codefrag">gridservice-mapred or gridservice-hdfs</span> section,<br>
          4. An invalid hadoop tarball, or a tarball which has bundled an invalid configuration file in the conf directory,<br>
          5. Mismatched version in Hadoop between the MapReduce and an external HDFS.<br>
          The Torque <span class="codefrag">qstat</span> command will most likely show a job in the <span class="codefrag">C</span> (Completed) state. <br>
          One can login to the ringmaster host as given by HOD failure message and debug the problem with the help of the error message. If the error message doesn't give complete information, ringmaster logs should help finding out the root cause of the problem. Refer to the section <em>Locating Ringmaster Logs</em> below for more information. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 7 </td>
        <td colspan="1" rowspan="1"> HDFS failure </td>
        <td colspan="1" rowspan="1"> When HOD fails to allocate due to HDFS failures (or Job tracker failures, error code 8, see below), it prints a failure message "Hodring at &lt;hostname&gt; failed with following errors:" and then gives the actual error message, which may indicate one of the following:<br>
          1. Problem in starting Hadoop clusters. Usually the actual cause in the error message will indicate the problem on the hostname mentioned. Also, review the Hadoop related configuration in the HOD configuration files. Look at the Hadoop logs using information specified in <em>Collecting and Viewing Hadoop Logs</em> section above. <br>
          2. Invalid configuration on the node running the hodring, specified by the hostname in the error message <br>
          3. Invalid configuration in the <span class="codefrag">hodring</span> section of hodrc. <span class="codefrag">ssh</span> to the hostname specified in the error message and grep for <span class="codefrag">ERROR</span> or <span class="codefrag">CRITICAL</span> in hodring logs. Refer to the section <em>Locating Hodring Logs</em> below for more information. <br>
          4. Invalid tarball specified which is not packaged correctly. <br>
          5. Cannot communicate with an externally configured HDFS.<br>
          When such HDFS or Job tracker failure occurs, one can login into the host with hostname mentioned in HOD failure message and debug the problem. While fixing the problem, one should also review other log messages in the ringmaster log to see which other machines also might have had problems bringing up the jobtracker/namenode, apart from the hostname that is reported in the failure message. This possibility of other machines also having problems occurs because HOD continues to try and launch hadoop daemons on multiple machines one after another depending upon the value of the configuration variable <a href="hod_config_guide.html#3.4+ringmaster+options">ringmaster.max-master-failures</a>. Refer to the section <em>Locating Ringmaster Logs</em> below to find more about ringmaster logs.
          </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 8 </td>
        <td colspan="1" rowspan="1"> Job tracker failure </td>
        <td colspan="1" rowspan="1"> Similar to the causes in <em>DFS failure</em> case. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 10 </td>
        <td colspan="1" rowspan="1"> Cluster dead </td>
        <td colspan="1" rowspan="1"> 1. Cluster was auto-deallocated because it was idle for a long time. <br>
          2. Cluster was auto-deallocated because the wallclock time specified by the system administrator or user was exceeded. <br>
          3. Cannot communicate with the JobTracker and HDFS NameNode which were successfully allocated. Deallocate the cluster, and allocate again. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 12 </td>
        <td colspan="1" rowspan="1"> Cluster already allocated </td>
        <td colspan="1" rowspan="1"> The cluster directory specified has been used in a previous allocate operation and is not yet deallocated. Specify a different directory, or deallocate the previous allocation first. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 13 </td>
        <td colspan="1" rowspan="1"> HDFS dead </td>
        <td colspan="1" rowspan="1"> Cannot communicate with the HDFS NameNode. HDFS NameNode went down. </td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 14 </td>
        <td colspan="1" rowspan="1"> Mapred dead </td>
        <td colspan="1" rowspan="1"> 1. Cluster was auto-deallocated because it was idle for a long time. <br>
          2. Cluster was auto-deallocated because the wallclock time specified by the system administrator or user was exceeded. <br>
          3. Cannot communicate with the Map/Reduce JobTracker. JobTracker node went down. <br>
          
</td>
      
</tr>
      
<tr>
        
<td colspan="1" rowspan="1"> 15 </td>
        <td colspan="1" rowspan="1"> Cluster not allocated </td>
        <td colspan="1" rowspan="1"> An operation which requires an allocated cluster is given a cluster directory with no state information. </td>
      
</tr>
   
      
<tr>
        
<td colspan="1" rowspan="1"> Any non-zero exit code </td>
        <td colspan="1" rowspan="1"> HOD script error </td>
        <td colspan="1" rowspan="1"> If the hod script option was used, it is likely that the exit code is from the script. Unfortunately, this could clash with the exit codes of the hod command itself. In order to help users differentiate these two, hod writes the script's exit code to a file called script.exitcode in the cluster directory, if the script returned an exit code. You can cat this file to determine the script's exit code. If it does not exist, then it is a hod command exit code.</td> 
      
</tr>
  
</table>
<a name="N10757"></a><a name="Hadoop+DFSClient+Warns+with+a%0A++NotReplicatedYetException"></a>
<h3 class="h4">Hadoop DFSClient Warns with a
  NotReplicatedYetException</h3>
<p>Sometimes, when you try to upload a file to the HDFS immediately after
  allocating a HOD cluster, DFSClient warns with a NotReplicatedYetException. It
  usually shows a message something like - </p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">WARN
  hdfs.DFSClient: NotReplicatedYetException sleeping &lt;filename&gt; retries
  left 3</span></td>
</tr>
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">08/01/25 16:31:40 INFO hdfs.DFSClient:
  org.apache.hadoop.ipc.RemoteException: java.io.IOException: File
  &lt;filename&gt; could only be replicated to 0 nodes, instead of
  1</span></td>
</tr>
</table>
<p> This scenario arises when you try to upload a file
  to the HDFS while the DataNodes are still in the process of contacting the
  NameNode. This can be resolved by waiting for some time before uploading a new
  file to the HDFS, so that enough DataNodes start and contact the
  NameNode.</p>
<a name="N1076F"></a><a name="Hadoop+Jobs+Not+Running+on+a+Successfully+Allocated+Cluster"></a>
<h3 class="h4"> Hadoop Jobs Not Running on a Successfully Allocated Cluster </h3>
<a name="Hadoop_Jobs_Not_Running_on_a_Suc" id="Hadoop_Jobs_Not_Running_on_a_Suc"></a>
<p>This scenario generally occurs when a cluster is allocated, and is left inactive for sometime, and then hadoop jobs are attempted to be run on them. Then Hadoop jobs fail with the following exception:</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr>
<td colspan="1" rowspan="1"><span class="codefrag">08/01/25 16:31:40 INFO ipc.Client: Retrying connect to server: foo.bar.com/1.1.1.1:53567. Already tried 1 time(s).</span></td>
</tr>
</table>
<p>
<em>Possible Cause:</em> No Hadoop jobs were run for a significant portion of time. Thus the cluster would have got deallocated as described in the section <em>Auto-deallocation of Idle Clusters</em>. Deallocate the cluster and allocate it again.</p>
<p>
<em>Possible Cause:</em> The wallclock limit specified by the Torque administrator or the <span class="codefrag">-l</span> option defined in the section <em>Specifying Additional Job Attributes</em> was exceeded since allocation time. Thus the cluster would have got released. Deallocate the cluster and allocate it again.</p>
<p>
<em>Possible Cause:</em> There is a version mismatch between the version of the hadoop being used in provisioning (typically via the tarball option) and the external HDFS. Ensure compatible versions are being used.</p>
<p>
<em>Possible Cause:</em> There is a version mismatch between the version of the hadoop client being used to submit jobs and the hadoop used in provisioning (typically via the tarball option). Ensure compatible versions are being used.</p>
<p>
<em>Possible Cause:</em> You used one of the options for specifying Hadoop configuration <span class="codefrag">-M or -H</span>, which had special characters like space or comma that were not escaped correctly. Refer to the section <em>Options Configuring HOD</em> for checking how to specify such options correctly.</p>
<a name="N107AA"></a><a name="My+Hadoop+Job+Got+Killed"></a>
<h3 class="h4"> My Hadoop Job Got Killed </h3>
<a name="My_Hadoop_Job_Got_Killed" id="My_Hadoop_Job_Got_Killed"></a>
<p>
<em>Possible Cause:</em> The wallclock limit specified by the Torque administrator or the <span class="codefrag">-l</span> option defined in the section <em>Specifying Additional Job Attributes</em> was exceeded since allocation time. Thus the cluster would have got released. Deallocate the cluster and allocate it again, this time with a larger wallclock time.</p>
<p>
<em>Possible Cause:</em> Problems with the JobTracker node. Refer to the section in <em>Collecting and Viewing Hadoop Logs</em> to get more information.</p>
<a name="N107C5"></a><a name="Hadoop+Job+Fails+with+Message%3A+%27Job+tracker+still+initializing%27"></a>
<h3 class="h4"> Hadoop Job Fails with Message: 'Job tracker still initializing' </h3>
<a name="Hadoop_Job_Fails_with_Message_Jo" id="Hadoop_Job_Fails_with_Message_Jo"></a>
<p>
<em>Possible Cause:</em> The hadoop job was being run as part of the HOD script command, and it started before the JobTracker could come up fully. Allocate the cluster using a large value for the configuration option <span class="codefrag">--hod.script-wait-time</span>. Typically a value of 120 should work, though it is typically unnecessary to be that large.</p>
<a name="N107D5"></a><a name="The+Exit+Codes+For+HOD+Are+Not+Getting+Into+Torque"></a>
<h3 class="h4"> The Exit Codes For HOD Are Not Getting Into Torque </h3>
<a name="The_Exit_Codes_For_HOD_Are_Not_G" id="The_Exit_Codes_For_HOD_Are_Not_G"></a>
<p>
<em>Possible Cause:</em> Version 0.16 of hadoop is required for this functionality to work. The version of Hadoop used does not match. Use the required version of Hadoop.</p>
<p>
<em>Possible Cause:</em> The deallocation was done without using the <span class="codefrag">hod</span> command; for e.g. directly using <span class="codefrag">qdel</span>. When the cluster is deallocated in this manner, the HOD processes are terminated using signals. This results in the exit code to be based on the signal number, rather than the exit code of the program.</p>
<a name="N107ED"></a><a name="The+Hadoop+Logs+are+Not+Uploaded+to+HDFS"></a>
<h3 class="h4"> The Hadoop Logs are Not Uploaded to HDFS </h3>
<a name="The_Hadoop_Logs_are_Not_Uploaded" id="The_Hadoop_Logs_are_Not_Uploaded"></a>
<p>
<em>Possible Cause:</em> There is a version mismatch between the version of the hadoop being used for uploading the logs and the external HDFS. Ensure that the correct version is specified in the <span class="codefrag">hodring.pkgs</span> option.</p>
<a name="N107FD"></a><a name="Locating+Ringmaster+Logs"></a>
<h3 class="h4"> Locating Ringmaster Logs </h3>
<a name="Locating_Ringmaster_Logs" id="Locating_Ringmaster_Logs"></a>
<p>To locate the ringmaster logs, follow these steps: </p>
<ul>
    
<li> Execute hod in the debug mode using the -b option. This will print the Torque job id for the current run.</li>
    
<li> Execute <span class="codefrag">qstat -f torque_job_id</span> and look up the value of the <span class="codefrag">exec_host</span> parameter in the output. The first host in this list is the ringmaster node.</li>
    
<li> Login to this node.</li>
    
<li> The ringmaster log location is specified by the <span class="codefrag">ringmaster.log-dir</span> option in the hodrc. The name of the log file will be <span class="codefrag">username.torque_job_id/ringmaster-main.log</span>.</li>
    
<li> If you don't get enough information, you may want to set the ringmaster debug level to 4. This can be done by passing <span class="codefrag">--ringmaster.debug 4</span> to the hod command line.</li>
  
</ul>
<a name="N10829"></a><a name="Locating+Hodring+Logs"></a>
<h3 class="h4"> Locating Hodring Logs </h3>
<a name="Locating_Hodring_Logs" id="Locating_Hodring_Logs"></a>
<p>To locate hodring logs, follow the steps below: </p>
<ul>
    
<li> Execute hod in the debug mode using the -b option. This will print the Torque job id for the current run.</li>
    
<li> Execute <span class="codefrag">qstat -f torque_job_id</span> and look up the value of the <span class="codefrag">exec_host</span> parameter in the output. All nodes in this list should have a hodring on them.</li>
    
<li> Login to any of these nodes.</li>
    
<li> The hodring log location is specified by the <span class="codefrag">hodring.log-dir</span> option in the hodrc. The name of the log file will be <span class="codefrag">username.torque_job_id/hodring-main.log</span>.</li>
    
<li> If you don't get enough information, you may want to set the hodring debug level to 4. This can be done by passing <span class="codefrag">--hodring.debug 4</span> to the hod command line.</li>
  
</ul>
</div>

</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
