<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2017-01-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="20170125" />
    <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="./" 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: 2017-01-25</li>
                      
                
                    
                 <li id="projectVersion" class="pull-right">Version: 0.9.0</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">Get Started - Installation</li>
                                
      <li>
    
                          <a href="ncservice.html" title="Option 1: using NCService">
          <i class="none"></i>
        Option 1: using NCService</a>
            </li>
                  
      <li class="active">
    
            <a href="#"><i class="none"></i>Option 2: using Managix</a>
          </li>
                  
      <li>
    
                          <a href="yarn.html" title="Option 3: using YARN">
          <i class="none"></i>
        Option 3: using YARN</a>
            </li>
                              <li class="nav-header">AsterixDB Primer</li>
                                
      <li>
    
                          <a href="sqlpp/primer-sqlpp.html" title="Option 1: using SQL++">
          <i class="none"></i>
        Option 1: using SQL++</a>
            </li>
                  
      <li>
    
                          <a href="aql/primer.html" title="Option 2: using AQL">
          <i class="none"></i>
        Option 2: using AQL</a>
            </li>
                              <li class="nav-header">Data Model</li>
                                
      <li>
    
                          <a href="datamodel.html" title="The Asterix Data Model">
          <i class="none"></i>
        The Asterix Data Model</a>
            </li>
                              <li class="nav-header">Queries - SQL++</li>
                                
      <li>
    
                          <a href="sqlpp/manual.html" title="The SQL++ Query Language">
          <i class="none"></i>
        The SQL++ Query Language</a>
            </li>
                  
      <li>
    
                          <a href="sqlpp/builtins.html" title="Builtin Functions">
          <i class="none"></i>
        Builtin Functions</a>
            </li>
                              <li class="nav-header">Queries - AQL</li>
                                
      <li>
    
                          <a href="aql/manual.html" title="The Asterix Query Language (AQL)">
          <i class="none"></i>
        The Asterix Query Language (AQL)</a>
            </li>
                  
      <li>
    
                          <a href="aql/builtins.html" title="Builtin Functions">
          <i class="none"></i>
        Builtin Functions</a>
            </li>
                              <li class="nav-header">Advanced Features</li>
                                
      <li>
    
                          <a href="aql/similarity.html" title="Support of Similarity Queries">
          <i class="none"></i>
        Support of Similarity Queries</a>
            </li>
                  
      <li>
    
                          <a href="aql/fulltext.html" title="Support of Full-text Queries">
          <i class="none"></i>
        Support of Full-text 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">
          <i class="none"></i>
        Support for Data Ingestion</a>
            </li>
                  
      <li>
    
                          <a href="udf.html" title="User Defined Functions">
          <i class="none"></i>
        User Defined Functions</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 class="nav-header">API/SDK</li>
                                
      <li>
    
                          <a href="api.html" title="HTTP API">
          <i class="none"></i>
        HTTP API</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                                                                                                                         <a href="./" title="AsterixDB" class="builtBy">
        <img class="builtBy"  alt="AsterixDB" src="images/asterixlogo.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;=8</a>.</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.8.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.8.0_60&quot;
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
</pre></div></div>
<p>If you need to upgrade or install java, please follow <a class="externalLink" href="http://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html">Oracle&#x2019;s instructions</a>. The installation directory for</p>

<ul>
  
<li>
<p>Linux would be at a path under <tt>/usr/lib/jvm/[jdk-version]</tt>.</p></li>
  
<li>
<p>Mac would be <tt>/Library/Java/JavaVirtualMachines/[jdk-version]/Contents/Home</tt>.</p></li>
</ul>
<p>The java installation directory is referred as <tt>JAVA_HOME</tt>. Since we upgraded/installed Java, we need to ensure <tt>JAVA_HOME</tt> points to the installation directory of JDK. Modify your ~/.bash_profile (or ~/.bashrc) and define <tt>JAVA_HOME</tt> 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.8, 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 <tt>JAVA_HOME</tt> 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, <tt>JAVA_HOME</tt> 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 <tt>JAVA_HOME</tt> 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. 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="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">
<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.8.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="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">
<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.8.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;                    2017
                        <a href="https://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>
