blob: dd36797a1e483e7aecfd14f1f198c16aeb395bb5 [file] [log] [blame]
Ian Maxond00eca82018-10-05 17:29:55 -07001<!DOCTYPE html>
2<!--
Ian Maxonb2f1d3e2018-10-12 14:42:34 -07003 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/markdown/ncservice.md at 2018-10-12
Ian Maxond00eca82018-10-05 17:29:55 -07004 | Rendered using Apache Maven Fluido Skin 1.7
5-->
6<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7 <head>
8 <meta charset="UTF-8" />
9 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070010 <meta name="Date-Revision-yyyymmdd" content="20181012" />
Ian Maxond00eca82018-10-05 17:29:55 -070011 <meta http-equiv="Content-Language" content="en" />
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070012 <title>AsterixDB &#x2013; Installation using NCService</title>
Ian Maxond00eca82018-10-05 17:29:55 -070013 <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.min.css" />
14 <link rel="stylesheet" href="./css/site.css" />
15 <link rel="stylesheet" href="./css/print.css" media="print" />
16 <script type="text/javascript" src="./js/apache-maven-fluido-1.7.min.js"></script>
17
18 </head>
19 <body class="topBarDisabled">
20 <div class="container-fluid">
21 <div id="banner">
22 <div class="pull-left"><a href="./" id="bannerLeft"><img src="images/asterixlogo.png" alt="AsterixDB"/></a></div>
23 <div class="pull-right"></div>
24 <div class="clear"><hr/></div>
25 </div>
26
27 <div id="breadcrumbs">
28 <ul class="breadcrumb">
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070029 <li id="publishDate">Last Published: 2018-10-12</li>
Ian Maxond00eca82018-10-05 17:29:55 -070030 <li id="projectVersion" class="pull-right">Version: 0.9.4</li>
31 <li class="pull-right"><a href="index.html" title="Documentation Home">Documentation Home</a></li>
32 </ul>
33 </div>
34 <div class="row-fluid">
35 <div id="leftColumn" class="span2">
36 <div class="well sidebar-nav">
37 <ul class="nav nav-list">
38 <li class="nav-header">Get Started - Installation</li>
39 <li class="active"><a href="#"><span class="none"></span>Option 1: using NCService</a></li>
40 <li><a href="ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
41 <li><a href="aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
42 <li class="nav-header">AsterixDB Primer</li>
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070043 <li><a href="sqlpp/primer-sqlpp.html" title="Using SQL++"><span class="none"></span>Using SQL++</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070044 <li class="nav-header">Data Model</li>
45 <li><a href="datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070046 <li class="nav-header">Queries</li>
Ian Maxond00eca82018-10-05 17:29:55 -070047 <li><a href="sqlpp/manual.html" title="The SQL++ Query Language"><span class="none"></span>The SQL++ Query Language</a></li>
48 <li><a href="sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070049 <li class="nav-header">API/SDK</li>
50 <li><a href="api.html" title="HTTP API"><span class="none"></span>HTTP API</a></li>
51 <li><a href="csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
52 <li class="nav-header">Advanced Features</li>
Ian Maxond00eca82018-10-05 17:29:55 -070053 <li><a href="aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070054 <li><a href="feeds.html" title="Data Ingestion with Feeds"><span class="none"></span>Data Ingestion with Feeds</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070055 <li><a href="udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070056 <li><a href="sqlpp/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
57 <li><a href="sqlpp/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
58 <li><a href="sqlpp/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
59 <li class="nav-header">Deprecated</li>
60 <li><a href="aql/primer.html" title="AsterixDB Primer: Using AQL"><span class="none"></span>AsterixDB Primer: Using AQL</a></li>
61 <li><a href="aql/manual.html" title="Queries: The Asterix Query Language (AQL)"><span class="none"></span>Queries: The Asterix Query Language (AQL)</a></li>
62 <li><a href="aql/builtins.html" title="Queries: Builtin Functions (AQL)"><span class="none"></span>Queries: Builtin Functions (AQL)</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070063</ul>
64 <hr />
65 <div id="poweredBy">
66 <div class="clear"></div>
67 <div class="clear"></div>
68 <div class="clear"></div>
69 <div class="clear"></div>
70<a href="./" title="AsterixDB" class="builtBy"><img class="builtBy" alt="AsterixDB" src="images/asterixlogo.png" /></a>
71 </div>
72 </div>
73 </div>
74 <div id="bodyColumn" class="span10" >
75<!--
76 ! Licensed to the Apache Software Foundation (ASF) under one
77 ! or more contributor license agreements. See the NOTICE file
78 ! distributed with this work for additional information
79 ! regarding copyright ownership. The ASF licenses this file
80 ! to you under the Apache License, Version 2.0 (the
81 ! "License"); you may not use this file except in compliance
82 ! with the License. You may obtain a copy of the License at
83 !
84 ! http://www.apache.org/licenses/LICENSE-2.0
85 !
86 ! Unless required by applicable law or agreed to in writing,
87 ! software distributed under the License is distributed on an
88 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
89 ! KIND, either express or implied. See the License for the
90 ! specific language governing permissions and limitations
91 ! under the License.
92 !-->
Ian Maxonb2f1d3e2018-10-12 14:42:34 -070093<h1>Installation using NCService</h1>
Ian Maxond00eca82018-10-05 17:29:55 -070094<div class="section">
95<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of Contents</a></h2>
96<ul>
97
98<li><a href="#quickstart">Quick Start</a></li>
99<li><a href="#Small_cluster">Starting a small single-machine cluster using the NCService</a></li>
100<li><a href="#Multi_machine">Deploying AsterixDB via NCService in a multi-machine setup</a></li>
101<li><a href="#Parameters">Available Configuration Parameters</a></li>
102</ul>
103<h1><a name="quickstart" id="quickstart">Quick Start</a></h1>
104<p>The fastest way to get set up with a single-machine sample instance of AsterixDB is to use the included sample helper scripts. To do so, in the extracted <tt>asterix-server</tt> directory, navigate to <tt>opt/local/bin/</tt></p>
105
106<div>
107<div>
108<pre class="source">user@localhost:~/
109$cd asterix-server/
110user@localhost:~/asterix-server
111$cd opt/local/bin
112</pre></div></div>
113
114<p>This folder should contain 4 scripts, two pairs of <tt>.sh</tt> and <tt>.bat</tt> files respectively. <tt>start-sample-cluster.sh</tt> will simply start a basic sample cluster using the configuration files located in <tt>opt/local/conf/</tt>.</p>
115
116<div>
117<div>
118<pre class="source">user@localhost:~/a/o/l/bin
119$./start-sample-cluster.sh
120CLUSTERDIR=/home/user/asterix-server/opt/local
121INSTALLDIR=/home/user/asterix-server
122LOGSDIR=/home/user/asterix-server/samples/opt/logs
123
124INFO: Starting sample cluster...
125INFO: Waiting up to 30 seconds for cluster 127.0.0.1:19002 to be available.
126INFO: Cluster started and is ACTIVE.
127user@localhost:~/a/o/l/bin
128$
129</pre></div></div>
130
131<p>Now, there should be a running AsterixDB cluster on the machine. To go to the Web Interface, visit <a class="externalLink" href="http://localhost:19001">http://localhost:19001</a></p>
132
133<div class="source">
134
135<div class="source"><pre class="prettyprint linenums">
136<img src="images/asterixdb_interface.png" alt="The AsterixDB Web Interface" />
137<i>Fig. 1</i>: The AsterixDB Web Interface
138</pre></div>
139</div>
140
141<h1><a name="Small_cluster" id="Small_cluster">Starting a small single-machine cluster using NCService</a></h1>
142<p>The above cluster was started using a script, but below is a description in detail of how precisely this was achieved. The config files here are analagous to the ones within <tt>samples/local/conf</tt>.</p>
143<p>When running a cluster using the <tt>NCService</tt> there are 3 different kinds of processes involved:</p>
144<ul>
145
146<li><tt>NCDriver</tt>, also known as the Node Controller or NC for short. This is the process that does the actual work of queries and data management within the AsterixDB cluster</li>
147<li><tt>NCService</tt> configures and starts the <tt>NCDriver</tt> process. It is a simple daemon whose only purpose is to wait for the <tt>CCDriver</tt> process to call upon it to initiate cluster bootup.</li>
148<li><tt>CCDriver</tt>, which is the Cluster Controller process, also known as the CC. This process manages the distribution of tasks to all NCs, as well as providing the parameters of each NC to the NCService upon cluster startup. It also hosts the Web interface and query compiler and optimizer.</li>
149</ul>
150<p>The cluster startup follows a particular sequence, which is as follows:</p>
151<ol style="list-style-type: decimal">
152
153<li>Each host on which an NC is desired and is mentioned in the configuration, the <tt>NCService</tt> daemon is started first. It will listen and wait for the CC to contact it.</li>
154<li>The one host on which the CC is to be placed is started with an appropriate configuration file.</li>
155<li>The CC contacts all <tt>NCService</tt> daemons and the <tt>NCService</tt> subsequently starts and <tt>NCDriver</tt> process with the configration supplied by the <tt>CC</tt></li>
156<li>Each <tt>NCDriver</tt> then contacts the CC to register itself as started</li>
157</ol>
158<p>This process is briefly illustrated in the diagram below:</p>
159
160<div class="source">
161
162<div class="source"><pre class="prettyprint linenums">
163<img src="images/ncservice.png" alt="The AsterixDB Web Interface" />
164<i>Fig. 2</i>: NCService startup sequence
165</pre></div>
166</div>
167
168<p>To start a small cluster consisting of 2 NodeControllers (<tt>red</tt> and <tt>blue</tt>) and 1 ClusterController (<tt>cc</tt>) on a single machine only 2 configuration files are required. The first one is</p>
169<p><tt>blue.conf</tt>:</p>
170
171<div>
172<div>
173<pre class="source">[ncservice]
174port=9091
175</pre></div></div>
176
177<p>It is a configuration file for the second <tt>NCService</tt>. This contains only the port that the <tt>NCService</tt> of the second NodeControllers listens to as it is non-standard. The first <tt>NCService</tt> does not need a configuration file, as it only uses default parameters. In a distributed environment with 1 NodeController per machine, no <tt>NCService</tt> needs a configuration file.</p>
178<p>The second configuration file is</p>
179<p><tt>cc.conf</tt>:</p>
180
181<div>
182<div>
183<pre class="source">[nc/red]
184txn.log.dir=/tmp/asterix/red/txnlog
185core.dump.dir=/tmp/asterix/red/coredump
186iodevices=/tmp/asterix/red
187
188[nc/blue]
189port=9091
190txn.log.dir=/tmp/asterix/blue/txnlog
191core.dump.dir=/tmp/asterix/blue/coredump
192iodevices=/tmp/asterix/blue
193
194[nc]
195app.class=org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint
196address=127.0.0.1
197command=asterixnc
198
199[cc]
200address = 127.0.0.1
201console.listen.port = 12345
202</pre></div></div>
203
204<p>This is the configuration file for the cluster and it contains information that each <tt>NCService</tt> will use when starting the corresponding <tt>NCDriver</tt> as well as information for the <tt>CCDriver</tt>.</p>
205<p>To start the cluster simply use the following steps</p>
206<ol style="list-style-type: decimal">
207
208<li>
209
210<p>Change directory into the asterix-server binary folder</p>
211
212<div>
213<div>
214<pre class="source">user@localhost:~/
215$cd asterix-server/
216user@localhost:~/asterix-server
217$cd samples/local/bin
218</pre></div></div>
219</li>
220<li>
221
222<p>Start the 2 <tt>NCServices</tt> for <tt>red</tt> and <tt>blue</tt>.</p>
223
224<div>
225<div>
226<pre class="source">user@localhost:~/asterix-server
227$bin/asterixncservice -config-file blue.conf &gt; blue-service.log 2&gt;&amp;1 &amp;
228user@localhost:~/asterix-server
229$bin/asterixncservice &gt;red-service.log 2&gt;&amp;1 &amp;
230</pre></div></div>
231</li>
232<li>
233
234<p>Start the <tt>CCDriver</tt>.</p>
235
236<div>
237<div>
238<pre class="source">user@localhost:~/asterix-server
239$bin/asterixcc -config-file cc.conf &gt; cc.log 2&gt;&amp;1 &amp;
240</pre></div></div>
241</li>
242</ol>
243<p>The <tt>CCDriver</tt> will connect to the <tt>NCServices</tt> and thus initiate the configuration and the start of the <tt>NCDrivers</tt>. After running these scripts, <tt>jps</tt> should show a result similar to this:</p>
244
245<div>
246<div>
247<pre class="source">user@localhost:~/asterix-server
248$jps
24913184 NCService
25013200 NCDriver
25113185 NCService
25213186 CCDriver
25313533 Jps
25413198 NCDriver
255</pre></div></div>
256
257<p>The logs for the <tt>NCDrivers</tt> will be in <tt>$BASEDIR/logs</tt>.</p>
258<p>To stop the cluster again simply run</p>
259
260<div>
261<div>
262<pre class="source">$ kill `jps | egrep '(CDriver|NCService)' | awk '{print $1}'`
263</pre></div></div>
264
265<p>to kill all processes.</p>
266<h1><a name="Multi_machine" id="Multi_machine">Deploying AsterixDB via NCService in a multi-machine setup</a></h1>
267<p>Deploying on multiple machines only differs in the configuration file and where each process is actually resident. Take for example a deployment on 3 machines, <tt>cacofonix-1</tt>,<tt>cacofonix-2</tt>,and <tt>cacofonix-3</tt>. <tt>cacofonix-1</tt> will be the CC, and <tt>cacofonix-2</tt> and <tt>cacofonix-3</tt> will be the two NCs, respectively. The configuration would be as follows:</p>
268<p><tt>cc.conf</tt>:</p>
269
270<div>
271<div>
272<pre class="source">[nc/red]
273txn.log.dir=/lv_scratch/asterix/red/txnlog
274core.dump.dir=/lv_scratch/asterix/red/coredump
275iodevices=/lv_scratch/asterix/red
276address=cacofonix-2
277
278[nc/blue]
279txn.log.dir=/lv_scratch/asterix/blue/txnlog
280core.dump.dir=/lv_scratch/asterix/blue/coredump
281iodevices=/lv_scratch/asterix/blue
282address=cacofonix-3
283
284[nc]
285app.class=org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint
286storagedir=storage
287command=asterixnc
288
289[cc]
290address = cacofonix-1
291</pre></div></div>
292
293<p>To deploy, first the <tt>asterix-server</tt> binary must be present on each machine. Any method to transfer the archive to each machine will work, but here <tt>scp</tt> will be used for simplicity&#x2019;s sake.</p>
294
295<div>
296<div>
297<pre class="source">user@localhost:~
298$for f in {1,2,3}; scp asterix-server.zip cacofonix-$f:~/; end
299</pre></div></div>
300
301<p>Then unzip the binary on each machine. First, start the <tt>NCService</tt> processes on each of the slave machines. Any way of getting a shell on the machine is fine, be it physical or via <tt>ssh</tt>.</p>
302
303<div>
304<div>
305<pre class="source">user@cacofonix-2 12:41:42 ~/asterix-server/
306$ bin/asterixncservice &gt; red-service.log 2&gt;&amp;1 &amp;
307
308
309user@cacofonix-3 12:41:42 ~/asterix-server/
310$ bin/asterixncservice &gt; blue-service.log 2&gt;&amp;1 &amp;
311</pre></div></div>
312
313<p>Now that each <tt>NCService</tt> is waiting, the CC can be started.</p>
314
315<div>
316<div>
317<pre class="source">user@cacofonix-1 12:41:42 ~/asterix-server/
318$ bin/asterixcc -config-file cc.conf &gt; cc.log 2&gt;&amp;1 &amp;
319</pre></div></div>
320
321<p>The cluster should now be started and the Web UI available on the CC host at the default port.</p>
322<h1><a name="Parameters" id="Parameters">Available Configuration Parameters</a></h1>
323<p>The following parameters are for the master process, under the &#x201c;[cc]&#x201d; section.</p>
324<table border="0" class="table table-striped">
325<thead>
326
327<tr class="a">
328<th> Section </th>
329<th> Parameter </th>
330<th> Meaning </th>
331<th> Default </th></tr>
332</thead><tbody>
333
334<tr class="b">
335<td> cc </td>
336<td> active.port </td>
337<td> The listen port of the active server </td>
338<td> 19003 </td></tr>
339<tr class="a">
340<td> cc </td>
341<td> address </td>
342<td> Default bind address for all services on this cluster controller </td>
343<td> 127.0.0.1 </td></tr>
344<tr class="b">
345<td> cc </td>
346<td> api.port </td>
347<td> The listen port of the API server </td>
348<td> 19002 </td></tr>
349<tr class="a">
350<td> cc </td>
351<td> app.class </td>
352<td> Application CC main class </td>
353<td> org.apache.asterix.hyracks.bootstrap.CCApplication </td></tr>
354<tr class="b">
355<td> cc </td>
356<td> client.listen.address </td>
357<td> Sets the IP Address to listen for connections from clients </td>
358<td> same as address </td></tr>
359<tr class="a">
360<td> cc </td>
361<td> client.listen.port </td>
362<td> Sets the port to listen for connections from clients </td>
363<td> 1098 </td></tr>
364<tr class="b">
365<td> cc </td>
366<td> cluster.listen.address </td>
367<td> Sets the IP Address to listen for connections from NCs </td>
368<td> same as address </td></tr>
369<tr class="a">
370<td> cc </td>
371<td> cluster.listen.port </td>
372<td> Sets the port to listen for connections from node controllers </td>
373<td> 1099 </td></tr>
374<tr class="b">
375<td> cc </td>
376<td> cluster.public.address </td>
377<td> Address that NCs should use to contact this CC </td>
378<td> same as cluster.listen.address </td></tr>
379<tr class="a">
380<td> cc </td>
381<td> cluster.public.port </td>
382<td> Port that NCs should use to contact this CC </td>
383<td> same as cluster.listen.port </td></tr>
384<tr class="b">
385<td> cc </td>
386<td> cluster.topology </td>
387<td> Sets the XML file that defines the cluster topology </td>
388<td> &lt;undefined&gt; </td></tr>
389<tr class="a">
390<td> cc </td>
391<td> console.listen.address </td>
392<td> Sets the listen address for the Cluster Controller </td>
393<td> same as address </td></tr>
394<tr class="b">
395<td> cc </td>
396<td> console.listen.port </td>
397<td> Sets the http port for the Cluster Controller) </td>
398<td> 16001 </td></tr>
399<tr class="a">
400<td> cc </td>
401<td> cores.multiplier </td>
402<td> The factor to multiply by the number of cores to determine maximum query concurrent execution level </td>
403<td> 3 </td></tr>
404<tr class="b">
405<td> cc </td>
406<td> heartbeat.max.misses </td>
407<td> Sets the maximum number of missed heartbeats before a node is marked as dead </td>
408<td> 5 </td></tr>
409<tr class="a">
410<td> cc </td>
411<td> heartbeat.period </td>
412<td> Sets the time duration between two heartbeats from each node controller in milliseconds </td>
413<td> 10000 </td></tr>
414<tr class="b">
415<td> cc </td>
416<td> job.history.size </td>
417<td> Limits the number of historical jobs remembered by the system to the specified value </td>
418<td> 10 </td></tr>
419<tr class="a">
420<td> cc </td>
421<td> job.manager.class </td>
422<td> Specify the implementation class name for the job manager </td>
423<td> org.apache.hyracks.control.cc.job.JobManager </td></tr>
424<tr class="b">
425<td> cc </td>
426<td> job.queue.capacity </td>
427<td> The maximum number of jobs to queue before rejecting new jobs </td>
428<td> 4096 </td></tr>
429<tr class="a">
430<td> cc </td>
431<td> job.queue.class </td>
432<td> Specify the implementation class name for the job queue </td>
433<td> org.apache.hyracks.control.cc.scheduler.FIFOJobQueue </td></tr>
434<tr class="b">
435<td> cc </td>
436<td> profile.dump.period </td>
437<td> Sets the time duration between two profile dumps from each node controller in milliseconds; 0 to disable </td>
438<td> 0 </td></tr>
439<tr class="a">
440<td> cc </td>
441<td> result.sweep.threshold </td>
442<td> The duration within which an instance of the result cleanup should be invoked in milliseconds </td>
443<td> 60000 </td></tr>
444<tr class="b">
445<td> cc </td>
446<td> result.ttl </td>
447<td> Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds </td>
448<td> 86400000 </td></tr>
449<tr class="a">
450<td> cc </td>
451<td> root.dir </td>
452<td> Sets the root folder used for file operations </td>
453<td> ${java.io.tmpdir}/asterixdb/ClusterControllerService </td></tr>
454<tr class="b">
455<td> cc </td>
456<td> web.port </td>
457<td> The listen port of the legacy query interface </td>
458<td> 19001 </td></tr>
459<tr class="a">
460<td> cc </td>
461<td> web.queryinterface.port </td>
462<td> The listen port of the query web interface </td>
463<td> 19006 </td></tr>
464</tbody>
465</table>
466<p>The following parameters for slave processes, under &#x201c;[nc]&#x201d; sections.</p>
467<table border="0" class="table table-striped">
468<thead>
469
470<tr class="a">
471<th> Section </th>
472<th> Parameter </th>
473<th> Meaning </th>
474<th> Default </th></tr>
475</thead><tbody>
476
477<tr class="b">
478<td> nc </td>
479<td> address </td>
480<td> Default IP Address to bind listeners on this NC. All services will bind on this address unless a service-specific listen address is supplied. </td>
481<td> 127.0.0.1 </td></tr>
482<tr class="a">
483<td> nc </td>
484<td> app.class </td>
485<td> Application NC Main Class </td>
486<td> org.apache.asterix.hyracks.bootstrap.NCApplication </td></tr>
487<tr class="b">
488<td> nc </td>
489<td> cluster.address </td>
490<td> Cluster Controller address (required unless specified in config file) </td>
491<td> &lt;undefined&gt; </td></tr>
492<tr class="a">
493<td> nc </td>
494<td> cluster.connect.retries </td>
495<td> Number of attempts to contact CC before giving up </td>
496<td> 5 </td></tr>
497<tr class="b">
498<td> nc </td>
499<td> cluster.listen.address </td>
500<td> IP Address to bind cluster listener on this NC </td>
501<td> same as address </td></tr>
502<tr class="a">
503<td> nc </td>
504<td> cluster.listen.port </td>
505<td> IP port to bind cluster listener </td>
506<td> 0 </td></tr>
507<tr class="b">
508<td> nc </td>
509<td> cluster.port </td>
510<td> Cluster Controller port </td>
511<td> 1099 </td></tr>
512<tr class="a">
513<td> nc </td>
514<td> cluster.public.address </td>
515<td> Public IP Address to announce cluster listener </td>
516<td> same as public.address </td></tr>
517<tr class="b">
518<td> nc </td>
519<td> cluster.public.port </td>
520<td> Public IP port to announce cluster listener </td>
521<td> same as cluster.listen.port </td></tr>
522<tr class="a">
523<td> nc </td>
524<td> command </td>
525<td> Command NCService should invoke to start the NCDriver </td>
526<td> hyracksnc </td></tr>
527<tr class="b">
528<td> nc </td>
529<td> core.dump.dir </td>
530<td> The directory where node core dumps should be written </td>
531<td> ${java.io.tmpdir}/asterixdb/coredump </td></tr>
532<tr class="a">
533<td> nc </td>
534<td> data.listen.address </td>
535<td> IP Address to bind data listener </td>
536<td> same as address </td></tr>
537<tr class="b">
538<td> nc </td>
539<td> data.listen.port </td>
540<td> IP port to bind data listener </td>
541<td> 0 </td></tr>
542<tr class="a">
543<td> nc </td>
544<td> data.public.address </td>
545<td> Public IP Address to announce data listener </td>
546<td> same as public.address </td></tr>
547<tr class="b">
548<td> nc </td>
549<td> data.public.port </td>
550<td> Public IP port to announce data listener </td>
551<td> same as data.listen.port </td></tr>
552<tr class="a">
553<td> nc </td>
554<td> iodevices </td>
555<td> Comma separated list of IO Device mount points </td>
556<td> ${java.io.tmpdir}/asterixdb/iodevice </td></tr>
557<tr class="b">
558<td> nc </td>
559<td> jvm.args </td>
560<td> JVM args to pass to the NCDriver </td>
561<td> &lt;undefined&gt; </td></tr>
562<tr class="a">
563<td> nc </td>
564<td> messaging.listen.address </td>
565<td> IP Address to bind messaging listener </td>
566<td> same as address </td></tr>
567<tr class="b">
568<td> nc </td>
569<td> messaging.listen.port </td>
570<td> IP port to bind messaging listener </td>
571<td> 0 </td></tr>
572<tr class="a">
573<td> nc </td>
574<td> messaging.public.address </td>
575<td> Public IP Address to announce messaging listener </td>
576<td> same as public.address </td></tr>
577<tr class="b">
578<td> nc </td>
579<td> messaging.public.port </td>
580<td> Public IP port to announce messaging listener </td>
581<td> same as messaging.listen.port </td></tr>
582<tr class="a">
583<td> nc </td>
584<td> ncservice.address </td>
585<td> Address the CC should use to contact the NCService associated with this NC </td>
586<td> same as public.address </td></tr>
587<tr class="b">
588<td> nc </td>
589<td> ncservice.pid </td>
590<td> PID of the NCService which launched this NCDriver </td>
591<td> -1 </td></tr>
592<tr class="a">
593<td> nc </td>
594<td> ncservice.port </td>
595<td> Port the CC should use to contact the NCService associated with this NC </td>
596<td> 9090 </td></tr>
597<tr class="b">
598<td> nc </td>
599<td> net.buffer.count </td>
600<td> Number of network buffers per input/output channel </td>
601<td> 1 </td></tr>
602<tr class="a">
603<td> nc </td>
604<td> net.thread.count </td>
605<td> Number of threads to use for Network I/O </td>
606<td> 1 </td></tr>
607<tr class="b">
608<td> nc </td>
609<td> public.address </td>
610<td> Default public address that other processes should use to contact this NC. All services will advertise this address unless a service-specific public address is supplied. </td>
611<td> same as address </td></tr>
612<tr class="a">
613<td> nc </td>
614<td> result.listen.address </td>
615<td> IP Address to bind dataset result distribution listener </td>
616<td> same as address </td></tr>
617<tr class="b">
618<td> nc </td>
619<td> result.listen.port </td>
620<td> IP port to bind dataset result distribution listener </td>
621<td> 0 </td></tr>
622<tr class="a">
623<td> nc </td>
624<td> result.manager.memory </td>
625<td> Memory usable for result caching at this Node Controller in bytes </td>
626<td> -1 (-1 B) </td></tr>
627<tr class="b">
628<td> nc </td>
629<td> result.public.address </td>
630<td> Public IP Address to announce dataset result distribution listener </td>
631<td> same as public.address </td></tr>
632<tr class="a">
633<td> nc </td>
634<td> result.public.port </td>
635<td> Public IP port to announce dataset result distribution listener </td>
636<td> same as result.listen.port </td></tr>
637<tr class="b">
638<td> nc </td>
639<td> result.sweep.threshold </td>
640<td> The duration within which an instance of the result cleanup should be invoked in milliseconds </td>
641<td> 60000 </td></tr>
642<tr class="a">
643<td> nc </td>
644<td> result.ttl </td>
645<td> Limits the amount of time results for asynchronous jobs should be retained by the system in milliseconds </td>
646<td> 86400000 </td></tr>
647<tr class="b">
648<td> nc </td>
649<td> storage.buffercache.maxopenfiles </td>
650<td> The maximum number of open files in the buffer cache </td>
651<td> 2147483647 </td></tr>
652<tr class="a">
653<td> nc </td>
654<td> storage.buffercache.pagesize </td>
655<td> The page size in bytes for pages in the buffer cache </td>
656<td> 131072 (128 kB) </td></tr>
657<tr class="b">
658<td> nc </td>
659<td> storage.buffercache.size </td>
660<td> The size of memory allocated to the disk buffer cache. The value should be a multiple of the buffer cache page size. </td>
661<td> 1/4 of the JVM allocated memory </td></tr>
662<tr class="a">
663<td> nc </td>
664<td> storage.lsm.bloomfilter.falsepositiverate </td>
665<td> The maximum acceptable false positive rate for bloom filters associated with LSM indexes </td>
666<td> 0.01 </td></tr>
667<tr class="b">
668<td> nc </td>
669<td> storage.memorycomponent.globalbudget </td>
670<td> The size of memory allocated to the memory components. The value should be a multiple of the memory component page size </td>
671<td> 1/4 of the JVM allocated memory </td></tr>
672<tr class="a">
673<td> nc </td>
674<td> storage.memorycomponent.numcomponents </td>
675<td> The number of memory components to be used per lsm index </td>
676<td> 2 </td></tr>
677<tr class="b">
678<td> nc </td>
679<td> storage.memorycomponent.pagesize </td>
680<td> The page size in bytes for pages allocated to memory components </td>
681<td> 131072 (128 kB) </td></tr>
682<tr class="a">
683<td> nc </td>
684<td> storage.metadata.memorycomponent.numpages </td>
685<td> The number of pages to allocate for a metadata memory component </td>
686<td> 8 </td></tr>
687<tr class="b">
688<td> nc </td>
689<td> txn.log.dir </td>
690<td> The directory where transaction logs should be stored </td>
691<td> ${java.io.tmpdir}/asterixdb/txn-log </td></tr>
692</tbody>
693</table>
694<p>The following parameters are configured under the &#x201c;[common]&#x201d; section.</p>
695<table border="0" class="table table-striped">
696<thead>
697
698<tr class="a">
699<th> Section </th>
700<th> Parameter </th>
701<th> Meaning </th>
702<th> Default </th></tr>
703</thead><tbody>
704
705<tr class="b">
706<td> common </td>
707<td> active.memory.global.budget </td>
708<td> The memory budget (in bytes) for the active runtime </td>
709<td> 67108864 (64 MB) </td></tr>
710<tr class="a">
711<td> common </td>
712<td> compiler.framesize </td>
713<td> The page size (in bytes) for computation </td>
714<td> 32768 (32 kB) </td></tr>
715<tr class="b">
716<td> common </td>
717<td> compiler.groupmemory </td>
718<td> The memory budget (in bytes) for a group by operator instance in a partition </td>
719<td> 33554432 (32 MB) </td></tr>
720<tr class="a">
721<td> common </td>
722<td> compiler.joinmemory </td>
723<td> The memory budget (in bytes) for a join operator instance in a partition </td>
724<td> 33554432 (32 MB) </td></tr>
725<tr class="b">
726<td> common </td>
727<td> compiler.parallelism </td>
728<td> The degree of parallelism for query execution. Zero means to use the storage parallelism as the query execution parallelism, while other integer values dictate the number of query execution parallel partitions. The system will fall back to use the number of all available CPU cores in the cluster as the degree of parallelism if the number set by a user is too large or too small </td>
729<td> 0 </td></tr>
730<tr class="a">
731<td> common </td>
732<td> compiler.sortmemory </td>
733<td> The memory budget (in bytes) for a sort operator instance in a partition </td>
734<td> 33554432 (32 MB) </td></tr>
735<tr class="b">
736<td> common </td>
737<td> compiler.textsearchmemory </td>
738<td> The memory budget (in bytes) for an inverted-index-search operator instance in a partition </td>
739<td> 33554432 (32 MB) </td></tr>
740<tr class="a">
741<td> common </td>
742<td> log.level </td>
743<td> The logging level for master and slave processes </td>
744<td> WARNING </td></tr>
745<tr class="b">
746<td> common </td>
747<td> max.wait.active.cluster </td>
748<td> The max pending time (in seconds) for cluster startup. After the threshold, if the cluster still is not up and running, it is considered unavailable </td>
749<td> 60 </td></tr>
750<tr class="a">
751<td> common </td>
752<td> messaging.frame.count </td>
753<td> Number of reusable frames for NC to NC messaging </td>
754<td> 512 </td></tr>
755<tr class="b">
756<td> common </td>
757<td> messaging.frame.size </td>
758<td> The frame size to be used for NC to NC messaging </td>
759<td> 4096 (4 kB) </td></tr>
760<tr class="a">
761<td> common </td>
762<td> metadata.callback.port </td>
763<td> IP port to bind metadata callback listener (0 = random port) </td>
764<td> 0 </td></tr>
765<tr class="b">
766<td> common </td>
767<td> metadata.listen.port </td>
768<td> IP port to bind metadata listener (0 = random port) </td>
769<td> 0 </td></tr>
770<tr class="a">
771<td> common </td>
772<td> metadata.node </td>
773<td> the node which should serve as the metadata node </td>
774<td> &lt;undefined&gt; </td></tr>
775<tr class="b">
776<td> common </td>
777<td> metadata.registration.timeout.secs </td>
778<td> how long in seconds to wait for the metadata node to register with the CC </td>
779<td> 60 </td></tr>
780<tr class="a">
781<td> common </td>
782<td> replication.log.batchsize </td>
783<td> The size in bytes to replicate in each batch </td>
784<td> 4096 (4 kB) </td></tr>
785<tr class="b">
786<td> common </td>
787<td> replication.log.buffer.numpages </td>
788<td> The number of log buffer pages </td>
789<td> 8 </td></tr>
790<tr class="a">
791<td> common </td>
792<td> replication.log.buffer.pagesize </td>
793<td> The size in bytes of each log buffer page </td>
794<td> 131072 (128 kB) </td></tr>
795<tr class="b">
796<td> common </td>
797<td> replication.max.remote.recovery.attempts </td>
798<td> The maximum number of times to attempt to recover from a replica on failure before giving up </td>
799<td> 5 </td></tr>
800<tr class="a">
801<td> common </td>
802<td> replication.timeout </td>
803<td> The time in seconds to timeout when trying to contact a replica, before assuming it is dead </td>
804<td> 15 </td></tr>
805<tr class="b">
806<td> common </td>
807<td> storage.max.active.writable.datasets </td>
808<td> The maximum number of datasets that can be concurrently modified </td>
809<td> 8 </td></tr>
810<tr class="a">
811<td> common </td>
812<td> txn.commitprofiler.enabled </td>
813<td> Enable output of commit profiler logs </td>
814<td> false </td></tr>
815<tr class="b">
816<td> common </td>
817<td> txn.commitprofiler.reportinterval </td>
818<td> Interval (in seconds) to report commit profiler logs </td>
819<td> 5 </td></tr>
820<tr class="a">
821<td> common </td>
822<td> txn.job.recovery.memorysize </td>
823<td> The memory budget (in bytes) used for recovery </td>
824<td> 67108864 (64 MB) </td></tr>
825<tr class="b">
826<td> common </td>
827<td> txn.lock.escalationthreshold </td>
828<td> The maximum number of entity locks to obtain before upgrading to a dataset lock </td>
829<td> 1000 </td></tr>
830<tr class="a">
831<td> common </td>
832<td> txn.lock.shrinktimer </td>
833<td> The time (in milliseconds) where under utilization of resources will trigger a shrink phase </td>
834<td> 5000 </td></tr>
835<tr class="b">
836<td> common </td>
837<td> txn.lock.timeout.sweepthreshold </td>
838<td> Interval (in milliseconds) for checking lock timeout </td>
839<td> 10000 </td></tr>
840<tr class="a">
841<td> common </td>
842<td> txn.lock.timeout.waitthreshold </td>
843<td> Time out (in milliseconds) of waiting for a lock </td>
844<td> 60000 </td></tr>
845<tr class="b">
846<td> common </td>
847<td> txn.log.buffer.numpages </td>
848<td> The number of pages in the transaction log tail </td>
849<td> 8 </td></tr>
850<tr class="a">
851<td> common </td>
852<td> txn.log.buffer.pagesize </td>
853<td> The page size (in bytes) for transaction log buffer </td>
854<td> 131072 (128 kB) </td></tr>
855<tr class="b">
856<td> common </td>
857<td> txn.log.checkpoint.history </td>
858<td> The number of checkpoints to keep in the transaction log </td>
859<td> 0 </td></tr>
860<tr class="a">
861<td> common </td>
862<td> txn.log.checkpoint.lsnthreshold </td>
863<td> The checkpoint threshold (in terms of LSNs (log sequence numbers) that have been written to the transaction log, i.e., the length of the transaction log) for transaction logs </td>
864<td> 67108864 (64 MB) </td></tr>
865<tr class="b">
866<td> common </td>
867<td> txn.log.checkpoint.pollfrequency </td>
868<td> The frequency (in seconds) the checkpoint thread should check to see if a checkpoint should be written </td>
869<td> 120 </td></tr>
870<tr class="a">
871<td> common </td>
872<td> txn.log.partitionsize </td>
873<td> The maximum size (in bytes) of each transaction log file </td>
874<td> 268435456 (256 MB) </td></tr>
875</tbody>
876</table>
877<p>For the optional NCService process configuration file, the following parameters, under &#x201c;[ncservice]&#x201d; section.</p>
878<table border="0" class="table table-striped">
879<thead>
880
881<tr class="a">
882<th> Parameter </th>
883<th> Meaning </th>
884<th> Default </th></tr>
885</thead><tbody>
886
887<tr class="b">
888<td> address </td>
889<td> The address the NCService listens on for commands from the CC </td>
890<td> (all addresses) </td></tr>
891<tr class="a">
892<td> port </td>
893<td> The port for the NCService listens on for commands from the CC </td>
894<td> 9090 </td></tr>
895<tr class="b">
896<td> logdir </td>
897<td> Directory where NCService logs should be written (&#x2018;-&#x2019; indicates that output should go to stdout) </td>
898<td> ${app.home}/logs (${user.home} if &#x2018;app.home&#x2019; not present in NCService Java system properties. </td></tr>
899</tbody>
900</table></div>
901 </div>
902 </div>
903 </div>
904 <hr/>
905 <footer>
906 <div class="container-fluid">
907 <div class="row-fluid">
908<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
909 feather logo, and the Apache AsterixDB project logo are either
910 registered trademarks or trademarks of The Apache Software
911 Foundation in the United States and other countries.
912 All other marks mentioned may be trademarks or registered
913 trademarks of their respective owners.
914 </div>
915 </div>
916 </div>
917 </footer>
918 </body>
919</html>