| --- |
| title: Configuring Apache Kudu |
| layout: default |
| active_nav: docs |
| last_updated: 'Last updated 2019-11-19 20:16:56 PST' |
| --- |
| <!-- |
| |
| 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 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=<file></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="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 spread"> |
| <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 spread"> |
| <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’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 spread"> |
| <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> |
| </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="#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="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> |