<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-05-29
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20150529" />
    <meta http-equiv="Content-Language" content="en" />
    <title>AsterixDB - </title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="./" id="bannerLeft">
                                                                                                <img src="images/asterixlogo.png"  alt="AsterixDB"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://incubator.apache.org/" id="bannerRight">
                                                                                                <img src="images/egg-logo.png"  alt="Apache Software Foundation Incubator"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2015-05-29</li>
                      
                
                    
                 <li id="projectVersion" class="pull-right">Version: 0.8.7-SNAPSHOT</li>
      
                                            <li class="divider pull-right">|</li>
                        
    <li class="pull-right">              <a href="index.html" title="Home">
        Home</a>
  </li>

                        </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Apache Software Foundation</li>
                                
      <li>
    
                          <a href="http://www.apache.org/" class="externalLink" title="Home">
          <i class="none"></i>
        Home</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Donate">
          <i class="none"></i>
        Donate</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
                              <li class="nav-header">User Documentation</li>
                                
      <li class="active">
    
            <a href="#"><i class="none"></i>Installing and Managing AsterixDB using Managix</a>
          </li>
                  
      <li>
    
                          <a href="aql/primer.html" title="AsterixDB 101: An ADM and AQL Primer">
          <i class="none"></i>
        AsterixDB 101: An ADM and AQL Primer</a>
            </li>
                  
      <li>
    
                          <a href="aql/primer-sql-like.html" title="AsterixDB 101: An ADM and AQL Primer (For SQL Fans)">
          <i class="none"></i>
        AsterixDB 101: An ADM and AQL Primer (For SQL Fans)</a>
            </li>
                  
      <li>
    
                          <a href="aql/js-sdk.html" title="AsterixDB Javascript SDK">
          <i class="none"></i>
        AsterixDB Javascript SDK</a>
            </li>
                  
      <li>
    
                          <a href="aql/datamodel.html" title="Asterix Data Model (ADM)">
          <i class="none"></i>
        Asterix Data Model (ADM)</a>
            </li>
                  
      <li>
    
                          <a href="aql/manual.html" title="Asterix Query Language (AQL)">
          <i class="none"></i>
        Asterix Query Language (AQL)</a>
            </li>
                  
      <li>
    
                          <a href="aql/functions.html" title="AQL Functions">
          <i class="none"></i>
        AQL Functions</a>
            </li>
                  
      <li>
    
                          <a href="aql/allens.html" title="AQL Allen's Relations Functions">
          <i class="none"></i>
        AQL Allen's Relations Functions</a>
            </li>
                  
      <li>
    
                          <a href="aql/similarity.html" title="AQL Support of Similarity Queries">
          <i class="none"></i>
        AQL Support of Similarity Queries</a>
            </li>
                  
      <li>
    
                          <a href="aql/externaldata.html" title="Accessing External Data">
          <i class="none"></i>
        Accessing External Data</a>
            </li>
                  
      <li>
    
                          <a href="aql/filters.html" title="Filter-Based LSM Index Acceleration">
          <i class="none"></i>
        Filter-Based LSM Index Acceleration</a>
            </li>
                  
      <li>
    
                          <a href="api.html" title="REST API to AsterixDB">
          <i class="none"></i>
        REST API to AsterixDB</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                                                                                                                         <a href="./" title="Hyracks" class="builtBy">
        <img class="builtBy"  alt="Hyracks" src="images/hyrax_ts.png"    />
      </a>
                      </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <h1>Introduction</h1>
<div class="section">
<h2><a name="toc" id="toc">Table of Contents</a><a name="Table_of_Contents"></a></h2>

<ul>
  
<li><a href="#PrerequisitesForInstallingAsterixDB">Prerequisites for Installing AsterixDB</a></li>
  
<li><a href="#Section1SingleMachineAsterixDBInstallation">Section 1: Single-Machine AsterixDB installation</a></li>
  
<li><a href="#Section2SingleMachineAsterixDBInstallationAdvanced">Section 2: Single-Machine AsterixDB installation (Advanced)</a></li>
  
<li><a href="#Section3InstallingAsterixDBOnAClusterOfMultipleMachines">Section 3: Installing AsterixDB on a Cluster of Multiple Machines</a></li>
  
<li><a href="#Section4ManagingTheLifecycleOfAnAsterixDBInstance">Section 4: Managing the Lifecycle of an AsterixDB Instance</a></li>
  
<li><a href="#Section5FAQ">Section 5: Frequently Asked Questions</a></li>
</ul>
<p>This is a quickstart guide for getting AsterixDB running in a distributed environment. This guide also introduces the AsterixDB installer (nicknamed <i><i>Managix</i></i>) and describes how it can be used to create and manage an AsterixDB instance. By following the simple steps described in this guide, you will get a running instance of AsterixDB. You shall be able to use AsterixDB from its Web interface and manage its lifecycle using Managix. This document assumes that you are running some version of <i><i>Linux</i></i> or <i><i>MacOS X</i></i>.</p></div>
<div class="section">
<h2><a name="PrerequisitesForInstallingAsterixDB" id="PrerequisitesForInstallingAsterixDB">Prerequisites for Installing AsterixDB</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Prerequisites_for_Installing_AsterixDB_Back_to_TOC"></a></h2>
<p>Prerequisite:</p>

<ul>
  
<li><a class="externalLink" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK&gt;=7</a> (Otherwise known as JDK&gt;=1.7).</li>
</ul>
<p>To know the version of Java installed on your system, execute the following:</p>

<div class="source">
<pre>    $ java -version
</pre></div>
<p>If your version is at least 1.7.0_x, similar to the output shown below, you are good to proceed.</p>

<div class="source">
<pre>    java version &quot;1.7.0_13&quot;
    Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
</pre></div>
<p>If you need to upgrade or install java, please follow the instructions below.</p>

<ul>
  
<li>
<p>For Linux: <a class="externalLink" href="http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html">JDK 7 Linux Install</a> JDK would be installed at a path under /usr/lib/jvm/jdk-version .</p></li>
  
<li>
<p>For Mac: <a class="externalLink" href="http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html">JDK 7 Mac Install</a> JDK would be installed at /Library/Java/JavaVirtualMachines/jdk-version/Contents/Home .</p></li>
</ul>
<p>The java installation directory is referred as JAVA_HOME. Since we upgraded/installed Java, we need to ensure JAVA_HOME points to the installation directory of JDK. Modify your ~/.bash_profile (or ~/.bashrc) and define JAVA_HOME accordingly. After the modification, execute the following:</p>

<div class="source">
<pre>    $ java -version
</pre></div>
<p>If the version information you obtain does not show 1.7, you need to update the PATH variable. To do so, execute the following:</p>

<div class="source">
<pre>    $ echo &quot;PATH=$JAVA_HOME/bin:$PATH&quot; &gt;&gt; ~/.bash_profile (or ~/.bashrc)
    $ source ~/.bash_profile (or ~/.bashrc)
</pre></div></div>
<div class="section">
<h2><a name="Section1SingleMachineAsterixDBInstallation" id="Section1SingleMachineAsterixDBInstallation">Section 1: Single-Machine AsterixDB installation</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Section_1:_Single-Machine_AsterixDB_installation_Back_to_TOC"></a></h2>
<p>We assume a user called &#x201c;Joe&#x201d; with a home directory as /home/joe. On a Mac, the home directory for user Joe would be /Users/joe.</p>
<div class="section">
<h3>Configuring Environment<a name="Configuring_Environment"></a></h3>
<p>Ensure that JAVA_HOME variable is defined and points to the the java installation directory on your machine. To verify, execute the following:</p>

<div class="source">
<pre>    $ echo $JAVA_HOME
</pre></div>
<p>If you do not see any output, JAVA_HOME is not defined. We need to add the following line to your profile located at /home/joe/.bash_profile or /home/joe/.bashrc, whichever you are using. If you do not have any of these files, create a ~/.bash_profile file.</p>

<div class="source">
<pre>    export JAVA_HOME=&lt;Path to Java installation directory&gt;
</pre></div>
<p>After you have edited ~/.bash_profile (or ~/.bashrc), execute the following to make the changes effective in current shell:</p>

<div class="source">
<pre>    $ source /home/joe/.bash_profile (or /home/joe/.bashrc)
</pre></div>
<p>Before proceeding, verify that JAVA_HOME is defined by executing the following:</p>

<div class="source">
<pre>    $ echo $JAVA_HOME
</pre></div></div>
<div class="section">
<h3>Configuring SSH<a name="Configuring_SSH"></a></h3>
<p>If SSH is not enabled on your system, please follow the instruction below to enable/install it or else skip to the section <a href="#Configuring_Password-less_SSH">Configuring Password-less SSH</a>.</p>
<div class="section">
<h4>Enabling SSH on Mac<a name="Enabling_SSH_on_Mac"></a></h4>
<p>The Apple Mac OS X operating system has SSH installed by default but the SSH daemon is not enabled. This means you can&#x2019;t login remotely or do remote copies until you enable it. To enable it, go to &#x2018;System Preferences&#x2019;. Under &#x2018;Internet &amp; Networking&#x2019; there is a &#x2018;Sharing&#x2019; icon. Run that. In the list that appears, check the &#x2018;Remote Login&#x2019; option. Also check the &#x201c;All users&#x201d; radio button for &#x201c;Allow access for&#x201d;. This starts the SSH daemon immediately and you can remotely login using your username. The &#x2018;Sharing&#x2019; window shows at the bottom the name and IP address to use. You can also find this out using &#x2018;whoami&#x2019; and &#x2018;ifconfig&#x2019; from the Terminal application.</p></div>
<div class="section">
<h4>Enabling SSH on Linux<a name="Enabling_SSH_on_Linux"></a></h4>

<div class="source">
<pre>    sudo apt-get install openssh-server
</pre></div>
<p>Assumming that you have enabled SSH on your system, let us proceed.</p></div>
<div class="section">
<h4>Configuring Password-less SSH<a name="Configuring_Password-less_SSH"></a></h4>
<p>For our single-machine setup of AsterixDB, we need to configure password-less SSH access to localhost. We assume that you are on the machine where you want to install AsterixDB. To verify if you already have password-less SSH configured, execute the following:</p>

<div class="source">
<pre>     $ ssh 127.0.0.1
</pre></div>
<p>If you get an output similar to one shown below, type &#x201c;yes&#x201d; and press enter.</p>

<div class="source">
<pre>    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is aa:7b:51:90:74:39:c4:f6:28:a2:9d:47:c2:8d:33:31.
    Are you sure you want to continue connecting (yes/no)?
</pre></div>
<p>If you are not prompted for a password, that is if you get an output similar to one shown below, it signifies that you already have password-less SSH configured. </p>

<div class="source">
<pre>    $ ssh 127.0.0.1
    Last login: Sat Mar 23 22:52:49 2013
</pre></div>
<p>[Important: Password-less SSH requires the use of a (public,private) key-pair. The key-pair is located as a pair of files under  $HOME/.ssh directory. It is required that the (public,private) key-pair files have default names (id_rsa.pub, id_rsa) respectively.  If you are using different names, please rename the files to use the default names]</p>
<p>Skip to the next section <a href="#Configuring_Managix">Configuring Managix</a>.</p>
<p>You are here because you were prompted for a password. You need to configure password-less SSH.<br />We shall generate a (public,private) key-pair as id_rsa.pub and id_rsa respectively. If $HOME/.ssh already contains a (public,private) key-pair, please ensure the files are renamed before proceeding. Follow the instructions below.</p>

<div class="source">
<pre>     $ ssh-keygen -t rsa -P &quot;&quot;
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/joe/.ssh/id_rsa):   
    [Important: Please ensure that we use the default value, so simply press enter]
</pre></div>
<p>If a key already exists, you should get an output similar to what is shown below. Press &#x2018;y&#x2019; to overwrite the existing key. It is required to use the default name. If you wish to not overwrite a pre-existing key, ensure that the pre-existing key is saved with a different name.</p>

<div class="source">
<pre>    /home/joe/.ssh/id_rsa already exists.
    Overwrite (y/n)?
</pre></div>
<p>You should see an output similar to one shown below:</p>

<div class="source">
<pre>    The key fingerprint is:
    4d:b0:30:14:45:cc:99:86:15:48:17:0b:39:a0:05:ca joe@joe-machine
    The key's randomart image is:
    +--[ RSA 2048]----+
    |  ..o+B@O=       |
    |.. o  ==*+       |
    |.E.    oo .      |
    |         o       |
    |        S .      |
    |                 |
    |                 |
    |                 |
    |                 |
    +-----------------+
</pre></div>
<p>Note: for Linux users, you may not get an image representation of the key, but this is not an error. Next, execute the following:</p>

<div class="source">
<pre>      $ cat $HOME/.ssh/id_rsa.pub &gt;&gt; $HOME/.ssh/authorized_keys
      $ chmod 700  $HOME/.ssh/authorized_keys
</pre></div>
<p>We shall now retry SSH without password.</p>

<div class="source">
<pre>    $ ssh 127.0.0.1
</pre></div>
<p>You may see an output similar to one shown below:</p>

<div class="source">
<pre>    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is aa:7b:51:90:74:39:c4:f6:28:a2:9d:47:c2:8d:33:31.
    Are you sure you want to continue connecting (yes/no)?
</pre></div>
<p>Type &#x2018;yes&#x2019; and press the enter key. You should see an output similar to one shown below:</p>

<div class="source">
<pre>    Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
    Last login: Thu Mar 28 12:27:10 2013
</pre></div>
<p>You should now be able to log in without being prompted for a password or a response.</p>

<div class="source">
<pre>    ssh 127.0.0.1
    Last login: Sat Mar 23 22:54:40 2013
</pre></div>
<p>Execute &#x2018;exit&#x2019; to close the session.</p>

<div class="source">
<pre>    $ exit
    logout
    Connection to 127.0.0.1 closed.
</pre></div></div></div>
<div class="section">
<h3>Configuring Managix<a name="Configuring_Managix"></a></h3>
<p>You will need the AsterixDB installer (a.k.a. Managix). Download Managix from <a class="externalLink" href="http://asterixdb.ics.uci.edu/download.html">here</a>; this includes the bits for Managix as well as AsterixDB.</p>
<p>To be able to create an AsterixDB instance and manage its lifecycle, the Managix requires you to configure a set of configuration files namely:</p>

<ul>
  
<li><tt>conf/managix-conf.xml</tt>: A configuration XML file that contains configuration settings for Managix.</li>
  
<li>A configuration XML file that describes the nodes in the cluster, e.g., <tt>clusters/local/local.xml</tt>.</li>
</ul>
<p>Since we intend to run AsterixDB on a single node, Managix can auto-configure itself and populate the above configuration files. To auto-configure Managix, execute the following in the MANAGIX_HOME directory:</p>

<div class="source">
<pre>     /home/joe/asterix-mgmt&gt; $ managix configure
</pre></div>
<p>Let us do a sample run to validate the set of configuration files auto-generated by Managix.</p>

<div class="source">
<pre>    /home/joe/asterix-mgmt&gt; $ managix validate
      INFO: Environment [OK]
      INFO: Managix Configuration [OK]


    /home/joe/asterix-mgmt&gt; $ managix validate -c clusters/local/local.xml
      INFO: Environment [OK]
      INFO: Cluster configuration [OK]
</pre></div></div>
<div class="section">
<h3>Creating an AsterixDB instance<a name="Creating_an_AsterixDB_instance"></a></h3>
<p>Now that we have configured Managix, we shall next create an AsterixDB instance. An AsterixDB instance is identified by a unique name and is created using the <tt>create</tt> command. The usage description for the <tt>create</tt> command can be obtained by executing the following:</p>

<div class="source">
<pre>     $ managix help -cmd create
     Creates an AsterixDB instance with a specified name. Post creation, the instance is in ACTIVE state,
     indicating its availability for executing statements/queries.
     Usage arguments/options:
     -n Name of the AsterixDB instance.
     -c Path to the cluster configuration file
</pre></div>
<p>We shall now use the <tt>create</tt> command to create an AsterixDB instance by the name &#x201c;my_asterix&#x201d;. In doing so, we shall use the cluster configuration file that was auto-generated by Managix.</p>

<div class="source">
<pre>     $ managix create -n my_asterix -c clusters/local/local.xml
</pre></div>
<p>A sample output of the above command is shown below:</p>

<div class="source">
<pre>    INFO: Name:my_asterix
    Created:Thu Mar 07 11:14:13 PST 2013
    Web-Url:http://127.0.0.1:19001
    State:ACTIVE
</pre></div>
<p>The third line above shows the web-url <a class="externalLink" href="http://127.0.0.1:19001">http://127.0.0.1:19001</a> for an AsterixDB&#x2019;s web interface. The AsterixDB instance is in the &#x2018;ACTIVE&#x2019; state, indicating that you may access the web interface by navigating to the web url.</p>
<p>Type in the following &#x201c;Hello World&#x201d; query in the box:</p>

<div class="source">
<pre>    let $message := 'Hello World!'
    return $message
</pre></div>
<p>Press the &#x201c;Run&#x201d; button. If the query result shows on the output box, then Congratulations! You have successfully created an AsterixDB instance!</p></div></div>
<div class="section">
<h2><a name="Section2SingleMachineAsterixDBInstallationAdvanced" id="Section2SingleMachineAsterixDBInstallationAdvanced">Section 2: Single-Machine AsterixDB installation (Advanced)</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Section_2:_Single-Machine_AsterixDB_installation_Advanced_Back_to_TOC"></a></h2>
<p>We assume that you have successfully completed the single-machine AsterixDB installation by following the instructions above in section <a href="#Section_1:_Single-Machine_AsterixDB_installation">AsterixDB installation</a>. In this section, we shall cover advanced topics related to AsterixDB configuration. Before we proceed, it is imperative to go through some preliminary concepts related to AsterixDB runtime.</p>
<div class="section">
<h3>AsterixDB Runtime<a name="AsterixDB_Runtime"></a></h3>
<p>An AsterixDB runtime comprises of a &#x2018;&#x2018;master node&#x2019;&#x2019; and a set of &#x2018;&#x2018;worker nodes&#x2019;&#x2019;, each identified by a unique id. The master node runs a &#x2018;&#x2018;Cluster Controller&#x2019;&#x2019; service (a.k.a. &#x2018;&#x2018;CC&#x2019;&#x2019;), while each worker node runs a &#x2018;&#x2018;Node Controller&#x2019;&#x2019; service (a.k.a. &#x2018;&#x2018;NC&#x2019;&#x2019;). Please note that a node in an AsterixDB cluster is a logical concept in the sense that multiple nodes may map to a single physical machine, which is the case for a single-machine AsterixDB installation. This association or mapping between an AsterixDB node and a physical machine is captured in a cluster configuration XML file. In addition, the XML file contains properties and parameters associated with each node.</p>
<div class="section">
<h4>AsterixDB Runtime Configuration<a name="AsterixDB_Runtime_Configuration"></a></h4>
<p>As observed earlier, Managix can auto-configure itself for a single-machine setup. As part of auto-configuration, Managix generated the cluster XML file. Let us understand the components of the generated cluster XML file. If you have configured Managix (via the <tt>configure</tt> command), you can find a similar cluster XML file as $MANAGIX_HOME/clusters/local/local.xml. The following is a sample XML file generated on a Ubuntu (Linux) setup:</p>

<div class="source">
<pre>    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
    &lt;cluster xmlns=&quot;cluster&quot;&gt;
        &lt;name&gt;local&lt;/name&gt;
        &lt;java_home&gt;/usr/lib/jvm/jdk1.7.0&lt;/java_home&gt;
        &lt;log_dir&gt;/home/joe/asterix-mgmt/clusters/local/working_dir/logs&lt;/log_dir&gt;
        &lt;txn_log_dir&gt;/home/joe/asterix-mgmt/clusters/local/working_dir/logs&lt;/txn_log_dir&gt;
        &lt;iodevices&gt;/home/joe/asterix-mgmt/clusters/local/working_dir&lt;/iodevices&gt;
        &lt;store&gt;storage&lt;/store&gt;
        &lt;working_dir&gt;
            &lt;dir&gt;/home/joe/asterix-mgmt/clusters/local/working_dir&lt;/dir&gt;
            &lt;NFS&gt;true&lt;/NFS&gt;
        &lt;/working_dir&gt;
        &lt;master_node&gt;
            &lt;id&gt;master&lt;/id&gt;
            &lt;client_ip&gt;127.0.0.1&lt;/client_ip&gt;
            &lt;cluster_ip&gt;127.0.0.1&lt;/cluster_ip&gt;
            &lt;client_port&gt;1098&lt;/client_port&gt;
            &lt;cluster_port&gt;1099&lt;/cluster_port&gt;
            &lt;http_port&gt;8888&lt;/http_port&gt;
        &lt;/master_node&gt;
        &lt;node&gt;
            &lt;id&gt;node1&lt;/id&gt;
            &lt;cluster_ip&gt;127.0.0.1&lt;/cluster_ip&gt;
        &lt;/node&gt;
    &lt;/cluster&gt;
</pre></div>
<p>We shall next explain the components of the cluster configuration XML file.</p></div>
<div class="section">
<h4>(1) Defining nodes in AsterixDB runtime<a name="a1_Defining_nodes_in_AsterixDB_runtime"></a></h4>
<p>The single-machine AsterixDB instance configuration that is auto-generated by Managix (using the <tt>configure</tt> command) involves a master node (CC) and a worker node (NC). Each node is assigned a unique id and provided with an ip address (called &#x2018;&#x2018;cluster_ip&#x2019;&#x2019;) that maps a node to a physical machine. The following snippet from the above XML file captures the master/worker nodes in our AsterixDB installation.</p>

<div class="source">
<pre>        &lt;master_node&gt;
            &lt;id&gt;master&lt;/id&gt;
            &lt;client_ip&gt;127.0.0.1&lt;/client_ip&gt;
            &lt;cluster_ip&gt;127.0.0.1&lt;/cluster_ip&gt;
            &lt;client_port&gt;1098&lt;/client_port&gt;
            &lt;cluster_port&gt;1099&lt;/cluster_port&gt;
            &lt;http_port&gt;8888&lt;/http_port&gt;
        &lt;/master_node&gt;
        &lt;node&gt;
            &lt;id&gt;node1&lt;/id&gt;
            &lt;cluster_ip&gt;127.0.0.1&lt;/cluster_ip&gt;
        &lt;/node&gt;
</pre></div>
<p>The following is a description of the different elements in the cluster configuration xml file.</p>

<table border="0" class="table table-striped">

<tr class="a">
  
<td>Property</td>
  
<td>Description</td>
</tr>

<tr class="b">
  
<td>id</td>
  
<td>A unique id for a node.</td>
</tr>

<tr class="a">
  
<td>cluster_ip</td>
  
<td>IP address of the machine to which a node maps to. This address is used for all internal communication between the nodes.</td>
</tr>

<tr class="b">
  
<td>client_ip</td>
  
<td>Provided for the master node. This IP should be reachable from clients that want to connect with AsterixDB via its web interface.</td>
</tr>

<tr class="a">
  
<td>client_port</td>
  
<td>Provided for the master node. This is the port at which the Cluster Controller (CC) service listens for connections from clients.</td>
</tr>

<tr class="b">
  
<td>cluster_port</td>
  
<td>Provided for the master node. This is the port used by the Cluster Controller (CC) service to listen for connections from Node Controllers (NCs). </td>
</tr>

<tr class="a">
  
<td>http-port</td>
  
<td>Provided for the master node. This is the http port used by the Cluster Controller (CC) service. </td>
</tr>

</table></div>
<div class="section">
<h4>(2) Properties associated with a worker node (NC) in AsterixDB<a name="a2_Properties_associated_with_a_worker_node_NC_in_AsterixDB"></a></h4>
<p>The following is a list of properties associated with each worker node in an AsterixDB configuration.</p>

<table border="0" class="table table-striped">

<tr class="a">
  
<td>Property</td>
  
<td>Description</td>
</tr>

<tr class="b">
  
<td>java_home</td>
  
<td>Java installation directory at each node.</td>
</tr>

<tr class="a">
  
<td>log_dir</td>
  
<td>A directory where the worker node JVM may write logs.</td>
</tr>

<tr class="b">
  
<td>txn_log_dir</td>
  
<td>A directory where the worker node writes transaction logs.</td>
</tr>

<tr class="a">
  
<td>iodevices</td>
  
<td>Comma separated list of IO Device mount points.</td>
</tr>

<tr class="b">
  
<td>store</td>
  
<td>A data directory (under each iodevice) that AsterixDB uses to store data belonging to dataset(s).</td>
</tr>
</table>
<p>All the above properties can be defined at the global level or a local level. In the former case, these properties apply to all the nodes in an AsterixDB configuration. In the latter case, these properties apply only to the node(s) under which they are defined. A property defined at the local level overrides the definition at the global level.</p></div>
<div class="section">
<h4>(3) Working directory of an AsterixDB instance<a name="a3_Working_directory_of_an_AsterixDB_instance"></a></h4>
<p>Next we explain the following setting in the file $MANAGIX_HOME/clusters/local/local.xml.</p>

<div class="source">
<pre>        &lt;working_dir&gt;
            &lt;dir&gt;/Users/joe/asterix-mgmt/clusters/local/working_dir&lt;/dir&gt;
            &lt;NFS&gt;true&lt;/NFS&gt;
        &lt;/working_dir&gt;
</pre></div>
<p>Managix associates a working directory with an AsterixDB instance and uses this directory for transferring binaries to each node. If there is a directory that is readable by each node, Managix can use it to place binaries that can be accessed and used by all the nodes in the AsterixDB set up. A network file system (NFS) provides such a functionality for a cluster of physical machines so that a path on NFS is accessible from each machine in the cluster. In the single-machine set up described above, all nodes correspond to a single physical machine. Each path on the local file system is accessible to all the nodes in the AsterixDB setup and the boolean value for NFS above is thus set to <tt>true</tt>.</p></div></div>
<div class="section">
<h3>Managix Configuration<a name="Managix_Configuration"></a></h3>
<p>Managix allows creation and management of multiple AsterixDB instances and uses Zookeeper as its back-end database to keep track of information related to each instance. We need to provide a set of one or more hosts that Managix can use to run a Zookeeper instance. Zookeeper runs as a daemon process on each of the specified hosts. At each host, Zookeeper stores data under the Zookeeper home directory specified as part of the configuration. The following is an example configuration <tt>$MANAGIX_HOME/conf/managix-conf.xml</tt> that has Zookeeper running on the localhost (127.0.0.1) :</p>

<div class="source">
<pre>    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
    &lt;configuration xmlns=&quot;installer&quot;&gt;
        &lt;zookeeper&gt;
            &lt;homeDir&gt;/home/joe/asterix/.installer/zookeeper&lt;/homeDir&gt;
            &lt;clientPort&gt;2900&lt;/clientPort&gt;
            &lt;servers&gt;
                &lt;server&gt;127.0.0.1&lt;/server&gt;
            &lt;/servers&gt;
        &lt;/zookeeper&gt;
    &lt;/configuration&gt;
</pre></div>
<p>It is possible to have a single host for Zookeeper. A larger number of hosts would use Zookeeper&#x2019;s replication and fault-tolerance feature such that a failure of a host running Zookeeper would not result in loss of information about existing AsterixDB instances.</p></div></div>
<div class="section">
<h2><a name="Section3InstallingAsterixDBOnAClusterOfMultipleMachines" id="Section3InstallingAsterixDBOnAClusterOfMultipleMachines">Section 3: Installing AsterixDB on a Cluster of Multiple Machines</a><font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Section_3:_Installing_AsterixDB_on_a_Cluster_of_Multiple_MachinesBack_to_TOC"></a></h2>
<p>We assume that you have read the two sections above on single-machine AsterixDB setup. Next we explain how to install AsterixDB in a cluster of multiple machines. As an example, we assume we want to setup AsterixDB on a cluster of three machines, in which we use one machine (called machine A) as the master node and two other machines (called machine B and machine C) as the worker nodes, as shown in the following diagram:</p>
<p><img src="https://asterixdb.googlecode.com/files/AsterixCluster.png" alt="AsterixCluster" /></p>
<p>Notice that each machine has a &#x2018;&#x2018;cluster_ip&#x2019;&#x2019; address, which is used by these machines for their intra-cluster communication. Meanwhile, the master machine also has a &#x2018;&#x2018;client_ip&#x2019;&#x2019; address, using which an end-user outside the cluster can communicate with this machine. The reason we differentiate between these two types of IP addresses is that we can have a cluster of machines using a private network. In this case they have internal ip addresses that cannot be used outside the network. In the case all the machines are on a public network, the &#x201c;client_ip&#x201d; and &#x201c;cluster_ip&#x201d; of the master machine can share the same address.</p>
<p>Next we describe how to set up AsterixDB in this cluster, assuming no Managix has been installed on these machines.</p>
<div class="section">
<h3>Step (1): Configure SSH<a name="Step_1:_Configure_SSH"></a></h3>
<p>The steps of setting up SSH are similar to those in the single-machine setup case. We assume we have a common user account called &#x201c;joe&#x201d; on each machine in the cluster.</p>
<p>On the master machine, do the following:</p>

<div class="source">
<pre>    machineA&gt; ssh 127.0.0.1
</pre></div>
<p>If you get an output similar to one shown below, type &#x201c;yes&#x201d; and press enter.</p>

<div class="source">
<pre>    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is aa:7b:51:90:74:39:c4:f6:28:a2:9d:47:c2:8d:33:31.
    Are you sure you want to continue connecting (yes/no)?
</pre></div>
<p>If you are not prompted for a password, that is if you get an output similar to one shown below, it signifies that you already have password-less SSH configured. </p>

<div class="source">
<pre>    $ ssh 127.0.0.1
    Last login: Sat Mar 23 22:52:49 2013
</pre></div>
<p>[Important: Password-less SSH requires the use of a (public,private) key-pair. The key-pair is located as a pair of files under  $HOME/.ssh directory. It is required that the (public,private) key-pair files have default names (id_rsa.pub, id_rsa) respectively.  If you are using different names, please rename the files to use the default names]</p>
<p>If you are prompted for a password, execute the following</p>

<div class="source">
<pre>    machineA&gt; ssh-keygen -t rsa -P &quot;&quot;
    machineA&gt; cat $HOME/.ssh/id_rsa.pub &gt;&gt; $HOME/.ssh/authorized_keys
    machineA&gt; chmod 700  $HOME/.ssh/authorized_keys
</pre></div>
<p>If $HOME is not on the NFS, copy the id_rsa.pub to the directory ~/.ssh (login with the same account) on each machine, and then do the following on each machine. (Notice that this step is not needed if the folder &#x201c;.ssh&#x201d; is on the NFS and can be accessed by all the nodes.)</p>

<div class="source">
<pre>    cd ~/.ssh
    cat id_rsa.pub &gt;&gt; authorized_keys
    chmod 700  $HOME/.ssh/authorized_keys
</pre></div>
<p>Then run the following step again and type &#x201c;yes&#x201d; if prompted:</p>

<div class="source">
<pre>    machineA&gt; ssh 127.0.0.1
</pre></div></div>
<div class="section">
<h3>Step (2): Define the AsterixDB cluster<a name="Step_2:_Define_the_AsterixDB_cluster"></a></h3>
<p>We first log into the master machine as the user &#x201c;joe&#x201d;. On this machine, download Managix from <a class="externalLink" href="http://asterixdb.ics.uci.edu/download.html">here</a> (save as above), then do the following steps similar to the single-machine case described above:</p>

<div class="source">
<pre>    machineA&gt; cd ~
    machineA&gt; mkdir asterix-mgmt
    machineA&gt; cd asterix-mgmt
    machineA&gt; unzip  &lt;path to the Managix zip bundle&gt;
</pre></div>
<p>Note that it is recommended that MANAGIX_HOME is not located on a network file system (NFS). Managix creates artifacts/logs that are not required to be shared. Any overhead associated with creating artifacts/logs on the NFS should be avoided.</p>
<p>We also need an AsterixDB configuration XML file for the cluster. We give the name to the cluster, say, &#x201c;rainbow&#x201d;. We create a folder for the configuration of this cluster:</p>

<div class="source">
<pre>    machineA&gt; mkdir asterix-mgmt/rainbow_cluster
</pre></div>
<p>For this cluster we create a configuration file <tt>$MANAGIX_HOME/rainbow_cluster/rainbow.xml</tt>. The following is a sample file with explanation of the properties:</p>

<div class="source">
<pre>    &lt;cluster xmlns=&quot;cluster&quot;&gt;

      &lt;!-- Name of the cluster --&gt;
      &lt;name&gt;rainbow&lt;/name&gt;

      &lt;!-- username, which should be valid for all the three machines --&gt;
      &lt;username&gt;joe&lt;/username&gt;

      &lt;!-- The working directory of Managix. It is recommended for the working
           directory to be on a network file system (NFS) that can accessed by
           all machines.
           Managix creates the directory if it it doesn't exist. --&gt;
      &lt;working_dir&gt;
        &lt;dir&gt;/home/joe/managix-workingDir&lt;/dir&gt;
        &lt;NFS&gt;true&lt;/NFS&gt;
      &lt;/working_dir&gt;

      &lt;!-- Directory for Asterix to store worker logs information for each machine.
           Needs to be on the local file system of each machine.
           Managix creates the directory if it doesn't exist.
           This property can be overriden for a node by redefining at the node level. --&gt;
      &lt;log_dir&gt;/mnt/joe/logs&lt;/log_dir&gt;

      &lt;!-- Directory for Asterix to store transaction log information for each machine.
           Needs to be on the local file system of each machine.
           Managix creates the directory if it doesn't exist.
           This property can be overriden for a node by redefining at the node level. --&gt;
      &lt;txn_log_dir&gt;/mnt/joe/txn_logs&lt;/txn_log_dir&gt;

      &lt;!-- Mount point of an iodevice. Use a comma separated list for a machine that
           has multiple iodevices (disks).
           This property can be overriden for a node by redefining at the node level. --&gt;
      &lt;iodevices&gt;/mnt/joe&lt;/iodevices&gt;

      &lt;!-- Path on each iodevice where Asterix will store its data --&gt;
      &lt;store&gt;storage&lt;/store&gt;

      &lt;!-- Java home for each machine --&gt;
      &lt;java_home&gt;/usr/lib/jvm/jdk1.7.0&lt;/java_home&gt;

      &lt;!-- IP addresses of the master machine A --&gt;
      &lt;master_node&gt;
        &lt;id&gt;master&lt;/id&gt;
        &lt;client_ip&gt;128.195.52.177&lt;/client_ip&gt;
        &lt;cluster_ip&gt;192.168.100.0&lt;/cluster_ip&gt;
        &lt;client_port&gt;1098&lt;/client_port&gt;
        &lt;cluster_port&gt;1099&lt;/cluster_port&gt;
        &lt;http_port&gt;8888&lt;/http_port&gt;
      &lt;/master_node&gt;

      &lt;!-- IP address(es) of machine B --&gt;
      &lt;node&gt;
        &lt;id&gt;nodeB&lt;/id&gt;
        &lt;cluster_ip&gt;192.168.100.1&lt;/cluster_ip&gt;
      &lt;/node&gt;

       &lt;!-- IP address(es) of machine C --&gt;
      &lt;node&gt;
        &lt;id&gt;nodeC&lt;/id&gt;
        &lt;cluster_ip&gt;192.168.100.2&lt;/cluster_ip&gt;
      &lt;/node&gt;
    &lt;/cluster&gt;
</pre></div>
<p>As stated before, each of the above properties can be defined at the cluster level, in which case it applies to all the nodes in the system. Each property can also be defined at a node level.</p>
<p>Once we have formed the cluster XML file, we can validate the configuration by doing the following:</p>

<div class="source">
<pre>    managix validate -c rainbow_cluster/rainbow.xml
</pre></div>
<p>This will verify the contents of the file, and also attempt to ssh to each node in the cluster to ensure that password-less SSH is configured correctly. You may see output like</p>

<div class="source">
<pre>    The authenticity of host '192.168.100.1 (192.168.100.1)' can't be established.
    RSA key fingerprint is 89:80:31:1f:be:51:16:d7:2b:f5:e0:b3:2c:bd:83:94.
    Are you sure you want to continue connecting (yes/no)?
</pre></div>
<p>and this output may be repeated for each node in the cluster. Answer &#x201c;yes&#x201d; each time.</p>
<p>If the final output contains the following lines (possibly separated by the RSA prompts mentione above):</p>

<div class="source">
<pre>    INFO: Environment [OK]
    INFO: Cluster configuration [OK]
</pre></div>
<p>it means that the XML configuration file is correct!</p></div>
<div class="section">
<h3>Step (3): Configuring Managix<a name="Step_3:_Configuring_Managix"></a></h3>
<p>Managix uses a configuration XML file at <tt>$MANAGIX_HOME/conf/managix-conf.xml</tt> to configure its own properties, such as its Zookeeper service. We can use the <tt>configure</tt> command to auto-generate this configuration file:</p>

<div class="source">
<pre>    machineA&gt; managix configure
</pre></div>
<p>We use the <tt>validate</tt> command to validate the Managix configuration. To do so, execute the following.</p>

<div class="source">
<pre>    machineA&gt; managix validate
    INFO: Environment [OK]
    INFO: Managix Configuration [OK]
</pre></div>
<p>Note that the <tt>configure</tt> command also generates a cluster configuration XML file at $MANAGIX_HOME/clusters/local/local.xml. This file is not needed in the case of a cluster of machines.</p></div>
<div class="section">
<h3>Step (4): Creating an AsterixDB instance<a name="Step_4:_Creating_an_AsterixDB_instance"></a></h3>
<p>Now that we have configured Managix, we shall next create an AsterixDB instance, which is identified by a unique name and is created using the <tt>create</tt> command. The usage description for the <tt>create</tt> command can be obtained by executing the following:</p>

<div class="source">
<pre>    machineA&gt; managix help -cmd create

     Creates an AsterixDB instance with a specified name. Post creation, the instance is in ACTIVE state,
     indicating its availability for executing statements/queries.
     Usage arguments/options:
     -n Name of the AsterixDB instance.
     -c Path to the cluster configuration file
</pre></div>
<p>We shall now use the <tt>create</tt> command to create an AsterixDB instance called &#x201c;rainbow_asterix&#x201d;. In doing so, we shall use the cluster configuration file that was auto-generated by Managix.</p>

<div class="source">
<pre>    machineA&gt; managix create -n rainbow_asterix -c clusters/rainbow.xml
</pre></div>
<p>If the response message does not have warning, then Congratulations! You have successfully installed AsterixDB on this cluster of machines!</p>
<p>Please refer to the section <a href="#Section_4:_Managing_the_Lifecycle_of_an_AsterixDB_Instance">Managing the Lifecycle of an AsterixDB Instance</a> for a detailed description on the set of available commands/operations that let you manage the lifecycle of an AsterixDB instance. Note that the output of the commands varies with the cluster definition and may not apply to the cluster specification you built above.</p></div></div>
<div class="section">
<h2><a name="Section4ManagingTheLifecycleOfAnAsterixDBInstance" id="Section4ManagingTheLifecycleOfAnAsterixDBInstance">Section 4: Managing the Lifecycle of an AsterixDB Instance</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Section_4:_Managing_the_Lifecycle_of_an_AsterixDB_Instance_Back_to_TOC"></a></h2>
<p>Now that we have an AsterixDB instance running, let us use Managix to manage the instance&#x2019;s lifecycle. Managix provides the following set of commands/operations:</p>
<div class="section">
<div class="section">
<h4>Managix Commands<a name="Managix_Commands"></a></h4>

<table border="0" class="table table-striped">

<tr class="a">
<td>Command</td>  
<td>Description</td></tr>

<tr class="b">
<td><a href="#Creating_an_AsterixDB_instance">create</a></td>   
<td>Creates a new asterix instance.</td></tr>

<tr class="a">
<td><a href="#Describe_Command">describe</a></td> 
<td>Describes an existing asterix instance.</td></tr>

<tr class="b">
<td><a href="#Stop_Command">stop</a></td>     
<td>Stops an asterix instance that is in the ACTIVE state.</td></tr>

<tr class="a">
<td><a href="#Start_Command">start</a></td>    
<td>Starts an AsterixDB instance.</td></tr>

<tr class="b">
<td><a href="#Backup_Command">backup</a></td>   
<td>Creates a backup for an existing AsterixDB instance.</td></tr>

<tr class="a">
<td><a href="#Restore_Command">restore</a></td>  
<td>Restores an AsterixDB instance.</td></tr>

<tr class="b">
<td><a href="#Delete_Command">delete</a></td>   
<td>Deletes an AsterixDB instance.</td></tr>

<tr class="a">
<td><a href="#Configuring_Managix">validate</a></td> 
<td>Validates the installer/cluster configuration.</td></tr>

<tr class="b">
<td><a href="#Configuring_Managix">configure</a></td>
<td>Auto generates a configuration for an AsterixDB instance.</td></tr>

<tr class="a">
<td><a href="#Log_Command">log</a></td>
<td>Produces a zip archive containing log files from each node in an AsterixDB instance.</td></tr>

<tr class="b">
<td><a href="#Shutdown_Command">shutdown</a></td> 
<td>Shuts down the installer service.</td></tr>
</table>
<p>You may obtain the above listing by simply executing &#x2018;managix&#x2019; :</p>

<div class="source">
<pre>    $ managix
</pre></div>
<p>We already talked about <tt>create</tt> and <tt>validate</tt> commands. We shall next explain the rest of the commands listed above. We also provide sample output messages of these commands assuming we are running an AsterixDB instance on a single machine.</p>
<div class="section">
<h5>Describe Command<a name="Describe_Command"></a></h5>
<p>The <tt>describe</tt> command provides information about an AsterixDB instance. The usage can be looked up by executing the following:</p>

<div class="source">
<pre>     $ managix help -cmd describe

        Provides information about an AsterixDB instance.
        The following options are available:
        [-n]      Name of the AsterixDB instance.
        [-admin]  Provides a detailed description
</pre></div>
<p>The brackets indicate optional flags.</p>
<p>The output of the <tt>describe</tt> command when used without the <tt>admin</tt> flag contains minimal information and is similar to the output of the <tt>create</tt> command. Let us try running the describe command in &#x201c;admin&#x201d; mode.</p>

<div class="source">
<pre>     $ managix describe -n my_asterix -admin
     INFO: Name:my_asterix
     Created:Thu Mar 07 19:07:00 PST 2013
     Web-Url:http://127.0.0.1:19001
     State:ACTIVE
     Master node:master:127.0.0.1
     node1:127.0.0.1

     Asterix version:0.0.5
     Asterix Configuration
     output_dir = /tmp/asterix_output/
     Metadata Node:node1
     Processes
     NC at 127.0.0.1 [ 22195 ]
     CC at 127.0.0.1 [ 22161 ]

     Asterix Configuration
       nc.java.opts                             :-Xmx1024m
       cc.java.opts                             :-Xmx1024m
       storage.buffercache.pagesize             :32768
       storage.buffercache.size                 :33554432
       storage.buffercache.maxopenfiles         :214748364
       storage.memorycomponent.pagesize         :32768
       storage.memorycomponent.numpages         :1024
       storage.memorycomponent.globalbudget     :536870192
       storage.lsm.mergethreshold               :3
       storage.lsm.bloomfilter.falsepositiverate:0.01
       txn.log.buffer.numpages                  :8
       txn.log.buffer.pagesize                  :131072
       txn.log.partitionsize                    :2147483648
       txn.log.disksectorsize                   :4096
       txn.log.groupcommitinterval              :1
       txn.log.checkpoint.lsnthreshold          :67108864
       txn.log.checkpoint.pollfrequency         :120
       txn.log.checkpoint.history               :0
       txn.lock.escalationthreshold             :1000
       txn.lock.shrinktimer                     :5000
       txn.lock.timeout.waitthreshold           :60000
       txn.lock.timeout.sweepthreshold          :10000
       compiler.sortmemory                      :33554432
       compiler.joinmemory                      :33554432
       compiler.framesize                       :32768
       web.port                                 :19001
       api.port                                 :19002
       log.level                                :INFO
</pre></div>
<p>As seen above, the instance &#x2018;my_asterix&#x2019; is configured such that all processes running at the localhost (127.0.0.1). The process id for each process (JVM) is shown next to it.</p></div>
<div class="section">
<h5>Stop Command<a name="Stop_Command"></a></h5>
<p>The <tt>stop</tt> command can be used for shutting down an AsterixDB instance. After that, the instance is unavailable for executing queries. The usage can be looked up by executing the following.</p>

<div class="source">
<pre>     $ managix help -cmd stop

     Shuts an AsterixDB instance that is in ACTIVE state. After executing the stop command, the AsterixDB instance transits
     to the INACTIVE state, indicating that it is no longer available for executing queries.

     Available arguments/options
     -n name of the AsterixDB instance.
</pre></div>
<p>To stop the AsterixDB instance.</p>

<div class="source">
<pre>     $ managix stop -n my_asterix
       INFO: Stopped AsterixDB instance: my_asterix


     $ managix describe -n my_asterix
       INFO: Name: my_asterix
       Created:Thu Mar 07 19:07:00 PST 2013
       Web-Url:http://127.0.0.1:19001
       State:INACTIVE (Fri Mar 08 09:49:00 PST 2013)
</pre></div></div>
<div class="section">
<h5>Start Command<a name="Start_Command"></a></h5>
<p>The <tt>start</tt> command starts an AsterixDB instance that is in the INACTIVE state. The usage can be looked up by executing the following:</p>

<div class="source">
<pre>     $ managix help -cmd start

     Starts an AsterixDB instance that is in INACTIVE state. After executing the start command, the AsterixDB instance transits to the ACTIVE state,  indicating that it is now available for executing statements/queries.

     Available arguments/options
     -n name of the AsterixDB instance.
</pre></div>
<p>Let us now start the AsterixDB instance.</p>

<div class="source">
<pre>     $ managix start -n my_asterix
       INFO: Name:my_asterix
       Created:Thu Mar 07 19:07:00 PST 2013
       Web-Url:http://127.0.0.1:19001
       State:ACTIVE (Fri Mar 08 09:49:00 PST 2013)
</pre></div></div>
<div class="section">
<h5>Backup Command<a name="Backup_Command"></a></h5>
<p>The backup command allows you to take a backup of the data stored with an AsterixDB instance. The backup can be taken on the local file system or on an HDFS instance. In either case, the snapshots are stored under a backup directory. You need to make sure the backup directory has appropriate read/write permissions. Configuring settings for backup can be found inside the Managix&#x2019;s configuration file located at <tt>$MANAGIX_HOME/conf/managix-conf.xml</tt>.</p>
<p><i>Configuring backup on the local file system</i></p>
<p>We need to provide a path to a backup directory on the local file system. The backup directory can be configured be editing the Managix configuration XML, found at <tt>$MANAGIX_HOME/conf/managix-conf.xml</tt>.</p>

<div class="source">
<pre>    &lt;backup&gt;
      &lt;backupDir&gt;Provide path to the backup directory here&lt;/backupDir&gt;
    &lt;/backup&gt;
</pre></div>
<p>Prior to taking a backup of an AsterixDB instance, it is required for the instance to be in the INACTIVE state. We do so by using the <tt>stop</tt> command, as shown below:</p>

<div class="source">
<pre>    $ managix stop -n my_asterix
      INFO: Stopped AsterixDB instance: my_asterix
</pre></div>
<p>We can now take the backup by executing the following:</p>

<div class="source">
<pre>    $ managix backup -n my_asterix
      INFO: my_asterix backed up 0_Fri Mar 08 16:16:34 PST 2013 (LOCAL)
</pre></div>
<p><i>Configuring backup on an HDFS instance</i></p>
<p>To configure a backup to be taken on an HDFS instance, we need to provide required information about the running HDFS instance. This information includes the HDFS version and the HDFS url. Simply edit the Managix configuration file and provide the required information.</p>

<div class="source">
<pre>    &lt;backup&gt;
       &lt;backupDir&gt;Provide path to the backup directory here&lt;/backupDir&gt;
       &lt;hdfs&gt;
           &lt;version&gt;0.20.2&lt;/version&gt;
           &lt;url&gt;&lt;/url&gt;
       &lt;/hdfs&gt;
    &lt;/backup&gt;
</pre></div>
<p>A sample output when a backup is taken on an HDFS is shown below:</p>

<div class="source">
<pre>    $ managix backup -n my_asterix
      INFO: my_asterix backed up 1_Fri Mar 08 17:10:38 PST 2013 (HDFS)
</pre></div>
<p>Each time we take a backup, we are provided with a unique id (a monotonically increasing value starting with 0). This id is required when we need to restore from a previously taken backup. Information about all available backup snapshots can be obtained by using the <tt>describe</tt> command in the admin mode, as shown below:</p>

<div class="source">
<pre>     $ managix describe -n my_asterix -admin
     INFO: Name:my_asterix
     Created:Fri Mar 08 15:11:12 PST 2013
     Web-Url:http://127.0.0.1:19001
     State:INACTIVE (Fri Mar 08 16:14:20 PST 2013)
     Master node:master:127.0.0.1
     node1:127.0.0.1

     Backup:0 created at Fri Mar 08 16:16:34 PST 2013 (LOCAL)
     Backup:1 created at Fri Mar 08 17:10:38 PST 2013 (HDFS)

     Asterix version:0.0.5
     Asterix Configuration
     Metadata Node:node1
     Processes
</pre></div>
<p>The above output shows the available backup identified by it&#x2019;s id (0). We shall next describe the method for restoring an AsterixDB instance from a backup snapshot.</p></div>
<div class="section">
<h5>Restore Command<a name="Restore_Command"></a></h5>
<p>The <tt>restore</tt> command allows you to restore an AsterixDB instance&#x2019;s data from a previously taken backup. The usage description can be obtained as follows:</p>

<div class="source">
<pre>      $ managix help -cmd restore

      Restores an AsterixDB instance's data from a previously taken backup.
      Available arguments/options

      -n name of the AsterixDB instance
      -b id of the backup snapshot
</pre></div>
<p>The following command restores our AsterixDB instance from the backup snapshot identified by the id (0). Prior to restoring an instance from a backup, it is required that the instance is in the INACTIVE state.</p>

<div class="source">
<pre>     $ managix restore -n my_asterix -b 0
     INFO: AsterixDB instance: my_asterix has been restored from backup
</pre></div>
<p>You can start the AsterixDB instance by using the start command.</p></div>
<div class="section">
<h5>Log Command<a name="Log_Command"></a></h5>
<p>The <tt>log</tt> command allows you to collect the log files coresponding to each node of an AsterixDB instance into a zip archive. The zip archive is produced on the local file system of the machine running managix. </p>

<div class="source">
<pre>      $ managix help -cmd log

      Creates a zip archive containing log files corresponding to each worker node (NC) and the master (CC)  for an AsterixDB instance

      Available arguments/options
      -n name of the AsterixDB instance. 
      -d destination directory for producing the zip archive. Defaults to $MANAGIX_HOME/logdump.
</pre></div>
<p>The following is an example showing the use of the log command. </p>

<div class="source">
<pre>     $ managix log -n my_asterix -d  /Users/joe/logdump
     INFO: Log zip archive created at /Users/joe/logdump/log_Thu_Jun_06_00:53:51_PDT_2013.zip
</pre></div></div>
<div class="section">
<h5>Delete Command<a name="Delete_Command"></a></h5>
<p>As the name suggests, the <tt>delete</tt> command permanently removes an AsterixDB instance by cleaning up all associated data/artifacts. The usage can be looked up by executing the following:</p>

<div class="source">
<pre>      $ managix help -cmd delete
      Permanently deletes an AsterixDB instance. The instance must be in the INACTIVE state.

      Available arguments/options
      -n name of the AsterixDB instance.


      $ managix delete -n my_asterix
       INFO: AsterixDB instance my_asterix deleted.
</pre></div></div>
<div class="section">
<h5>Shutdown Command<a name="Shutdown_Command"></a></h5>
<p>Managix uses Zookeeper service for storing all information about created AsterixDB instances. The Zookeeper service runs in the background and can be shut down using the <tt>shutdown</tt> command.</p>

<div class="source">
<pre>      $ managix shutdown
</pre></div></div>
<div class="section">
<h5>Help Command<a name="Help_Command"></a></h5>
<p>The <tt>help</tt> command provides a usage description of a Managix command.</p>

<div class="source">
<pre>    $ managix help -cmd &lt;command name&gt;
</pre></div>
<p>As an example, for looking up the help for the <tt>configure</tt> command, execute the following</p>

<div class="source">
<pre>    $ managix help -cmd configure

    Auto-generates the AsterixDB installer configruation settings and AsterixDB cluster
    configuration settings for a single node setup.
</pre></div></div></div></div></div>
<div class="section">
<h2><a name="Section5FAQ" id="Section5FAQ">Section 5: Frequently Asked Questions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Section_5:_Frequently_Asked_Questions_Back_to_TOC"></a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5>Question<a name="Question"></a></h5>
<p>What happens if a machine acting as a node in the Asterix cluster becomes unreachable for some reason (network partition/machine failure) ?</p></div>
<div class="section">
<h5>Answer<a name="Answer"></a></h5>
<p>When a node leaves the Asterix cluster, the AsterixDB instance transits to an &#x2018;UNUSABLE&#x2019; state, indicating that it is no longer available for serving queries. To know which set of node(s) left the cluster, run the describe command with -admin flag. </p>

<div class="source">
<pre>    $ $MANAGIX_HOME/bin/managix describe -n &lt;name of the AsterixDB instance&gt;-admin
</pre></div>
<p>Above command will show the state of AsterixDB instance and list the set of nodes that have left the cluster. </p>
<p>The failed node must be brought back to re-join the cluster. Once done, you may bring back the instance to an &#x2018;ACTIVE&#x2019; state by executing the following sequence. </p>
<p>1) Get rid of the Asterix processes running on the nodes in the cluster:-</p>

<div class="source">
<pre>    managix stop -n my_asterix
</pre></div>
<p>The processes associated with the instance are terminated and the instance moves to the INACTIVE state.</p>
<p>2) Start the AsterixDB instance using the start command.</p>

<div class="source">
<pre>    managix start -n &lt;name of your AsterixDB instance&gt;
</pre></div></div>
<div class="section">
<h5>Question<a name="Question"></a></h5>
<p>Do I need to create all the directories/paths I put into the cluster configuration XML ?</p></div>
<div class="section">
<h5>Answer<a name="Answer"></a></h5>
<p>Managix will create a path if it is not existing. It does so using the user account mentioned in the cluster configuration xml. Please ensure that the user account has appropriate permissions for creating the missing paths. </p></div>
<div class="section">
<h5>Question<a name="Question"></a></h5>
<p>Should MANAGIX_HOME be on the network file system (NFS) ?</p></div>
<div class="section">
<h5>Answer<a name="Answer"></a></h5>
<p>It is recommended that MANAGIX_HOME is not on the NFS. Managix produces artifacts/logs on disk which are not required to be shared. As such an overhead in creating the artifacts/logs on the NFS should be avoided.</p></div>
<div class="section">
<h5>Question<a name="Question"></a></h5>
<p>How do we change the underlying code (apply a code patch) for an &#x2018;active&#x2019; asterix instance?</p></div>
<div class="section">
<h5>Answer<a name="Answer"></a></h5>
<p>At times, end-user (particularly asterix developer) may run into the need to altering the underlying code that is being run by an asterix instance. In the current version of managix, this can be achieved as follows:-</p>
<p>Assume that you have an &#x2018;active&#x2019; instance by the name a1 that is running version v1 of asterix. You have a revised version of asterix - v2 that fixes some bug(s).</p>
<p>To upgrade asterix from v1 to v2:-</p>
<p>step 1) managix stop -n a1</p>
<p>step 2) managix shutdown</p>
<p>step 3) copy asterix-server zip (version v2) to asterix/</p>
<p>step 4) managix start -n a1</p>
<p>a1 now is running on version v2.</p>
<p>Limitations:-</p>
<p>a) Obviously this wont work in a situation where v2 has made a change that is incompatible with earlier version, such altering schema.</p>
<p>b) A change in asterix zip applies to all existing instances (after a restart) and subsequent instances that user creates.</p></div></div></div></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                   2015.
          All Rights Reserved.      
                    
      </div>

                                                                  <?xml version="1.0" encoding="UTF-8"?>
<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
        feather logo, and the Apache AsterixDB project logo are either
        registered trademarks or trademarks of The Apache Software
        Foundation in the United States and other countries.
        All other marks mentioned may be trademarks or registered
        trademarks of their respective owners.</div>
                  
        
                </div>
    </footer>
  </body>
</html>
