blob: c88fc24a901d66556804dd888ef23bf38828c442 [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 - Apache Kudu 1.0 Release Notes</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>Apache Kudu 1.0 Release Notes</h1>
<div class="sect1">
<h2 id="rn_1.0.0"><a class="link" href="#rn_1.0.0">Overview</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>After approximately a year of beta releases, Apache Kudu has reached version 1.0.
This version number signifies that the development team feels that Kudu is stable
enough for usage in production environments.</p>
</div>
<div class="paragraph">
<p>If you are new to Kudu, check out its list of <a href="index.html">features and benefits</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.0.0_new_features"><a class="link" href="#rn_1.0.0_new_features">New features</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.0.0 delivers a number of new features, bug fixes, and optimizations.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Removal of multiversion concurrency control (MVCC) history is now supported.
This is known as tablet history GC. This allows Kudu to reclaim disk space,
where previously Kudu would keep a full history of all changes made to a
given table since the beginning of time. Previously, the only way to reclaim
disk space was to drop a table.</p>
<div class="paragraph">
<p>Kudu will still keep historical data, and the amount of history retained is
controlled by setting the configuration flag <code>--tablet_history_max_age_sec</code>,
which defaults to 15 minutes (expressed in seconds). The timestamp
represented by the current time minus <code>tablet_history_max_age_sec</code> is known
as the ancient history mark (AHM). When a compaction or flush occurs, Kudu
will remove the history of changes made prior to the ancient history mark.
This only affects historical data; currently-visible data will not be
removed. A specialized maintenance manager background task to remove existing
"cold" historical data that is not in a row affected by the normal compaction
process will be added in a future release.</p>
</div>
</li>
<li>
<p>Most of Kudu&#8217;s command line tools have been consolidated under a new
top-level <code>kudu</code> tool. This reduces the number of large binaries distributed
with Kudu and also includes much-improved help output.</p>
</li>
<li>
<p>The Kudu Flume Sink now supports processing events containing Avro-encoded
records, using the new <code>AvroKuduOperationsProducer</code>.</p>
</li>
<li>
<p>Administrative tools including <code>kudu cluster ksck</code> now support running
against multi-master Kudu clusters.</p>
</li>
<li>
<p>The output of the <code>ksck</code> tool is now colorized and much easier to read.</p>
</li>
<li>
<p>The C++ client API now supports writing data in <code>AUTO_FLUSH_BACKGROUND</code> mode.
This can provide higher throughput for ingest workloads.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_optimizations_and_improvements"><a class="link" href="#_optimizations_and_improvements">Optimizations and improvements</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>The performance of comparison predicates on dictionary-encoded columns has
been substantially optimized. Users are encouraged to use dictionary encoding
on any string or binary columns with low cardinality, especially if these
columns will be filtered with predicates.</p>
</li>
<li>
<p>The Java client is now able to prune partitions from scanners based on the
provided predicates. For example, an equality predicate on a hash-partitioned
column will now only access those tablets that could possibly contain matching
data. This is expected to improve performance for the Spark integration as well
as applications using the Java client API.</p>
</li>
<li>
<p>The performance of compaction selection in the tablet server has been
substantially improved. This can increase the efficiency of the background
maintenance threads and improve overall throughput of heavy write workloads.</p>
</li>
<li>
<p>The policy by which the tablet server retains write-ahead log (WAL) files has
been improved so that it takes into account other replicas of the tablet.
This should help mitigate the spurious eviction of tablet replicas on machines
that temporarily lag behind the other replicas.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_wire_protocol_compatibility"><a class="link" href="#_wire_protocol_compatibility">Wire protocol compatibility</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.0.0 maintains client-server wire-compatibility with previous releases.
Applications using the Kudu client libraries may be upgraded either
before, at the same time, or after the Kudu servers.</p>
</div>
<div class="paragraph">
<p>Kudu 1.0.0 does <em>not</em> maintain server-server wire compatibility with previous
releases. Therefore, rolling upgrades between earlier versions of Kudu and
Kudu 1.0.0 are not supported.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.0.0_incompatible_changes"><a class="link" href="#rn_1.0.0_incompatible_changes">Incompatible changes in Kudu 1.0.0</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_command_line_tools"><a class="link" href="#_command_line_tools">Command line tools</a></h3>
<div class="ulist">
<ul>
<li>
<p>The <code>kudu-pbc-dump</code> tool has been removed. The same functionality is now
implemented as <code>kudu pbc dump</code>.</p>
</li>
<li>
<p>The <code>kudu-ksck</code> tool has been removed. The same functionality is now
implemented as <code>kudu cluster ksck</code>.</p>
</li>
<li>
<p>The <code>cfile-dump</code> tool has been removed. The same functionality is now
implemented as <code>kudu fs cfile dump</code>.</p>
</li>
<li>
<p>The <code>log-dump</code> tool has been removed. The same functionality is now
implemented as <code>kudu wal dump</code> and <code>kudu local_replica dump wals</code>.</p>
</li>
<li>
<p>The <code>kudu-admin</code> tool has been removed. The same functionality is now
implemented within <code>kudu table</code> and <code>kudu tablet</code>.</p>
</li>
<li>
<p>The <code>kudu-fs_dump</code> tool has been removed. The same functionality is now
implemented as <code>kudu fs dump</code>.</p>
</li>
<li>
<p>The <code>kudu-ts-cli</code> tool has been removed. The same functionality is now
implemented within <code>kudu master</code>, <code>kudu remote_replica</code>, and <code>kudu tserver</code>.</p>
</li>
<li>
<p>The <code>kudu-fs_list</code> tool has been removed and some similar useful
functionality has been moved under 'kudu local_replica'.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_configuration_flags"><a class="link" href="#_configuration_flags">Configuration flags</a></h3>
<div class="ulist">
<ul>
<li>
<p>Some configuration flags are now marked as 'unsafe' and 'experimental'. Such flags
are disallowed by default. Users may access these flags by enabling the additional
flags <code>--unlock_unsafe_flags</code> and <code>--unlock_experimental_flags</code>. Usage of such flags
is not recommended, as the flags may be removed or modified with no deprecation period
and without notice in future Kudu releases.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_client_apis_c_java_python"><a class="link" href="#_client_apis_c_java_python">Client APIs (C++/Java/Python)</a></h3>
<div class="ulist">
<ul>
<li>
<p>The <code>TIMESTAMP</code> column type has been renamed to <code>UNIXTIME_MICROS</code> in order to
reduce confusion between Kudu&#8217;s timestamp support and the timestamps supported
by other systems such as Apache Hive and Apache Impala (incubating). Existing
tables will automatically be updated to use the new name for the type.</p>
<div class="paragraph">
<p>Clients upgrading to the new client libraries must move to the new name for
the type. Clients using old client libraries will continue to operate using
the old type name, even when connected to clusters that have been
upgraded. Similarly, if clients are upgraded before servers, existing
timestamp columns will be available using the new type name.</p>
</div>
</li>
<li>
<p><code>KuduSession</code> methods in the C++ library are no longer advertised as thread-safe
to have one set of semantics for both C++ and Java Kudu client libraries.</p>
</li>
<li>
<p>The <code>KuduScanToken::TabletServers</code> method in the C++ library has been removed.
The same information can now be found in the KuduScanToken::tablet method.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_apache_flume_integration"><a class="link" href="#_apache_flume_integration">Apache Flume Integration</a></h3>
<div class="ulist">
<ul>
<li>
<p>The <code>KuduEventProducer</code> interface used to process Flume events into Kudu operations
for the Kudu Flume Sink has changed, and has been renamed <code>KuduOperationsProducer</code>.
The existing `KuduEventProducer`s have been updated for the new interface, and have
been renamed similarly.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="known_issues_and_limitations"><a class="link" href="#known_issues_and_limitations">Known Issues and Limitations</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_schema_and_usage_limitations"><a class="link" href="#_schema_and_usage_limitations">Schema and Usage Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p>Kudu is primarily designed for analytic use cases. You are likely to encounter issues if
a single row contains multiple kilobytes of data.</p>
</li>
<li>
<p>The columns which make up the primary key must be listed first in the schema.</p>
</li>
<li>
<p>Key columns cannot be altered. You must drop and recreate a table to change its keys.</p>
</li>
<li>
<p>Key columns must not be null.</p>
</li>
<li>
<p>Columns with <code>DOUBLE</code>, <code>FLOAT</code>, or <code>BOOL</code> types are not allowed as part of a
primary key definition.</p>
</li>
<li>
<p>Type and nullability of existing columns cannot be changed by altering the table.</p>
</li>
<li>
<p>A table’s primary key cannot be changed.</p>
</li>
<li>
<p>Dropping a column does not immediately reclaim space. Compaction must run first.
There is no way to run compaction manually, but dropping the table will reclaim the
space immediately.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_partitioning_limitations"><a class="link" href="#_partitioning_limitations">Partitioning Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p>Tables must be manually pre-split into tablets using simple or compound primary
keys. Automatic splitting is not yet possible. Range partitions may be added
or dropped after a table has been created. See
<a href="schema_design.html">Schema Design</a> for more information.</p>
</li>
<li>
<p>Data in existing tables cannot currently be automatically repartitioned. As a workaround,
create a new table with the new partitioning and insert the contents of the old
table.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_replication_and_backup_limitations"><a class="link" href="#_replication_and_backup_limitations">Replication and Backup Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p>Kudu does not currently include any built-in features for backup and restore.
Users are encouraged to use tools such as Spark or Impala to export or import
tables as necessary.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_impala_limitations"><a class="link" href="#_impala_limitations">Impala Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p>To use Kudu with Impala, you must install a special release of Impala called
Impala_Kudu. Obtaining and installing a compatible Impala release is detailed in Kudu&#8217;s
<a href="kudu_impala_integration.html">Impala Integration</a> documentation.</p>
</li>
<li>
<p>To use Impala_Kudu alongside an existing Impala instance, you must install using parcels.</p>
</li>
<li>
<p>Updates, inserts, and deletes via Impala are non-transactional. If a query
fails part of the way through, its partial effects will not be rolled back.</p>
</li>
<li>
<p>All queries will be distributed across all Impala hosts which host a replica
of the target table(s), even if a predicate on a primary key could correctly
restrict the query to a single tablet. This limits the maximum concurrency of
short queries made via Impala.</p>
</li>
<li>
<p>No timestamp and decimal type support.</p>
</li>
<li>
<p>The maximum parallelism of a single query is limited to the number of tablets
in a table. For good analytic performance, aim for 10 or more tablets per host
or use large tables.</p>
</li>
<li>
<p>Impala is only able to push down predicates involving <code>=</code>, <code>&#8656;</code>, <code>&gt;=</code>,
or <code>BETWEEN</code> comparisons between any column and a literal value, and <code>&lt;</code> and <code>&gt;</code>
for integer columns only. For example, for a table with an integer key <code>ts</code>, and
a string key <code>name</code>, the predicate <code>WHERE ts &gt;= 12345</code> will convert into an
efficient range scan, whereas <code>where name &gt; 'lipcon'</code> will currently fetch all
data from the table and evaluate the predicate within Impala.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_security_limitations"><a class="link" href="#_security_limitations">Security Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p>Authentication and authorization features are not implemented.</p>
</li>
<li>
<p>Data encryption is not built in. Kudu has been reported to run correctly
on systems using local block device encryption (e.g. <code>dmcrypt</code>).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_client_and_api_limitations"><a class="link" href="#_client_and_api_limitations">Client and API Limitations</a></h3>
<div class="ulist">
<ul>
<li>
<p><code>ALTER TABLE</code> is not yet fully supported via the client APIs. More <code>ALTER TABLE</code>
operations will become available in future releases.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_other_known_issues"><a class="link" href="#_other_known_issues">Other Known Issues</a></h3>
<div class="paragraph">
<p>The following are known bugs and issues with the current release of Kudu. They will
be addressed in later releases. Note that this list is not exhaustive, and is meant
to communicate only the most important known issues.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If the Kudu master is configured with the <code>-log_fsync_all</code> option, tablet servers
and clients will experience frequent timeouts, and the cluster may become unusable.</p>
</li>
<li>
<p>If a tablet server has a very large number of tablets, it may take several minutes
to start up. It is recommended to limit the number of tablets per server to 100 or fewer.
Consider this limitation when pre-splitting your tables. If you notice slow start-up times,
you can monitor the number of tablets per server in the web UI.</p>
</li>
<li>
<p>Due to a known bug in Linux kernels prior to 3.8, running Kudu on <code>ext4</code> mount points
may cause a subsequent <code>fsck</code> to fail with errors such as <code>Logical start &lt;N&gt; does
not match logical start &lt;M&gt; at next level</code>. These errors are repairable using <code>fsck -y</code>,
but may impact server restart time.</p>
<div class="paragraph">
<p>This affects RHEL/CentOS 6.8 and below. A fix is planned for RHEL/CentOS 6.9.
RHEL 7.0 and higher are not affected. Ubuntu 14.04 and later are not affected.
SLES 12 and later are not affected.</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_resources"><a class="link" href="#_resources">Resources</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="http://kudu.apache.org">Kudu Website</a></p>
</li>
<li>
<p><a href="http://github.com/apache/kudu">Kudu GitHub Repository</a></p>
</li>
<li>
<p><a href="index.html">Kudu Documentation</a></p>
</li>
<li>
<p><a href="prior_release_notes.adoc">Release notes for older releases</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_options"><a class="link" href="#_installation_options">Installation Options</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>For full installation details, see <a href="installation.html">Kudu Installation</a>.</p>
</div>
</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">Kudu Quickstart</a></p>
</li>
<li>
<p><a href="installation.html">Installing Kudu</a></p>
</li>
<li>
<p><a href="configuration.html">Configuring 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>
<span class="active-toc">Kudu Release Notes</span>
<ul class="sectlevel1">
<li><a href="#rn_1.0.0">Overview</a></li>
<li><a href="#rn_1.0.0_new_features">New features</a></li>
<li><a href="#_optimizations_and_improvements">Optimizations and improvements</a></li>
<li><a href="#_wire_protocol_compatibility">Wire protocol compatibility</a></li>
<li><a href="#rn_1.0.0_incompatible_changes">Incompatible changes in Kudu 1.0.0</a>
<ul class="sectlevel2">
<li><a href="#_command_line_tools">Command line tools</a></li>
<li><a href="#_configuration_flags">Configuration flags</a></li>
<li><a href="#_client_apis_c_java_python">Client APIs (C++/Java/Python)</a></li>
<li><a href="#_apache_flume_integration">Apache Flume Integration</a></li>
</ul>
</li>
<li><a href="#known_issues_and_limitations">Known Issues and Limitations</a>
<ul class="sectlevel2">
<li><a href="#_schema_and_usage_limitations">Schema and Usage Limitations</a></li>
<li><a href="#_partitioning_limitations">Partitioning Limitations</a></li>
<li><a href="#_replication_and_backup_limitations">Replication and Backup Limitations</a></li>
<li><a href="#_impala_limitations">Impala Limitations</a></li>
<li><a href="#_security_limitations">Security Limitations</a></li>
<li><a href="#_client_and_api_limitations">Client and API Limitations</a></li>
<li><a href="#_other_known_issues">Other Known Issues</a></li>
</ul>
</li>
<li><a href="#_resources">Resources</a></li>
<li><a href="#_installation_options">Installation Options</a></li>
<li><a href="#_next_steps">Next Steps</a></li>
</ul>
</li>
<li>
<a href="quickstart.html">Getting Started with Kudu</a>
</li>
<li>
<a href="installation.html">Installation Guide</a>
</li>
<li>
<a href="configuration.html">Configuring 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="transaction_semantics.html">Kudu Transaction Semantics</a>
</li>
<li>
<a href="contributing.html">Contributing to Kudu</a>
</li>
<li>
<a href="style_guide.html">Kudu Documentation Style Guide</a>
</li>
<li>
<a href="configuration_reference.html">Kudu Configuration Reference</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 2016-09-12 20:23:06 PDT
</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>