blob: 5e1f274793fc607dc1636b7e3d1bb45e2b6e1804 [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.7.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.7.0 Release Notes</h1>
<div class="sect1">
<h2 id="rn_1.7.0_upgrade_notes"><a class="link" href="#rn_1.7.0_upgrade_notes">Upgrade Notes</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Upgrading directly from Kudu 1.6.0 is supported and no special upgrade steps
are required. A rolling upgrade of the server side will <em>not</em> work because
the default replica management scheme changed, and running masters and tablet
servers with different replica management schemes is not supported, see
<a href="#rn_1.7.0_incompatible_changes">Incompatible Changes in Kudu 1.7.0</a> for details. However, mixing client and
server sides of different versions is not a problem. You can still
update your clients before your servers or vice versa.
When upgrading to Kudu 1.7, it is required to first shut down all Kudu processes
across the cluster, then upgrade the software on all servers, then restart
the Kudu processes on all servers in the cluster.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_obsoletions"><a class="link" href="#rn_1.7.0_obsoletions">Obsoletions</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>The <code>tcmalloc_contention_time</code> metric, which previously tracked the amount
of time spent in memory allocator lock contention, has been removed.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_deprecations"><a class="link" href="#rn_1.7.0_deprecations">Deprecations</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Support for Java 7 has been deprecated since Kudu 1.5.0 and may be removed in
the next major release.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_new_features"><a class="link" href="#rn_1.7.0_new_features">New features</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Kudu now supports the decimal column type. The decimal type is a numeric data type
with fixed scale and precision suitable for financial and other arithmetic
calculations where the imprecise representation and rounding behavior of float and
double make those types impractical. The decimal type is also useful for integers
larger than int64 and cases with fractional values in a primary key.
See <a href="schema_design.html#decimal">Decimal Type</a> for more details.</p>
</li>
<li>
<p>The strategy Kudu uses for automatically healing tablets which have lost a
replica due to server or disk failures has been improved. The new re-replication
strategy, or replica management scheme, first adds a replacement tablet replica
before evicting the failed one. With the previous replica management scheme,
the system first evicts the failed replica and then adds a replacement. The new
replica management scheme allows for much faster recovery of tablets in
scenarios where one tablet server goes down and then returns back shortly after
5 minutes or so. The new scheme also provides substantially better overall
stability on clusters with frequent server failures.
(see <a href="https://issues.apache.org/jira/browse/KUDU-1097">KUDU-1097</a>).</p>
</li>
<li>
<p>The <code>kudu fs update_dirs</code> tool now supports removing directories. Unless the
<code>--force</code> flag is specified, Kudu will not allow the removal of a directory
across which tablets are configured to spread data. If specified, all tablet
replicas configured to use that directory will fail upon starting up and be
replicated elsewhere, provided a majority exists elsewhere.</p>
</li>
<li>
<p>Users can use the new <code>--fs_metadata_dir</code> to specify the directory in which
to place tablet-specific metadata. It is recommended, although not
necessary, that this be placed on a high-performance drive with high
bandwidth and low latency, e.g. a solid-state drive. If not specified,
metadata will be placed in the directory specified by <code>--fs_wal_dir</code>, or in
the directory specified by the first entry of <code>--fs_data_dirs</code> if metadata
already exists there from a pre-Kudu 1.7 deployment. Kudu will not
automatically move existing metadata based on this configuration.</p>
</li>
<li>
<p>Kudu 1.7 introduces a new scan read mode READ_YOUR_WRITES. Users can specify
READ_YOUR_WRITES when creating a new scanner in C++, Java and Python clients.
If this mode is used, the client will perform a read such that it follows all
previously known writes and reads from this client. Reads in this mode ensure
read-your-writes and read-your-reads session guarantees, while minimizing
latency caused by waiting for outstanding write transactions to complete.
Note that this is still an experimental feature which may be stabilized in
future releases.</p>
</li>
<li>
<p>The tablet server web UI scans dashboard (/scans) has been improved with
several new features, including: showing the most recently completed scans,
a pseudo-SQL scan descriptor that concisely shows the selected columns and
applied predicates, and more complete and better documented scan statistics.</p>
</li>
<li>
<p>Kudu daemons now expose a web page <code>/stacks</code> which dumps the current stack
trace of every thread running in the server. This information can be helpful
when diagnosing performance issues.</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>By default, each tablet replica will now stripe data blocks across 3 data
directories instead of all data directories. This decreases the likelihood
that any given tablet will be affected in the event of a single disk failure.
No substantial performance impact is expected due to this feature based on
<a href="https://github.com/apache/kudu/commit/60276c54a221d554287c6645df7df542fe6d6443">performance testing</a>.
This change only affects new replicas created after upgrading to Kudu 1.7.</p>
</li>
<li>
<p>Kudu servers previously offered the ability to enable a separate metrics log
which stores periodic snapshots of all metrics available on a server. This
functionality is now available as part of a more general “diagnostics log”
which is enabled by default. The diagnostics log includes periodic dumps of
server metrics as well as collections of thread stack traces. The default
configuration ensures that no more than 640MB of diagnostics logs are retained,
and typically the space consumption is significantly less due to compression.
The format and contents of this log file are documented in the
<a href="administration.html">Administration guide</a>.</p>
</li>
<li>
<p>The handling of errors in the synchronous Java client has been improved so that,
when an exception is thrown, the stack trace indicates the correct location
where the client function was invoked rather than a call stack of an internal
worker thread. The original call stack from the worker thread is available as
a “suppressed exception”.</p>
</li>
<li>
<p>The logging of errors in the Java client has been improved to exclude exception
stack traces for expected scenarios such as failure to connect to a server in a
cluster. Instead, only a single line informational message will be logged in
such cases to aid in debugging.</p>
</li>
<li>
<p>The Java client now uses a predefined prioritized list of TLS ciphers when
establishing an encrypted connection to Kudu servers. This cipher list matches
the list of ciphers preferred for server-to-server communication and ensures
that the most efficient and secure ciphers are preferred. When the Kudu client
is running on Java 8 or newer, this provides a substantial speed-up to read
and write performance.</p>
</li>
<li>
<p>Reporting for the <code>kudu cluster ksck</code> tool has been updated so tablets and
tables with on-going tablet copies are shown as "recovering". Additional
reporting changes have been made to make various common scenarios,
particularly tablet copies, less alarming.</p>
</li>
<li>
<p>The performance of inserting rows containing many string or binary columns has
been improved, especially in the case of highly concurrent write workloads.</p>
</li>
<li>
<p>By default, Spark tasks that scan Kudu will now be able to scan non-leader
replicas. This allows Spark to more easily schedule kudu-spark tasks local to
the data. Users can disable this behavior by passing 'leader_only' to the
'kudu.scanLocality' option."</p>
</li>
<li>
<p>The number of OS threads used in the steady state and during bursts of
activity (such as in Raft leader elections triggered by a node failure) has
been drastically reduced and should no longer exceed the value of <code>ulimit -u</code>.
As such, it should no longer be necessary to increase the value of <code>ulimit -u</code>
(or of /proc/sys/kernel/threads-max) in order to run a Kudu tablet server in
most cases.
(see <a href="https://issues.apache.org/jira/browse/KUDU-1913">KUDU-1913</a>).</p>
</li>
<li>
<p>An issue where sparse column predicates could cause excessive data-block reads
has been fixed. Previously in certain scans with sparsely matching predicates
on multiple columns, Kudu would read and decode the same data blocks many times.
The improvement typically results in a 5-10x performance increase for the
affected scans.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2231">KUDU-2231</a>).</p>
</li>
<li>
<p>The efficiency and on-disk size of large updated values has been improved.
This will improve update-heavy workloads which overwrite large (1KiB+) values.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2253">KUDU-2253</a>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_fixed_issues"><a class="link" href="#rn_1.7.0_fixed_issues">Fixed Issues</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Fixed a scenario where the on-disk data of a tablet server was completely
erased and and a new tablet server was started on the same host. This issue
could prevent tablet replicas previously hosted on the server from being
evicted and re-replicated.
Tablets now immediately evict replicas that respond with a different server
UUID than expected.
(see <a href="https://issues.apache.org/jira/browse/KUDU-1613">KUDU-1613</a>).</p>
</li>
<li>
<p>Fixed a rare race condition when connecting to masters during their
startup which might cause a client to get a response without a CA certificate
and/or authentication token. This would cause the client to fail to authenticate
with other servers in the cluster. The leader master now always sends a CA
certificate and an authentication token (when applicable) to a Kudu client
with a successful ConnectToMaster response.
(see <a href="https://issues.apache.org/jira/browse/KUDU-1927">KUDU-1927</a>).</p>
</li>
<li>
<p>The Kudu Java client now will retry a connection if no master is discovered as a
leader, and the user has a valid authentication token. This avoids failure
in recoverable cases when masters are in the process of the very first leader
election after starting up.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2262">KUDU-2262</a>).</p>
</li>
<li>
<p>The Java client will now automatically attempt to re-acquire Kerberos
credentials from the ticket cache when the prior credentials are about to
expire. This allows client instances to persist longer than the expiration
time of a single Kerberos ticket so long as some other process renews the
credentials in the ticket cache. Documentation on interacting with Kerberos
authentication has been added to the Javadoc for the <code>AsyncKuduClient</code> class.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2264">KUDU-2264</a>).</p>
</li>
<li>
<p>Follower masters are now able to verify authentication tokens even if they have never
been a leader. Prior to this fix, if a follower master had never been a leader,
clients would be unable to authenticate to that master, resulting in spurious
error messages being logged.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2265">KUDU-2265</a>).</p>
</li>
<li>
<p>Fixed a tablet server crash when a tablet replica is deleted during a scan.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2295">KUDU-2295</a>).</p>
</li>
<li>
<p>The evaluation order of predicates in scans with multiple predicates has been
made deterministic. Due to a bug, this was not necessarily the case previously.
Predicates are applied in most to least selective order, with ties broken by
column index. The evaluation order may change in the future, particularly when
better column statistics are made available internally.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2312">KUDU-2312</a>).</p>
</li>
<li>
<p>Previously, the <code>kudu tablet change_config move_replica</code> tool required all
tablet servers in the cluster to be available when performing a move. This
restriction has been relaxed: only the tablet server that will receive a replica
of the tablet being moved and the hosts of the tablet&#8217;s existing replicas need to be
available for the move to occur.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2331">KUDU-2331</a>).</p>
</li>
<li>
<p>Fixed a bug in the Java client which prevented the client from locating the
new leader master after a leader failover in the case that the previous leader
either remained online or restarted quickly. This bug resulted in the client
timing out operations with errors indicating that there was no leader master.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2343">KUDU-2343</a>).</p>
</li>
<li>
<p>The Unix process username of the client is now included inside the exported
security credentials, so that the effective username of clients who import
credentials and subsequently use unauthenticated (SASL PLAIN) connections
matches the client who exported the security credentials. For example, this is
useful to let the Spark executors know which username to use if the Spark
driver has no authentication token. This change only affects clusters with
encryption disabled using <code>--rpc-encryption=disabled</code>.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2259">KUDU-2259</a>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_wire_compatibility"><a class="link" href="#rn_1.7.0_wire_compatibility">Wire Protocol compatibility</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.7.0 is wire-compatible with previous versions of Kudu:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Kudu 1.7 clients may connect to servers running Kudu 1.0 or later. If the client uses
features that are not available on the target server, an error will be returned.</p>
</li>
<li>
<p>Rolling upgrade between Kudu 1.6 and Kudu 1.7 servers is believed to be possible
though has not been sufficiently tested. Users are encouraged to shut down all nodes
in the cluster, upgrade the software, and then restart the daemons on the new version.</p>
</li>
<li>
<p>Kudu 1.0 clients may connect to servers running Kudu 1.7 with the exception of the
below-mentioned restrictions regarding secure clusters.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The authentication features introduced in Kudu 1.3 place the following limitations
on wire compatibility between Kudu 1.7 and versions earlier than 1.3:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If a Kudu 1.7 cluster is configured with authentication or encryption set to "required",
clients older than Kudu 1.3 will be unable to connect.</p>
</li>
<li>
<p>If a Kudu 1.7 cluster is configured with authentication and encryption set to "optional"
or "disabled", older clients will still be able to connect.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_incompatible_changes"><a class="link" href="#rn_1.7.0_incompatible_changes">Incompatible Changes in Kudu 1.7.0</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>The newly introduced replica management scheme is not compatible with the
old scheme, so it&#8217;s not possible to run pre-1.7 Kudu masters with
1.7 Kudu tablet servers or vice versa. This is a server-side
incompatibility only and it does not affect client compatibility. In other words,
Kudu clients of prior versions are compatible with upgraded Kudu clusters.</p>
<div class="ulist">
<ul>
<li>
<p>Kudu masters of 1.7 version will not register Kudu tablet servers of 1.6
and prior versions.</p>
</li>
<li>
<p>Kudu tablet servers of 1.7 version will not work with Kudu masters of 1.6
and prior versions.</p>
</li>
</ul>
</div>
</li>
<li>
<p>The format of the previously-optional metrics log has changed to include a
human-readable timestamp on each line. The path of the log file has also
changed with the word “diagnostics” replacing the word “metrics” in the file
name. The metrics log has been optimized to only include those metrics which
have changed in between successive samples, and to not include entity attributes
such as tablet partition information in the log.
(see <a href="https://issues.apache.org/jira/browse/KUDU-2297">KUDU-2297</a>).</p>
</li>
</ul>
</div>
<div class="sect2">
<h3 id="rn_1.7.0_client_compatibility"><a class="link" href="#rn_1.7.0_client_compatibility">Client Library Compatibility</a></h3>
<div class="ulist">
<ul>
<li>
<p>The Kudu 1.7 Java client library is API- and ABI-compatible with Kudu 1.6. Applications
written against Kudu 1.6 will compile and run against the Kudu 1.7 client library and
vice-versa.</p>
</li>
<li>
<p>The Kudu 1.7 C++ client is API- and ABI-forward-compatible with Kudu 1.6.
Applications written and compiled against the Kudu 1.6 client library will run without
modification against the Kudu 1.7 client library. Applications written and compiled
against the Kudu 1.7 client library will run without modification against the Kudu 1.6
client library.</p>
</li>
<li>
<p>The Kudu 1.7 Python client is API-compatible with Kudu 1.6. Applications
written against Kudu 1.6 will continue to run against the Kudu 1.7 client
and vice-versa.</p>
</li>
<li>
<p>Kudu 1.7 clients that attempt to create a table with a decimal column on a
target server running Kudu 1.6 or earlier will receive an error response.
Similarly Kudu clients running Kudu 1.6 or earlier will result in an error
when attempting to access any table containing containing a decimal
column.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_known_issues"><a class="link" href="#rn_1.7.0_known_issues">Known Issues and Limitations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Please refer to the <a href="known_issues.html">Known Issues and Limitations</a> section of the
documentation.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.7.0_contributors"><a class="link" href="#rn_1.7.0_contributors">Contributors</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.7 includes contributions from 22 people, including two first-time
contributors, Clemens Valiente and Tsuyoshi Ozawa.</p>
</div>
<div class="paragraph">
<p>Thank you for helping to make Kudu even better!</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="resources_and_next_steps"><a class="link" href="#resources_and_next_steps">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.html">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.7.0_upgrade_notes">Upgrade Notes</a></li>
<li><a href="#rn_1.7.0_obsoletions">Obsoletions</a></li>
<li><a href="#rn_1.7.0_deprecations">Deprecations</a></li>
<li><a href="#rn_1.7.0_new_features">New features</a></li>
<li><a href="#_optimizations_and_improvements">Optimizations and improvements</a></li>
<li><a href="#rn_1.7.0_fixed_issues">Fixed Issues</a></li>
<li><a href="#rn_1.7.0_wire_compatibility">Wire Protocol compatibility</a></li>
<li><a href="#rn_1.7.0_incompatible_changes">Incompatible Changes in Kudu 1.7.0</a>
<ul class="sectlevel2">
<li><a href="#rn_1.7.0_client_compatibility">Client Library Compatibility</a></li>
</ul>
</li>
<li><a href="#rn_1.7.0_known_issues">Known Issues and Limitations</a></li>
<li><a href="#rn_1.7.0_contributors">Contributors</a></li>
<li><a href="#resources_and_next_steps">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="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>
<footer class="footer">
<div class="row">
<div class="col-md-9">
<p class="small">
Copyright &copy; 2020 The Apache Software Foundation. Last updated 2018-03-19 08:09:15 CDT
</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>