blob: 324851b6c7edfc0246686b5f74da46cba12b3e16 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
<meta name="author" content="Cloudera" />
<title>Apache Kudu - Configuring Apache Kudu</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
crossorigin="anonymous">
<!-- Custom styles for this template -->
<link href="/css/kudu.css" rel="stylesheet"/>
<link href="/css/asciidoc.css" rel="stylesheet"/>
<link rel="shortcut icon" href="/img/logo-favicon.ico" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="kudu-site container-fluid">
<!-- Static navbar -->
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="logo" href="/"><img
src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
alt="Apache Kudu"/></a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li >
<a href="/">Home</a>
</li>
<li >
<a href="/overview.html">Overview</a>
</li>
<li class="active">
<a href="/docs/">Documentation</a>
</li>
<li >
<a href="/releases/">Releases</a>
</li>
<li >
<a href="/blog/">Blog</a>
</li>
<!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
that doesn't also appear elsewhere on the site. -->
<li class="dropdown">
<a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="dropdown-header">GET IN TOUCH</li>
<li><a class="icon email" href="/community.html">Mailing Lists</a></li>
<li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li>
<li role="separator" class="divider"></li>
<li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
<li><a href="/committers.html">Project Committers</a></li>
<li><a href="/ecosystem.html">Ecosystem</a></li>
<!--<li><a href="/roadmap.html">Roadmap</a></li>-->
<li><a href="/community.html#contributions">How to Contribute</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">DEVELOPER RESOURCES</li>
<li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
<li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
<li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">SOCIAL MEDIA</li>
<li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
<li><a href="https://www.reddit.com/r/kudu/">Reddit</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li>
<li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
<li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
</ul>
</li>
<li >
<a href="/faq.html">FAQ</a>
</li>
</ul><!-- /.nav -->
</div><!-- /#navbar -->
</div><!-- /.container-fluid -->
</nav>
<!--
Licensed 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.
-->
<div class="container">
<div class="row">
<div class="col-md-9">
<h1>Configuring Apache Kudu</h1>
<div id="preamble">
<div class="sectionbody">
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This document applies to Apache Kudu version 1.16.0. Please consult the
<a href="http://kudu.apache.org/releases/">documentation of the appropriate release</a> that&#8217;s applicable
to the version of the Kudu cluster.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configure_kudu"><a class="link" href="#_configure_kudu">Configure Kudu</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_configuration_basics"><a class="link" href="#_configuration_basics">Configuration Basics</a></h3>
<div class="paragraph">
<p>To configure the behavior of each Kudu process, you can pass command-line flags when
you start it, or read those options from configuration files by passing them using
one or more <code>--flagfile=&lt;file&gt;</code> options. You can even include the
<code>--flagfile</code> option within your configuration file to include other files. Learn more about gflags
by reading <a href="https://gflags.github.io/gflags/">its documentation</a>.</p>
</div>
<div class="paragraph">
<p>You can place options for masters and tablet servers into the same configuration
file, and each will ignore options that do not apply.</p>
</div>
<div class="paragraph">
<p>Flags can be prefixed with either one or two <code>-</code> characters. This
documentation standardizes on two: <code>--example_flag</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_discovering_configuration_options"><a class="link" href="#_discovering_configuration_options">Discovering Configuration Options</a></h3>
<div class="paragraph">
<p>Only the most common configuration options are documented here. For a more exhaustive
list of configuration options, see the <a href="configuration_reference.html">Configuration Reference</a>.</p>
</div>
<div class="paragraph">
<p>To see all configuration flags for a given executable, run it with the <code>--help</code> option.
Take care when configuring undocumented flags, as not every possible
configuration has been tested, and undocumented options are not guaranteed to be
maintained in future releases.</p>
</div>
</div>
<div class="sect2">
<h3 id="clock_and_time_source"><a class="link" href="#clock_and_time_source">Configuring Clock and Time Source</a></h3>
<div class="paragraph">
<p>Kudu relies on timestamps generated by its clock implementation for the MVCC
and for providing consistency guarantees when processing write and read
requests. Aside from the test-only mock clock, Kudu has two different clock
implementations: one is based on logical time and the other is based on
so-called hybrid time. The former is a plain Lamport clock, the latter
is a combination of the node&#8217;s system clock and a Lamport clock. Below,
the former is referred to as <code>LogicalClock</code> and the latter as <code>HybridClock</code>.</p>
</div>
<div class="paragraph">
<p>Using the <code>HybridClock</code> implementation is a must for any production-grade, POC,
and other regular Kudu deployments: that&#8217;s why <code>--use_hybrid_clock</code> is set
<code>true</code> by default. Setting the flag to <code>false</code> makes Kudu servers use the
<code>LogicalClock</code> implementation: running with such a clock implementation is
acceptable only in the context of running specifically crafted test scenarios
in Kudu development environment.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
Setting <code>--use_hybrid_clock=false</code> is strongly discouraged in any
production-grade deployment since that could introduce out-of-control latency
and not-quite-expected behavior, especially when working with multiple tables
in a multi-node Kudu cluster.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To provide better accuracy for multi-node cluster deployments where each node
maintains its own system clock, the <code>HybridClock</code> implementation requires each
node&#8217;s system clock to be synchronized by NTP.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Setting <code>--time_source=system_unsync</code> removes the requirement for the
node&#8217;s system clock to be synchronized by NTP&#8201;&#8212;&#8201;this allows users to run test
clusters on a single node where there is only one clock used by all Kudu
servers. Setting <code>--time_source=system_unsync</code> is strongly discouraged in any
multi-node Kudu cluster, unless system clocks of all Kudu nodes are guaranteed
to always be synchronized with each other.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>For Kudu masters and tablet servers, there are two options to make the
<code>HybridClock</code> implementation use a clock synchronized by NTP:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Ensure that the system clock of the Kudu node is synchronized with reference
servers using an NTP daemon running on the node. Usually, the NTP daemon is
a part of the node&#8217;s OS distribution. As of Kudu 1.12.0 and newer, both
<code>ntpd</code> and <code>chronyd</code> are supported. Prior Kudu versions were tested only
with <code>ntpd</code>, but might work just fine with <code>chronyd</code> as well if <code>chronyd</code> is
configured as recommended by the
<a href="troubleshooting.html#chronyd">chronyd configuration tips for Kudu</a>.</p>
</li>
<li>
<p>Make Kudu servers maintain their own local clock, synchronizing it with
reference NTP servers. For that, Kudu servers use their built-in NTP client.
This option is available in Kudu 1.11.0 and newer versions.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The latter option is provided as a last resort for deployments where properly
configuring NTP daemons at every node of a Kudu cluster is not feasible for
some reason and to simplify Kudu deployments in public cloud environments such
as EC2 and GCP. For on-prem deployments, it&#8217;s still recommended to use the
former option since the current implementation of the Kudu built-in NTP client
might not be as robust as the battle-tested <code>ntpd</code> and <code>chronyd</code> system
NTP daemons.</p>
</div>
<div class="paragraph">
<p>To switch between these two options above, use the <code>--time_source</code> flag:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Setting <code>--time_source=system</code> makes the <code>HybridClock</code> rely on the node&#8217;s
system clock.</p>
</li>
<li>
<p>Setting <code>--time_source=builtin</code> turns on the built-in NTP client in
Kudu masters and tablet servers. Use the <code>--builtin_ntp_servers</code> flag to
customize the set of reference NTP servers for the built-in NTP client: the
value is expected to be a comma-separated list.</p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The default setting for the <code>--builtin_ntp_servers</code> flag might require
access to the NTP servers hosted by the
<a href="https://www.ntppool.org/">NTP Pool Project</a>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If deploying a Kudu cluster in AWS/EC2 or GCE/GCP public clouds, it might make
sense to set <code>--time_source=auto</code> for all Kudu masters and tablet servers in
the cluster. In this context, setting <code>--time_source=auto</code> leads to the
following:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Upon every start, a Kudu server runs the auto-detection procedure to
determine the type of the cloud environment it runs at.</p>
</li>
<li>
<p>If the procedure of the cloud type auto-detection completes successfully,
the Kudu server starts using its built-in NTP client to synchronize with the
NTP server provided by the cloud environment (see the appropriate
documentation for
<a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html">EC2</a>
and <a href="https://cloud.google.com/compute/docs/instances/configure-ntp">GCP</a>
correspondingly).</p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Running a Kudu server with <code>--time_source=auto</code> in cloud environments
other than EC2 and GCP, or when the cloud type auto-detection fails, makes
the Kudu server fall back to using the built-in NTP client with the list
of NTP servers as specified by the <code>--builtin_ntp_servers</code> flag, unless it&#8217;s
empty or otherwise unparsable. When <code>--builtin_ntp_servers</code> is set to an empty
list and the cloud type auto-detection fails, the Kudu server runs as if it
were configured with the <code>system</code> time source if the OS/platform supports the
<code>get_ntptime()</code> API. Finally, the catch-all case is <code>system_unsync</code> for the
time source. As already mentioned, the <code>system_unsync</code> time source is targeted
for development-only platforms or single-node-runs-it-all proof-of-concept
Kudu clusters.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The <code>kudu cluster ksck</code> CLI utility reports the configured and the effective
time source for every Kudu master and tablet server in a cluster. The list of
the NTP servers for the built-in client is reported as well when the effective
time source is <code>builtin</code>. The utility is also able to show the difference in
settings of the related time source flags and warn operators if a discrepancy
is detected. In addition, the information on the configured and effective time
source is reported by the embedded Web server in the <code>Time Source</code> panel at
the <code>/config</code> page.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Changing the value of the <code>--time_source</code> flag implies restarting a Kudu
server. Keep the time source the same for all master and tablet servers in
a Kudu cluster. If using the built-in NTP Kudu client, make sure to use
the same list of reference NTP servers for every Kudu server in a cluster.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="directory_configuration"><a class="link" href="#directory_configuration">Directory Configurations</a></h3>
<div class="paragraph">
<p>Every Kudu node requires the specification of directory flags. The
<code>--fs_wal_dir</code> configuration indicates where Kudu will place its write-ahead
logs. The <code>--fs_metadata_dir</code> configuration indicates where Kudu will place
metadata for each tablet. It is recommended, although not necessary, that these
directories be placed on a high-performance drives with high bandwidth and low
latency, e.g. solid-state drives. If <code>--fs_metadata_dir</code> is not specified,
metadata will be placed in the directory specified by <code>--fs_wal_dir</code>. Since
a Kudu node cannot tolerate the loss of its WAL or metadata directories, it
may be wise to mirror the drives containing these directories in order to
make recovering from a drive failure easier; however, mirroring may increase
the latency of Kudu writes.</p>
</div>
<div class="paragraph">
<p>The <code>--fs_data_dirs</code> configuration indicates where Kudu will write its data
blocks. This is a comma-separated list of directories; if multiple values are
specified, data will be striped across the directories. If not specified, data
blocks will be placed in the directory specified by <code>--fs_wal_dir</code>. Note that
while a single data directory backed by a RAID-0 array will outperform a single
data directory backed by a single storage device, it is better to let Kudu
manage its own striping over multiple devices rather than delegating the
striping to a RAID-0 array.</p>
</div>
<div class="paragraph">
<p>Additionally, <code>--fs_wal_dir</code> and <code>--fs_metadata_dir</code> may be the same as <em>one
of</em> the directories listed in <code>--fs_data_dirs</code>, but must not be sub-directories
of any of them.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
Each directory specified by a configuration flag on a given machine
should be used by at most one Kudu process. If multiple Kudu processes on the
same machine are configured to use the same directory, Kudu may refuse to start
up.
</td>
</tr>
</table>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
Once <code>--fs_data_dirs</code> is set, extra tooling is required to change it.
For more details, see the <a href="administration.html#change_dir_config">Kudu
Administration docs</a>.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The <code>--fs_wal_dir</code> and <code>--fs_metadata_dir</code> configurations can be changed,
provided the contents of the directories are also moved to match the flags.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_configuring_the_kudu_master"><a class="link" href="#_configuring_the_kudu_master">Configuring the Kudu Master</a></h3>
<div class="paragraph">
<p>To see all available configuration options for the <code>kudu-master</code> executable, run it
with the <code>--help</code> option:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ kudu-master --help</pre>
</div>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 1. Supported Configuration Flags for Kudu Masters</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Flag</th>
<th class="tableblock halign-left valign-top">Valid Options</th>
<th class="tableblock halign-left valign-top">Default</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--master_addresses</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>localhost</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma-separated list of all the RPC
addresses for Master consensus-configuration. If not specified, assumes a standalone Master.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--fs_data_dirs</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">List of directories where the Master will place its data blocks.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--fs_metadata_dir</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory where the Master will place its tablet metadata.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--fs_wal_dir</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory where the Master will place its write-ahead logs.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--log_dir</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/tmp</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory to store Master log files.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>For the full list of flags for masters, see the
<a href="configuration_reference.html#kudu-master_supported">Kudu Master Configuration Reference</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_configuring_tablet_servers"><a class="link" href="#_configuring_tablet_servers">Configuring Tablet Servers</a></h3>
<div class="paragraph">
<p>To see all available configuration options for the <code>kudu-tserver</code> executable,
run it with the <code>--help</code> option:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ kudu-tserver --help</pre>
</div>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 2. Supported Configuration Flags for Kudu Tablet Servers</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Flag</th>
<th class="tableblock halign-left valign-top">Valid Options</th>
<th class="tableblock halign-left valign-top">Default</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--fs_data_dirs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">List of directories where the Tablet Server will place its data blocks.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--fs_metadata_dir</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory where the Tablet Server will place its tablet metadata.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--fs_wal_dir</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory where the Tablet Server will place its write-ahead logs.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--log_dir</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/tmp</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The directory to store Tablet Server log files</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--tserver_master_addrs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>127.0.0.1:7051</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Comma separated
addresses of the masters which the tablet server should connect to. The masters
do not read this flag.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--block_cache_capacity_mb</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">512</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum amount of memory allocated to the Kudu Tablet Server&#8217;s block cache.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">--memory_limit_hard_bytes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4294967296</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum amount of memory a Tablet Server can consume before it starts rejecting all incoming writes.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>For the full list of flags for tablet servers, see the
<a href="configuration_reference.html#kudu-tserver_supported">Kudu Tablet Server Configuration Reference</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configure_kudu_tables"><a class="link" href="#_configure_kudu_tables">Configure Kudu Tables</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu allows certain configurations to be set per table. To configure the behavior of a Kudu table,
you can set these configurations at table creation, or alter them via the Kudu API or Kudu command
line tool.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 3. Supported Configurable Properties for Kudu Tables</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Configuration</th>
<th class="tableblock halign-left valign-top">Valid Options</th>
<th class="tableblock halign-left valign-top">Default</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kudu.table.history_max_age_sec</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of seconds to retain history for tablets in this table.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kudu.table.maintenance_priority</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Priority level of a table for maintenance.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kudu.table.disable_compaction</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false, true</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Whether to disable data compaction maintenance tasks for all tablets of this table.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="_next_steps"><a class="link" href="#_next_steps">Next Steps</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="quickstart.html">Get Started With Kudu</a></p>
</li>
<li>
<p><a href="developing.html">Developing Applications With Kudu</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div id="toc" data-spy="affix" data-offset-top="70">
<ul>
<li>
<a href="index.html">Introducing Kudu</a>
</li>
<li>
<a href="release_notes.html">Kudu Release Notes</a>
</li>
<li>
<a href="quickstart.html">Quickstart Guide</a>
</li>
<li>
<a href="installation.html">Installation Guide</a>
</li>
<li>
<span class="active-toc">Configuring Kudu</span>
<ul class="sectlevel1">
<li><a href="#_configure_kudu">Configure Kudu</a>
<ul class="sectlevel2">
<li><a href="#_configuration_basics">Configuration Basics</a></li>
<li><a href="#_discovering_configuration_options">Discovering Configuration Options</a></li>
<li><a href="#clock_and_time_source">Configuring Clock and Time Source</a></li>
<li><a href="#directory_configuration">Directory Configurations</a></li>
<li><a href="#_configuring_the_kudu_master">Configuring the Kudu Master</a></li>
<li><a href="#_configuring_tablet_servers">Configuring Tablet Servers</a></li>
</ul>
</li>
<li><a href="#_configure_kudu_tables">Configure Kudu Tables</a></li>
<li><a href="#_next_steps">Next Steps</a></li>
</ul>
</li>
<li>
<a href="hive_metastore.html">Using the Hive Metastore with Kudu</a>
</li>
<li>
<a href="kudu_impala_integration.html">Using Impala with Kudu</a>
</li>
<li>
<a href="administration.html">Administering Kudu</a>
</li>
<li>
<a href="troubleshooting.html">Troubleshooting Kudu</a>
</li>
<li>
<a href="developing.html">Developing Applications with Kudu</a>
</li>
<li>
<a href="schema_design.html">Kudu Schema Design</a>
</li>
<li>
<a href="scaling_guide.html">Kudu Scaling Guide</a>
</li>
<li>
<a href="security.html">Kudu Security</a>
</li>
<li>
<a href="transaction_semantics.html">Kudu Transaction Semantics</a>
</li>
<li>
<a href="background_tasks.html">Background Maintenance Tasks</a>
</li>
<li>
<a href="configuration_reference.html">Kudu Configuration Reference</a>
</li>
<li>
<a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a>
</li>
<li>
<a href="metrics_reference.html">Kudu Metrics Reference</a>
</li>
<li>
<a href="known_issues.html">Known Issues and Limitations</a>
</li>
<li>
<a href="contributing.html">Contributing to Kudu</a>
</li>
<li>
<a href="export_control.html">Export Control Notice</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="row">
<div class="col-md-9">
<p class="small">
Copyright &copy; 2020 The Apache Software Foundation. Last updated 2022-02-10 19:45:07 +0100
</p>
<p class="small">
Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu
project logo are either registered trademarks or trademarks of The
Apache Software Foundation in the United States and other countries.
</p>
</div>
<div class="col-md-3">
<a class="pull-right" href="https://www.apache.org/events/current-event.html">
<img src="https://www.apache.org/events/current-event-234x60.png"/>
</a>
</div>
</div>
</footer>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
// Try to detect touch-screen devices. Note: Many laptops have touch screens.
$(document).ready(function() {
if ("ontouchstart" in document.documentElement) {
$(document.documentElement).addClass("touch");
} else {
$(document.documentElement).addClass("no-touch");
}
});
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
crossorigin="anonymous"></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-68448017-1', 'auto');
ga('send', 'pageview');
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
<script>
anchors.options = {
placement: 'right',
visible: 'touch',
};
anchors.add();
</script>
</body>
</html>