http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/9c40a66d/content/docs/0.9.3/aql/similarity.html
----------------------------------------------------------------------
diff --git a/content/docs/0.9.3/aql/similarity.html 
b/content/docs/0.9.3/aql/similarity.html
new file mode 100644
index 0000000..5a69645
--- /dev/null
+++ b/content/docs/0.9.3/aql/similarity.html
@@ -0,0 +1,472 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2018-02-09
+ | 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="20180209" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; AsterixDB Support of Similarity Queries</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: 2018-02-09</li>
+                      
+                
+                    
+                 <li id="projectVersion" class="pull-right">Version: 0.9.3</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>
+    
+                          <a href="../ansible.html" title="Option 2: using 
Ansible">
+          <i class="none"></i>
+        Option 2: using Ansible</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../aws.html" title="Option 3: using Amazon 
Web Services">
+          <i class="none"></i>
+        Option 3: using Amazon Web Services</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../yarn.html" title="Option 4: using YARN">
+          <i class="none"></i>
+        Option 4: using YARN</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../install.html" title="Option 5: using 
Managix (deprecated)">
+          <i class="none"></i>
+        Option 5: using Managix (deprecated)</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">API/SDK</li>
+                                
+      <li>
+    
+                          <a href="../api.html" title="HTTP API">
+          <i class="none"></i>
+        HTTP API</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../csv.html" title="CSV Output">
+          <i class="none"></i>
+        CSV Output</a>
+            </li>
+                              <li class="nav-header">Advanced Features</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="active">
+    
+            <a href="#"><i class="none"></i>Support of Similarity Queries</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>AsterixDB Support of Similarity Queries</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="#Motivation">Motivation</a></li>
+  
+<li><a href="#DataTypesAndSimilarityFunctions">Data Types and Similarity 
Functions</a></li>
+  
+<li><a href="#SimilaritySelectionQueries">Similarity Selection Queries</a></li>
+  
+<li><a href="#SimilarityJoinQueries">Similarity Join Queries</a></li>
+  
+<li><a href="#UsingIndexesToSupportSimilarityQueries">Using Indexes to Support 
Similarity Queries</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Motivation_Back_to_TOC"></a><a name="Motivation" 
id="Motivation">Motivation</a> <font size="4"><a href="#toc">[Back to 
TOC]</a></font></h2>
+<p>Similarity queries are widely used in applications where users need to find 
objects that satisfy a similarity predicate, while exact matching is not 
sufficient. These queries are especially important for social and Web 
applications, where errors, abbreviations, and inconsistencies are common. As 
an example, we may want to find all the movies starring Schwarzenegger, while 
we don&#x2019;t know the exact spelling of his last name (despite his 
popularity in both the movie industry and politics :-)). As another example, we 
want to find all the Facebook users who have similar friends. To meet this type 
of needs, AsterixDB supports similarity queries using efficient indexes and 
algorithms.</p></div>
+<div class="section">
+<h2><a name="Data_Types_and_Similarity_Functions_Back_to_TOC"></a><a 
name="DataTypesAndSimilarityFunctions" 
id="DataTypesAndSimilarityFunctions">Data Types and Similarity Functions</a> 
<font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>AsterixDB supports <a class="externalLink" 
href="http://en.wikipedia.org/wiki/Levenshtein_distance";>edit distance</a> (on 
strings) and <a class="externalLink" 
href="http://en.wikipedia.org/wiki/Jaccard_index";>Jaccard</a> (on sets). For 
instance, in our <a 
href="primer.html#ADM:_Modeling_Semistructed_Data_in_AsterixDB">TinySocial</a> 
example, the <tt>friend-ids</tt> of a Facebook user forms a set of friends, and 
we can define a similarity between the sets of friends of two users. We can 
also convert a string to a set of grams of a length &#x201c;n&#x201d; (called 
&#x201c;n-grams&#x201d;) and define the Jaccard similarity between the two gram 
sets of the two strings. Formally, the &#x201c;n-grams&#x201d; of a string are 
its substrings of length &#x201c;n&#x201d;. For instance, the 3-grams of the 
string <tt>schwarzenegger</tt> are <tt>sch</tt>, <tt>chw</tt>, <tt>hwa</tt>, 
&#x2026;, <tt>ger</tt>.</p>
+<p>AsterixDB provides <a 
href="functions.html#Tokenizing_Functions">tokenization functions</a> to 
convert strings to sets, and the <a 
href="functions.html#Similarity_Functions">similarity functions</a>.</p></div>
+<div class="section">
+<h2><a name="Similarity_Selection_Queries_Back_to_TOC"></a><a 
name="SimilaritySelectionQueries" id="SimilaritySelectionQueries">Similarity 
Selection Queries</a> <font size="4"><a href="#toc">[Back to 
TOC]</a></font></h2>
+<p>The following query asks for all the Facebook users whose name is similar 
to <tt>Suzanna Tilson</tt>, i.e., their edit distance is at most 2.</p>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $ed := edit-distance($user.name, &quot;Suzanna Tilson&quot;)
+    where $ed &lt;= 2
+    return $user
+</pre></div></div>
+<p>The following query asks for all the Facebook users whose set of friend ids 
is similar to <tt>[1,5,9,10]</tt>, i.e., their Jaccard similarity is at least 
0.6.</p>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $sim := similarity-jaccard($user.friend-ids, [1,5,9,10])
+    where $sim &gt;= 0.6f
+    return $user
+</pre></div></div>
+<p>AsterixDB allows a user to use a similarity operator <tt>~=</tt> to express 
a condition by defining the similarity function and threshold using 
&#x201c;set&#x201d; statements earlier. For instance, the above query can be 
equivalently written as:</p>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    set simfunction &quot;jaccard&quot;;
+    set simthreshold &quot;0.6f&quot;;
+
+    for $user in dataset('FacebookUsers')
+    where $user.friend-ids ~= [1,5,9,10]
+    return $user
+</pre></div></div>
+<p>In this query, we first declare Jaccard as the similarity function using 
<tt>simfunction</tt> and then specify the threshold <tt>0.6f</tt> using 
<tt>simthreshold</tt>.</p></div>
+<div class="section">
+<h2><a name="Similarity_Join_Queries_Back_to_TOC"></a><a 
name="SimilarityJoinQueries" id="SimilarityJoinQueries">Similarity Join 
Queries</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>AsterixDB supports fuzzy joins between two sets. The following <a 
href="primer.html#Query_5_-_Fuzzy_Join">query</a> finds, for each Facebook 
user, all Twitter users with names similar to their name based on the edit 
distance.</p>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    set simfunction &quot;edit-distance&quot;;
+    set simthreshold &quot;3&quot;;
+
+    for $fbu in dataset FacebookUsers
+    return {
+        &quot;id&quot;: $fbu.id,
+        &quot;name&quot;: $fbu.name,
+        &quot;similar-users&quot;: for $t in dataset TweetMessages
+                            let $tu := $t.user
+                            where $tu.name ~= $fbu.name
+                            return {
+                            &quot;twitter-screenname&quot;: $tu.screen-name,
+                            &quot;twitter-name&quot;: $tu.name
+                            }
+    };
+</pre></div></div></div>
+<div class="section">
+<h2><a name="Using_Indexes_to_Support_Similarity_Queries_Back_to_TOC"></a><a 
name="UsingIndexesToSupportSimilarityQueries" 
id="UsingIndexesToSupportSimilarityQueries">Using Indexes to Support Similarity 
Queries</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>AsterixDB uses two types of indexes to support similarity queries, namely 
&#x201c;ngram index&#x201d; and &#x201c;keyword index&#x201d;.</p>
+<div class="section">
+<h3><a name="NGram_Index"></a>NGram Index</h3>
+<p>An &#x201c;ngram index&#x201d; is constructed on a set of strings. We 
generate n-grams for each string, and build an inverted list for each n-gram 
that includes the ids of the strings with this gram. A similarity query can be 
answered efficiently by accessing the inverted lists of the grams in the query 
and counting the number of occurrences of the string ids on these inverted 
lists. The similar idea can be used to answer queries with Jaccard similarity. 
A detailed description of these techniques is available at this <a 
class="externalLink" 
href="http://www.ics.uci.edu/~chenli/pub/icde2009-memreducer.pdf";>paper</a>.</p>
+<p>For instance, the following DDL statements create an ngram index on the 
<tt>FacebookUsers.name</tt> attribute using an inverted index of 3-grams.</p>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    create index fbUserIdx on FacebookUsers(name) type ngram(3);
+</pre></div></div>
+<p>The number &#x201c;3&#x201d; in &#x201c;ngram(3)&#x201d; is the length 
&#x201c;n&#x201d; in the grams. This index can be used to optimize similarity 
queries on this attribute using <a 
href="functions.html#edit-distance">edit-distance</a>, <a 
href="functions.html#edit-distance-check">edit-distance-check</a>, <a 
href="functions.html#similarity-jaccard">similarity-jaccard</a>, or <a 
href="functions.html#similarity-jaccard-check">similarity-jaccard-check</a> 
queries on this attribute where the similarity is defined on sets of 3-grams. 
This index can also be used to optimize queries with the &#x201c;<a 
href="functions.html#contains">contains()</a>&#x201d; predicate (i.e., 
substring matching) since it can be also be solved by counting on the inverted 
lists of the grams in the query string.</p>
+<div class="section">
+<h4><a name="NGram_Index_usage_case_-_edit-distance"></a>NGram Index usage 
case - <a href="functions.html#edit-distance">edit-distance</a></h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $ed := edit-distance($user.name, &quot;Suzanna Tilson&quot;)
+    where $ed &lt;= 2
+    return $user
+</pre></div></div></div>
+<div class="section">
+<h4><a name="NGram_Index_usage_case_-_edit-distance-check"></a>NGram Index 
usage case - <a 
href="functions.html#edit-distance-check">edit-distance-check</a></h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $ed := edit-distance-check($user.name, &quot;Suzanna Tilson&quot;, 2)
+    where $ed[0]
+    return $ed[1]
+</pre></div></div></div>
+<div class="section">
+<h4><a name="NGram_Index_usage_case_-_similarity-jaccard"></a>NGram Index 
usage case - <a 
href="functions.html#similarity-jaccard">similarity-jaccard</a></h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $sim := similarity-jaccard($user.friend-ids, [1,5,9,10])
+    where $sim &gt;= 0.6f
+    return $user
+</pre></div></div></div>
+<div class="section">
+<h4><a name="NGram_Index_usage_case_-_similarity-jaccard-check"></a>NGram 
Index usage case - <a 
href="functions.html#similarity-jaccard-check">similarity-jaccard-check</a></h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $user in dataset('FacebookUsers')
+    let $sim := similarity-jaccard-check($user.friend-ids, [1,5,9,10], 0.6f)
+    where $sim[0]
+    return $user
+</pre></div></div></div>
+<div class="section">
+<h4><a name="NGram_Index_usage_case_-_contains"></a>NGram Index usage case - 
<a href="functions.html#contains">contains()</a></h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    for $i in dataset('FacebookMessages')
+    where contains($i.message, &quot;phone&quot;)
+    return {&quot;mid&quot;: $i.message-id, &quot;message&quot;: $i.message}
+</pre></div></div></div></div>
+<div class="section">
+<h3><a name="Keyword_Index"></a>Keyword Index</h3>
+<p>A &#x201c;keyword index&#x201d; is constructed on a set of strings or sets 
(e.g., OrderedList, UnorderedList). Instead of generating grams as in an ngram 
index, we generate tokens (e.g., words) and for each token, construct an 
inverted list that includes the ids of the objects with this token. The 
following two examples show how to create keyword index on two different 
types:</p>
+<div class="section">
+<h4><a name="Keyword_Index_on_String_Type"></a>Keyword Index on String 
Type</h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    drop index FacebookMessages.fbMessageIdx if exists;
+    create index fbMessageIdx on FacebookMessages(message) type keyword;
+
+    for $o in dataset('FacebookMessages')
+    let $jacc := similarity-jaccard-check(word-tokens($o.message), 
word-tokens(&quot;love like ccast&quot;), 0.2f)
+    where $jacc[0]
+    return $o
+</pre></div></div></div>
+<div class="section">
+<h4><a name="Keyword_Index_on_UnorderedList_Type"></a>Keyword Index on 
UnorderedList Type</h4>
+
+<div class="source">
+<div class="source">
+<pre>    use dataverse TinySocial;
+
+    create index fbUserIdx_fids on FacebookUsers(friend-ids) type keyword;
+
+    for $c in dataset('FacebookUsers')
+    let $jacc := similarity-jaccard-check($c.friend-ids, {{3,10}}, 0.5f)
+    where $jacc[0]
+    return $c
+</pre></div></div>
+<p>As shown above, keyword index can be used to optimize queries with 
token-based similarity predicates, including <a 
href="functions.html#similarity-jaccard">similarity-jaccard</a> and <a 
href="functions.html#similarity-jaccard-check">similarity-jaccard-check</a>.</p></div></div></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2018
+                        <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>

http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/9c40a66d/content/docs/0.9.3/aws.html
----------------------------------------------------------------------
diff --git a/content/docs/0.9.3/aws.html b/content/docs/0.9.3/aws.html
new file mode 100644
index 0000000..5249918
--- /dev/null
+++ b/content/docs/0.9.3/aws.html
@@ -0,0 +1,525 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2018-02-09
+ | 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="20180209" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; </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: 2018-02-09</li>
+                      
+                
+                    
+                 <li id="projectVersion" class="pull-right">Version: 0.9.3</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>
+    
+                          <a href="ansible.html" title="Option 2: using 
Ansible">
+          <i class="none"></i>
+        Option 2: using Ansible</a>
+            </li>
+                  
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Option 3: using Amazon Web 
Services</a>
+          </li>
+                  
+      <li>
+    
+                          <a href="yarn.html" title="Option 4: using YARN">
+          <i class="none"></i>
+        Option 4: using YARN</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="install.html" title="Option 5: using 
Managix (deprecated)">
+          <i class="none"></i>
+        Option 5: using Managix (deprecated)</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">API/SDK</li>
+                                
+      <li>
+    
+                          <a href="api.html" title="HTTP API">
+          <i class="none"></i>
+        HTTP API</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="csv.html" title="CSV Output">
+          <i class="none"></i>
+        CSV Output</a>
+            </li>
+                              <li class="nav-header">Advanced Features</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>
+    
+                          <a href="aql/similarity.html" title="Support of 
Similarity Queries">
+          <i class="none"></i>
+        Support of Similarity Queries</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.
+ ! -->
+<ul>
+  
+<li><a href="#Introduction">Introduction</a></li>
+  
+<li><a href="#Prerequisites">Prerequisites</a></li>
+  
+<li><a href="#config">Cluster Configuration</a></li>
+  
+<li><a href="#lifecycle">Cluster Lifecycle Management</a> <!-- ! 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.
+ ! --></li>
+</ul>
+<div class="section">
+<h2><a name="Introduction" id="Introduction">Introduction</a></h2>
+<p>Note that you can always manually launch a number of Amazon Web Services 
EC2 instances and then run the  Ansible cluster installation scripts as 
described <a href="ansible.html">here</a> separately to manage the  lifecycle 
of an AsterixDB cluster on those EC2 instances.</p>
+<p>However, via this installation option, we provide a combo solution for 
automating both AWS EC2  and AsterixDB, where you can run only one script to 
deploy, start, stop, and terminate  an AsterixDB cluster on AWS.</p></div>
+<div class="section">
+<h2><a name="Prerequisites" id="Prerequisites">Prerequisites</a></h2>
+
+<ul>
+  
+<li>
+<p>Supported operating systems for the client: <b>Linux</b> and 
<b>MacOS</b></p></li>
+  
+<li>
+<p>Supported operating systems for Amazon Web Services instances: 
<b>Linux</b></p></li>
+  
+<li>
+<p>Install pip on your client machine:</p>
+<p>CentOS</p>
+  
+<div class="source">
+<div class="source">
+<pre> $ sudo yum install python-pip
+</pre></div></div>
+<p>Ubuntu</p>
+  
+<div class="source">
+<div class="source">
+<pre> $ sudo apt-get install python-pip
+</pre></div></div>
+<p>macOS</p>
+  
+<div class="source">
+<div class="source">
+<pre> $ brew install pip
+</pre></div></div></li>
+  
+<li>
+<p>Install Ansible, boto, and boto3 on your client machine:</p>
+  
+<div class="source">
+<div class="source">
+<pre> $ pip install ansible
+ $ pip install boto
+ $ pip install boto3
+</pre></div></div>
+<p>Note that you might need <tt>sudo</tt> depending on your system 
configuration.</p>
+<p><b>Make sure that the version of Ansible is no less than 2.2.1.0</b>:</p>
+  
+<div class="source">
+<div class="source">
+<pre> $ ansible --version
+ ansible 2.2.1.0
+</pre></div></div>
+<p><b>For users with macOS 10.11+</b>, please create a user-level Ansible 
configuration file at:</p>
+  
+<div class="source">
+<div class="source">
+<pre> ~/.ansible.cfg
+</pre></div></div>
+<p>and add the following configuration:</p>
+  
+<div class="source">
+<div class="source">
+<pre> [ssh_connection]
+ control_path = %(directory)s/%%C
+</pre></div></div></li>
+  
+<li>
+<p>Download the AsterixDB distribution package, unzip it, navigate to 
<tt>opt/aws/</tt></p>
+  
+<div class="source">
+<div class="source">
+<pre> $ cd opt/aws
+</pre></div></div>
+<p>The following files and directories are in the directory 
<tt>opt/aws</tt>:</p>
+  
+<div class="source">
+<div class="source">
+<pre> README  bin  conf  yaml
+</pre></div></div>
+<p><tt>bin</tt> contains scripts that start and terminate an AWS-based cluster 
instance, according to the configuration  specified in files under 
<tt>conf</tt>, and <tt>yaml</tt> contains internal Ansible scripts that the 
shell scripts in <tt>bin</tt> use.</p></li>
+  
+<li>
+<p>Create an AWS account and an IAM user.</p>
+<p>Set up a security group that you&#x2019;d like to use for your AWS cluster. 
 <b>The security group should at least allow all TCP connections from 
anywhere.</b>  Provide the name of the security group as the value for the 
<tt>group</tt> field in <tt>conf/aws_settings.yml</tt>.</p></li>
+  
+<li>
+<p>Retrieve your AWS EC2 key pair name and use that as the <tt>keypair</tt> in 
<tt>conf/aws_settings.yml</tt>;</p>
+<p>retrieve your AWS IAM <tt>access key ID</tt> and use that as the 
<tt>access_key_id</tt> in <tt>conf/aws_settings.yml</tt>;</p>
+<p>retrieve your AWS IAM <tt>secret access key</tt> and use that as the 
<tt>secret_access_key</tt> in <tt>conf/aws_settings.yml</tt>.</p>
+<p>Note that you can only read or download <tt>access key ID</tt> and 
<tt>secret access key</tt> once from your AWS console.  If you forget them, you 
have to create new keys and delete the old ones.</p></li>
+  
+<li>
+<p>Configure your ssh setting by editing <tt>~/.ssh/config</tt> and adding the 
following entry:</p>
+  
+<div class="source">
+<div class="source">
+<pre> Host *.amazonaws.com
+      IdentityFile &lt;path_of_private_key&gt;
+</pre></div></div>
+<p>Note that &lt;path_of_private_key&gt; should be replaced by the path to the 
file that stores the private key for the  key pair that you uploaded to AWS and 
used in <tt>conf/aws_settings</tt>. For example:</p>
+  
+<div class="source">
+<div class="source">
+<pre> Host *.amazonaws.com
+      IdentityFile ~/.ssh/id_rsa
+</pre></div></div></li>
+</ul></div>
+<div class="section">
+<h2><a name="Cluster_Configuration"></a><a name="config" id="config">Cluster 
Configuration</a></h2>
+
+<ul>
+  
+<li>
+<p><b>AWS settings</b>. Edit <tt>conf/instance_settings.yml</tt>. The meaning 
of each parameter is listed as follows:</p>
+  
+<div class="source">
+<div class="source">
+<pre> # The OS image id for ec2 instances.
+ image: ami-76fa4116
+
+ # The data center region for ec2 instances.
+ region: us-west-2
+
+ # The tag for each ec2 machine. Use different tags for isolation.
+ tag: scale_test
+
+ # The name of a security group that appears in your AWS console.
+ group: default
+
+ # The name of a key pair that appears in your AWS console.
+ keypair: &lt;to be filled&gt;
+
+ # The AWS access key id for your IAM user.
+ access_key_id: &lt;to be filled&gt;
+
+ # The AWS secret key for your IAM user.
+ secret_access_key: &lt;to be filled&gt;
+
+ # The AWS instance type. A full list of available types are listed at:
+ # https://aws.amazon.com/ec2/instance-types/
+ instance_type: t2.micro
+
+ # The number of ec2 instances that construct a cluster.
+ count: 3
+
+ # The user name.
+ user: ec2-user
+
+ # Whether to reuse one slave machine to host the master process.
+ cc_on_nc: false
+</pre></div></div>
+<p><b>As described in <a href="#Prerequisites">prerequisites</a>, the 
following parameters must be customized:</b></p>
+  
+<div class="source">
+<div class="source">
+<pre> # The tag for each ec2 machine. Use different tags for isolation.
+ tag: scale_test
+
+ # The name of a security group that appears in your AWS console.
+ group: default
+
+ # The name of a key pair that appears in your AWS console.
+ keypair: &lt;to be filled&gt;
+
+ # The AWS access key id for your IAM user.
+ access_key_id: &lt;to be filled&gt;
+
+ # The AWS secrety key for your IAM user.
+ secret_access_key: &lt;to be filled&gt;
+</pre></div></div></li>
+  
+<li>
+<p><b>Remote working directories</b>. Edit <tt>conf/instance_settings.yml</tt> 
to change the remote binary directory  (the variable &#x201c;binarydir&#x201d;) 
when necessary. By default, the binary directory will be under the home 
directory  (as the value of Ansible builtin variable ansible_env.HOME) of the 
ssh user account on each node.</p></li>
+</ul></div>
+<div class="section">
+<h2><a name="Cluster_Lifecycle_Management"></a><a name="lifecycle" 
id="lifecycle">Cluster Lifecycle Management</a></h2>
+
+<ul>
+  
+<li>
+<p>Allocate AWS EC2 nodes (the number of nodes is specified in 
<tt>conf/instance_settings.yml</tt>)  and deploy the binary to all allocated 
EC2 nodes:</p>
+  
+<div class="source">
+<div class="source">
+<pre> bin/deploy.sh
+</pre></div></div></li>
+  
+<li>
+<p>Before starting the AsterixDB cluster, you the instance configuration file 
<tt>conf/instance/cc.conf</tt>  can be modified with the exception of the IP 
addresses/DNS names which are are generated and cannot  be changed. All 
available parameters and their usage can be found <a 
href="ncservice.html#Parameters">here</a>.</p></li>
+  
+<li>
+<p>Launch your AsterixDB cluster on EC2:</p>
+  
+<div class="source">
+<div class="source">
+<pre> bin/start.sh
+</pre></div></div>
+<p>Now you can use the multi-node AsterixDB cluster on EC2 by by opening the 
master node  listed in <tt>conf/instance/inventory</tt> at port <tt>19001</tt> 
(which can be customized in <tt>conf/instance/cc.conf</tt>)  in your 
browser.</p></li>
+  
+<li>
+<p>If you want to stop the AWS-based AsterixDB cluster, run the following 
script:</p>
+  
+<div class="source">
+<div class="source">
+<pre> bin/stop.sh
+</pre></div></div>
+<p>Note that this only stops AsterixDB but does not stop the EC2 
nodes.</p></li>
+  
+<li>
+<p>If you want to terminate the EC2 nodes that run the AsterixDB cluster, run 
the following script:</p>
+  
+<div class="source">
+<div class="source">
+<pre> bin/terminate.sh
+</pre></div></div>
+<p><b>Note that it will destroy everything in the AsterixDB cluster you 
installed and terminate all EC2 nodes  for the cluster.</b></p></li>
+</ul></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2018
+                        <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