<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2016-03-25
 | 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="20160325" />
    <meta http-equiv="Content-Language" content="en" />
    <title>AsterixDB &#x2013; Introduction</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>

                          
        
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-41536543-1', 'uci.edu');
        ga('send', 'pageview');</script>
          
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                    <a href="http://asterixdb.apache.org/" id="bannerLeft">
                                                                                                <img src="images/asterixlogo.png"  alt="AsterixDB"/>
                </a>
                      </div>
        <div class="pull-right">  </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2016-03-25</li>
                      
                
                    
                 <li id="projectVersion" class="pull-right">Version: 0.8.8-incubating</li>
      
                                            <li class="divider pull-right">|</li>
                        
    <li class="pull-right">              <a href="index.html" title="Documentation Home">
        Documentation 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">Documentation</li>
                                
      <li class="active">
    
            <a href="#"><i class="none"></i>Installing and Managing AsterixDB using Managix</a>
          </li>
                  
      <li>
    
                          <a href="yarn.html" title="Deploying AsterixDB using YARN">
          <i class="none"></i>
        Deploying AsterixDB using YARN</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/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="feeds/tutorial.html" title="Support for Data Ingestion in AsterixDB">
          <i class="none"></i>
        Support for Data Ingestion in AsterixDB</a>
            </li>
                  
      <li>
    
                          <a href="udf.html" title="Support for User Defined Functions in AsterixDB">
          <i class="none"></i>
        Support for User Defined Functions in AsterixDB</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="HTTP API to AsterixDB">
          <i class="none"></i>
        HTTP 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="https://code.google.com/p/hyracks/" title="Hyracks" class="builtBy">
        <img class="builtBy"  alt="Hyracks" src="images/hyrax_ts.png"    />
      </a>
                      </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <!-- ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 ! --><h1>Introduction</h1>
<div class="section">
<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">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="Prerequisites_for_Installing_AsterixDB_Back_to_TOC"></a><a name="PrerequisitesForInstallingAsterixDB" id="PrerequisitesForInstallingAsterixDB">Prerequisites for Installing AsterixDB</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></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">
<div class="source">
<pre>    $ java -version
</pre></div></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">
<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></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">
<div class="source">
<pre>    $ java -version
</pre></div></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">
<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>
<div class="section">
<h2><a name="Section_1:_Single-Machine_AsterixDB_installation_Back_to_TOC"></a><a name="Section1SingleMachineAsterixDBInstallation" id="Section1SingleMachineAsterixDBInstallation">Section 1: Single-Machine AsterixDB installation</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></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><a name="Configuring_Environment"></a>Configuring Environment</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">
<div class="source">
<pre>    $ echo $JAVA_HOME
</pre></div></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">
<div class="source">
<pre>    export JAVA_HOME=&lt;Path to Java installation directory&gt;
</pre></div></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">
<div class="source">
<pre>    $ source /home/joe/.bash_profile (or /home/joe/.bashrc)
</pre></div></div>
<p>Before proceeding, verify that JAVA_HOME is defined by executing the following:</p>

<div class="source">
<div class="source">
<pre>    $ echo $JAVA_HOME
</pre></div></div></div>
<div class="section">
<h3><a name="Configuring_SSH"></a>Configuring SSH</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><a name="Enabling_SSH_on_Mac"></a>Enabling SSH on Mac</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><a name="Enabling_SSH_on_Linux"></a>Enabling SSH on Linux</h4>

<div class="source">
<div class="source">
<pre>    sudo apt-get install openssh-server
</pre></div></div>
<p>Assumming that you have enabled SSH on your system, let us proceed.</p></div>
<div class="section">
<h4><a name="Configuring_Password-less_SSH"></a>Configuring Password-less SSH</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">
<div class="source">
<pre>     $ ssh 127.0.0.1
</pre></div></div>
<p>If you get an output similar to one shown below, type &#x201c;yes&#x201d; and press enter.</p>

<div class="source">
<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></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">
<div class="source">
<pre>    $ ssh 127.0.0.1
    Last login: Sat Mar 23 22:52:49 2013
</pre></div></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">
<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></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">
<div class="source">
<pre>    /home/joe/.ssh/id_rsa already exists.
    Overwrite (y/n)?
</pre></div></div>
<p>You should see an output similar to one shown below:</p>

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

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

<div class="source">
<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></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">
<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></div>
<p>You should now be able to log in without being prompted for a password or a response.</p>

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

<div class="source">
<div class="source">
<pre>    $ exit
    logout
    Connection to 127.0.0.1 closed.
</pre></div></div></div></div>
<div class="section">
<h3><a name="Configuring_Managix"></a>Configuring Managix</h3>
<p>You will need the AsterixDB installer (a.k.a. Managix). Download Managix from <a class="externalLink" href="https://asterixdb.apache.org/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">
<div class="source">
<pre>     /home/joe/asterix-mgmt&gt; $ managix configure
</pre></div></div>
<p>Let us do a sample run to validate the set of configuration files auto-generated by Managix.</p>

<div class="source">
<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>
<div class="section">
<h3><a name="Creating_an_AsterixDB_instance"></a>Creating an AsterixDB instance</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">
<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></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">
<div class="source">
<pre>     $ managix create -n my_asterix -c clusters/local/local.xml
</pre></div></div>
<p>A sample output of the above command is shown below:</p>

<div class="source">
<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></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">
<div class="source">
<pre>    let $message := 'Hello World!'
    return $message
</pre></div></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="Section_2:_Single-Machine_AsterixDB_installation_Advanced_Back_to_TOC"></a><a name="Section2SingleMachineAsterixDBInstallationAdvanced" id="Section2SingleMachineAsterixDBInstallationAdvanced">Section 2: Single-Machine AsterixDB installation (Advanced)</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></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><a name="AsterixDB_Runtime"></a>AsterixDB Runtime</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><a name="AsterixDB_Runtime_Configuration"></a>AsterixDB Runtime Configuration</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">
<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></div>
<p>We shall next explain the components of the cluster configuration XML file.</p></div>
<div class="section">
<h4><a name="a1_Defining_nodes_in_AsterixDB_runtime"></a>(1) Defining nodes in AsterixDB runtime</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">
<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></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><a name="a2_Properties_associated_with_a_worker_node_NC_in_AsterixDB"></a>(2) Properties associated with a worker node (NC) in AsterixDB</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><a name="a3_Working_directory_of_an_AsterixDB_instance"></a>(3) Working directory of an AsterixDB instance</h4>
<p>Next we explain the following setting in the file $MANAGIX_HOME/clusters/local/local.xml.</p>

<div class="source">
<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></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><a name="Managix_Configuration"></a>Managix Configuration</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">
<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></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="Section_3:_Installing_AsterixDB_on_a_Cluster_of_Multiple_MachinesBack_to_TOC"></a><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></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="images/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><a name="Step_1:_Configure_SSH"></a>Step (1): Configure SSH</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">
<div class="source">
<pre>    machineA&gt; ssh 127.0.0.1
</pre></div></div>
<p>If you get an output similar to one shown below, type &#x201c;yes&#x201d; and press enter.</p>

<div class="source">
<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></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">
<div class="source">
<pre>    $ ssh 127.0.0.1
    Last login: Sat Mar 23 22:52:49 2013
</pre></div></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">
<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></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">
<div class="source">
<pre>    cd ~/.ssh
    cat id_rsa.pub &gt;&gt; authorized_keys
    chmod 700  $HOME/.ssh/authorized_keys
</pre></div></div>
<p>Then run the following step again and type &#x201c;yes&#x201d; if prompted:</p>

<div class="source">
<div class="source">
<pre>    machineA&gt; ssh 127.0.0.1
</pre></div></div></div>
<div class="section">
<h3><a name="Step_2:_Define_the_AsterixDB_cluster"></a>Step (2): Define the AsterixDB cluster</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="https://asterixdb.apache.org/download.html">here</a> (save as above), then do the following steps similar to the single-machine case described above:</p>

<div class="source">
<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></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">
<div class="source">
<pre>    machineA&gt; mkdir asterix-mgmt/rainbow_cluster
</pre></div></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">
<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></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">
<div class="source">
<pre>    managix validate -c rainbow_cluster/rainbow.xml
</pre></div></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">
<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></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">
<div class="source">
<pre>    INFO: Environment [OK]
    INFO: Cluster configuration [OK]
</pre></div></div>
<p>it means that the XML configuration file is correct!</p></div>
<div class="section">
<h3><a name="Step_3:_Configuring_Managix"></a>Step (3): Configuring Managix</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">
<div class="source">
<pre>    machineA&gt; managix configure
</pre></div></div>
<p>We use the <tt>validate</tt> command to validate the Managix configuration. To do so, execute the following.</p>

<div class="source">
<div class="source">
<pre>    machineA&gt; managix validate
    INFO: Environment [OK]
    INFO: Managix Configuration [OK]
</pre></div></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><a name="Step_4:_Creating_an_AsterixDB_instance"></a>Step (4): Creating an AsterixDB instance</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">
<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></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">
<div class="source">
<pre>    machineA&gt; managix create -n rainbow_asterix -c clusters/rainbow.xml
</pre></div></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="Section_4:_Managing_the_Lifecycle_of_an_AsterixDB_Instance_Back_to_TOC"></a><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></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><a name="Managix_Commands"></a>Managix Commands</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">
<div class="source">
<pre>    $ managix
</pre></div></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><a name="Describe_Command"></a>Describe Command</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">
<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></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">
<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></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><a name="Stop_Command"></a>Stop Command</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">
<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></div>
<p>To stop the AsterixDB instance.</p>

<div class="source">
<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>
<div class="section">
<h5><a name="Start_Command"></a>Start Command</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">
<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></div>
<p>Let us now start the AsterixDB instance.</p>

<div class="source">
<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>
<div class="section">
<h5><a name="Backup_Command"></a>Backup Command</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">
<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></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">
<div class="source">
<pre>    $ managix stop -n my_asterix
      INFO: Stopped AsterixDB instance: my_asterix
</pre></div></div>
<p>We can now take the backup by executing the following:</p>

<div class="source">
<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></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">
<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></div>
<p>A sample output when a backup is taken on an HDFS is shown below:</p>

<div class="source">
<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></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">
<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></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><a name="Restore_Command"></a>Restore Command</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">
<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></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">
<div class="source">
<pre>     $ managix restore -n my_asterix -b 0
     INFO: AsterixDB instance: my_asterix has been restored from backup
</pre></div></div>
<p>You can start the AsterixDB instance by using the start command.</p></div>
<div class="section">
<h5><a name="Log_Command"></a>Log Command</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">
<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></div>
<p>The following is an example showing the use of the log command. </p>

<div class="source">
<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>
<div class="section">
<h5><a name="Delete_Command"></a>Delete Command</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">
<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>
<div class="section">
<h5><a name="Shutdown_Command"></a>Shutdown Command</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">
<div class="source">
<pre>      $ managix shutdown
</pre></div></div></div>
<div class="section">
<h5><a name="Help_Command"></a>Help Command</h5>
<p>The <tt>help</tt> command provides a usage description of a Managix command.</p>

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

<div class="source">
<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>
<div class="section">
<h2><a name="Section_5:_Frequently_Asked_Questions_Back_to_TOC"></a><a name="Section5FAQ" id="Section5FAQ">Section 5: Frequently Asked Questions</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Question"></a>Question</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><a name="Answer"></a>Answer</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">
<div class="source">
<pre>    $ $MANAGIX_HOME/bin/managix describe -n &lt;name of the AsterixDB instance&gt;-admin
</pre></div></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">
<div class="source">
<pre>    managix stop -n my_asterix
</pre></div></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">
<div class="source">
<pre>    managix start -n &lt;name of your AsterixDB instance&gt;
</pre></div></div></div>
<div class="section">
<h5><a name="Question"></a>Question</h5>
<p>Do I need to create all the directories/paths I put into the cluster configuration XML ?</p></div>
<div class="section">
<h5><a name="Answer"></a>Answer</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><a name="Question"></a>Question</h5>
<p>Should MANAGIX_HOME be on the network file system (NFS) ?</p></div>
<div class="section">
<h5><a name="Answer"></a>Answer</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><a name="Question"></a>Question</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><a name="Answer"></a>Answer</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;                    2016
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            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>
