http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/bf2c56b0/docs/0.9.0/install.html
----------------------------------------------------------------------
diff --git a/docs/0.9.0/install.html b/docs/0.9.0/install.html
new file mode 100644
index 0000000..5d80d03
--- /dev/null
+++ b/docs/0.9.0/install.html
@@ -0,0 +1,1315 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-01-24
+ | 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="20170124" />
+    <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-24</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>

Reply via email to