<!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 (incubating) completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu (incubating) - Transaction Semantics in Apache Kudu (incubating)</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="/img/logo_small.png" width="80" /></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/">Download</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="/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>
                  </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>Transaction Semantics in Apache Kudu (incubating)</h1>
      <div id="preamble">
<div class="sectionbody">
<div class="sidebarblock">
<div class="content">
<div class="paragraph">
<p>This is a brief introduction to Kudu&#8217;s transaction and consistency semantics. For an
in-depth technical exposition of most of what is mentioned here, and why it is correct,
see the technical report <a href="#1">[1]</a>.</p>
</div>
</div>
</div>
<div class="paragraph">
<p>Kudu&#8217;s transactional semantics and architecture are inspired by state-of-the-art
systems such as Spanner <a href="#2">[2]</a> and Calvin <a href="#3">[3]</a>. Kudu builds upon decades of database
research. The core philosophy is to make the lives of developers easier by providing transactions with
simple, strong semantics, without sacrificing performance or the ability to tune to different
requirements.</p>
</div>
<div class="paragraph">
<p>Kudu is designed to eventually be fully ACID, however, multi-tablet transactions are not
yet implemented. As such, this discussion focuses on single-tablet write operations, and only
briefly touches multi-tablet reads. Eventually Kudu will support fully strict-serializable
semantics. In fact it already does in a limited context, but not all corner cases are covered
as this is still a work in progress.</p>
</div>
<div class="paragraph">
<p>Kudu currently allows the following operations:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Write operations</strong> are sets of rows to be inserted, updated, or deleted in the storage
engine, in a single tablet with multiple replicas. Write operations do not have separate
"read sets" i.e. they do not scan existing data before performing the write. Each write
is only concerned with previous state of the rows that are about to change.
Writes are not  "committed" explicitly by the user. Instead, they are committed automatically
by the system, after completion.</p>
</li>
<li>
<p><strong>Scans</strong> are read operations that can traverse multiple tablets and read information
with some consistency or correctness guarantees. Scans can perform time-travel reads, i.e.
the user is able to set a scan timestamp in the past and get back results that reflect
the state of the storage engine at that point in time.</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">
<div class="title">Before We Begin</div>
<div class="ulist">
<ul>
<li>
<p>The term <em>timestamp</em> is mentioned several times to illustrate the
functionality, but <em>timestamp</em> is an internal concept mostly invisible to users,
except when setting timestamp on a <code>KuduScanner</code>.</p>
</li>
<li>
<p>We generally refer to methods and classes of the <em>async java</em> client. While the C++
client mostly has analogous methods and classes, parity between the APIs is still
a work in progress. At times, we may refer specifically to the C++ client.</p>
</li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_single_tablet_write_operations"><a class="link" href="#_single_tablet_write_operations">Single tablet write operations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu employs <em>Multiversion Concurrency Control (MVCC)</em> and the <em>Raft consensus</em> algorithm <a href="#4">[4]</a>.
Each write operation in Kudu must go through the tablet&#8217;s leader.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>The leader acquires all locks for the rows that it will change.</p>
</li>
<li>
<p>The leader assigns the write a timestamp before the write is submitted for
replication. This timestamp will be the write&#8217;s "tag" in MVCC.</p>
</li>
<li>
<p>After a majority of replicas acknowledges the change, the actual rows are changed.</p>
</li>
<li>
<p>After the changes are complete, they are made visible to concurrent writes
and reads, atomically.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>All replicas of a tablet observe the same order of operations and if a write
operation is assigned timestamp <em>n</em> and changes row <em>x</em>, a second write operation
at timestamp <em>m &gt; n</em> is guaranteed to see the new value of <em>x</em>.</p>
</div>
<div class="paragraph">
<p>This strict ordering of lock acquisition and timestamp assignment is enforced to be
consistent across all replicas of a tablet through consensus. Therefore, write operations
are totally ordered with regard to clock-assigned timestamps, relative to other writes
in the same tablet. In other words, writes have strict-serializable semantics,
though in an admittedly limited context. See this
<a href="http://www.bailis.org/blog/linearizability-versus-serializability">blog post</a>
for a little more context regarding what these semantics mean.</p>
</div>
<div class="paragraph">
<p>While Isolated and Durable in an ACID sense, write operations are not yet fully Atomic.
The failure of a single write in a batch operation does not roll back the operation,
but produces per-row errors.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_writing_to_multiple_tablets"><a class="link" href="#_writing_to_multiple_tablets">Writing to multiple tablets</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu does not yet support transactions that span multiple tablets. However,
consistent snapshot reads are possible (with caveats in the current implementation)
as explained below.</p>
</div>
<div class="paragraph">
<p>Writes to a Kudu client are optionally buffered in memory until they are flushed and sent
to the server. During the client&#8217;s session flush, the rows for each tablet are batched
together, and sent to the tablet server which hosts the leader replica of the tablet.
Since there are no inter-tablet transactions, each of these batches represents a single,
independent write operation with its own timestamp.
However you have the option to impose some constraints on the assigned timestamps
and on how writes to different tablets can be observed by clients.</p>
</div>
<div class="paragraph">
<p>Kudu, like Spanner, was designed to be externally consistent <a href="#5">[5]</a>, preserving consistency
even when operations span multiple tablets and even multiple data centers. In practice this
means that, if a write operation changes item <em>x</em> at tablet <em>A</em>, and a following write
operation changes item <em>y</em> at tablet <em>B</em>, you might want to enforce that if
the change to <em>y</em> is observed, the change to <em>x</em> must also be observed. There
are many examples where this can be important. For example,  if Kudu is
storing clickstreams for further analysis, and two clicks follow each other but
are stored in different tablets, subsequent clicks should be assigned subsequent
timestamps so that the causal relationship between them is captured.</p>
</div>
<div class="paragraph">
<div class="title"><code>CLIENT_PROPAGATED</code> Consistency</div>
<p>Kudu&#8217;s default external consistency mode is called <code>CLIENT_PROPAGATED</code>.
See <a href="#1">[1]</a> for an extensive explanation on how it works. In brief, this mode causes writes
from <em>a single client</em> to be automatically externally consistent. In this mode, writes are only externally
consistent from the perspective of a single client. In the clickstream scenario above,
if the two clicks are submitted by different client instances, the application must
manually propagate timestamps from one client to the other for the causal relationship
to be captured.</p>
</div>
<div class="paragraph">
<p><code>CLIENT_PROPAGATED</code> consistency is currently only available on the java client
and is exposed through the <code>AsyncKuduClient#getLastPropagatedTimestamp()</code> and
<code>AsyncKuduClient#setLastPropagatedTimestamp()</code> methods.</p>
</div>
<div class="paragraph">
<div class="title"><code>Commit Wait</code> Consistency</div>
<p>Kudu also implements an experimental implementation of an external consistency
model used in Google&#8217;s Spanner , called <code>Commit Wait</code>. <code>Commit Wait</code> works
by tightly synchronizing the clocks on all machines in the cluster. Then, when a
write occurs, timestamps are assigned and the results of the write are not made
visible until enough time has passed so that no other machine in the cluster could
possibly assign a lower timestamp to a following write.</p>
</div>
<div class="paragraph">
<p>For the moment, Kudu&#8217;s experimental implementation of <code>Commit Wait</code> is only available
in the java client, by setting <code>KuduSession#setExternalConsistencyMode()</code>
to <code>COMMIT_WAIT</code>. When using this mode, the latency of writes is tightly
tied to the accuracy of clocks on all the cluster hosts, and using this mode
with loose clock synchronization causes writes to take a long time to complete or even time
out. See <a href="#known_issues">Known Issues and Limitations</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_read_operations_scans"><a class="link" href="#_read_operations_scans">Read Operations (Scans)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Scans are read operations performed by clients that may span one or more rows across
one or more tablets. When a server receives a scan, it takes a snapshot of the MVCC
state and then proceeds in one of two ways depending on the read mode selected by
the user by means of the <code>KuduScanner::SetReadMode()</code> method.</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>READ_LATEST</code></dt>
<dd>
<p>This is the default read mode. The server takes a snapshot of
the MVCC state and proceeds with the read immediately. Reads in this mode only yield
'Read Committed' isolation.</p>
</dd>
<dt class="hdlist1"><code>READ_AT_SNAPSHOT</code></dt>
<dd>
<p>In this read mode, scans are consistent and repeatable. A
timestamp for the snapshot is selected either by the server, or set
explicitly by the user through <code>KuduScanner::SetSnapshotMicros()</code>. Explicitly setting
the timestamp is recommended; see <a href="#recommendations">Recommendations</a>. The server waits until this
timestamp is 'safe' (until all write operations that have a lower timestamp have
completed and are visible). This delay, coupled with an external consistency method,
will eventually allow Kudu to have full <code>strict-serializable</code> semantics for reads
and writes. This is still a work in progress and some anomalies are still possible
(see <a href="#known_issues">Known Issues and Limitations</a>). Only scans in this mode can be fault-tolerant.</p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>Selecting between read modes requires balancing the trade-offs and making a choice
that fits your workload. For instance, a reporting application that needs to
scan the entire database might need to perform careful accounting operations, so that
scan may need to be fault-tolerant, but probably doesn&#8217;t require a to-the-microsecond
up-to-date view of the database. In that case, you might choose <code>READ_AT_SNAPSHOT</code>
and select a timestamp that is a few seconds in the past when the scan starts. On
the other hand, a machine learning workload that is not ingesting the whole data
set and is already statistical in nature might not require the scan to be repeatable,
so you might choose <code>READ_LATEST</code> instead.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="known_issues"><a class="link" href="#known_issues">Known Issues and Limitations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>We plan to fix the following issues. Monitor the linked JIRAs for progress.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_serialization"><a class="link" href="#_serialization">Serialization</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are several gaps and corner cases that prevent Kudu from being fully strictly-serializable
in some situations, at the moment. Below are the details and next, some recommendations.</p>
</div>
<div class="sect2">
<h3 id="known_issues_scans"><a class="link" href="#known_issues_scans">Scans</a></h3>
<div class="ulist">
<ul>
<li>
<p>Support for <code>COMMIT_WAIT</code> is experimental and requires careful tuning of the
time-synchronization protocol, such as NTP (Network Time Protocol).</p>
</li>
<li>
<p>Support for externally-consistent write modes is only fully available in the Java
API at this time. (see <a href="https://issues.cloudera.org/browse/KUDU-1187">KUDU-1187</a>)</p>
</li>
<li>
<p>In some rare circumstances, the <code>READ_AT_SNAPSHOT</code> scan mode may yield anomalous,
non-repeatable reads.</p>
<div class="ulist">
<ul>
<li>
<p>When scanning a replica at a snapshot, the replica may not have received all the writes
from the leader and might reply immediately, yielding a non-repeatable read (see <a href="https://issues.cloudera.org/browse/KUDU-798">KUDU-798</a>).</p>
</li>
<li>
<p>On a leader change, scans at a snapshot whose timestamp is beyond the last
write may also yield non-repeatable reads (see <a href="https://issues.cloudera.org/browse/KUDU-1188">KUDU-1188</a>). See <a href="#recommendations">Recommendations</a> for a workaround.</p>
</li>
<li>
<p>When performing multi-tablet scans without selecting a snapshot timestamp (see <a href="https://issues.cloudera.org/browse/KUDU-1189">KUDU-1189</a>).</p>
</li>
</ul>
</div>
</li>
<li>
<p>Impala scans are currently performed as <code>READ_LATEST</code> and have no consistency
guarantees.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_writes"><a class="link" href="#_writes">Writes</a></h3>
<div class="ulist">
<ul>
<li>
<p>When a write fails with a timeout or is aborted, it is possible that it may
actually be committed. Kudu is currently missing a way to determine if a particular
timed-out write ever actually succeeded. On a retry, the write may succeed but
may also generate errors if some rows have already been inserted, or deleted (see <a href="https://issues.cloudera.org/browse/KUDU-568">KUDU-568</a>).</p>
</li>
<li>
<p>When a delete is performed to a row that has already been flushed, and the row is reinserted
all history is reset (see <a href="https://issues.cloudera.org/browse/KUDU-237">KUDU-237</a>).
This is not the case for rows that haven&#8217;t been flushed yet and still reside in memory.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="recommendations"><a class="link" href="#recommendations">Recommendations</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>If repeatable snapshot reads are a requirement, use <code>READ_AT_SNAPSHOT</code>
with a timestamp that is slightly in the past (between 2-5 seconds, ideally).
This will circumvent the anomalies described in <a href="#known_issues_scans">Scans</a>. Even when the
anomalies have been addressed, back-dating the timestamp will always make scans
faster, since they are unlikely to block.</p>
</li>
<li>
<p>If external consistency is a requirement and you decide to use <code>Commit Wait</code>, the
time-synchronization protocol needs to be tuned carefully. Each transaction will wait
2x the maximum clock error at the time of execution, which is usually in the 100 msec.
to 1 sec. range with the default settings, maybe more. Thus, transactions would take at least
200 msec. to 2 sec. to complete when using the default settings and may even time out.</p>
<div class="ulist">
<ul>
<li>
<p>A local server should be used as a time server. We&#8217;ve performed experiments using the default
NTP time source available in a Google Compute Engine data center and were able to obtain
a reasonable tight max error bound, usually varying between 12-17 milliseconds.</p>
</li>
<li>
<p>The following parameters should be adjusted in <code>/etc/ntp.conf</code> to tighten the maximum error:</p>
<div class="ulist">
<ul>
<li>
<p><code>server my_server.org iburst minpoll 1 maxpoll 8</code></p>
</li>
<li>
<p><code>tinker dispersion 500</code></p>
</li>
<li>
<p><code>tinker allan 0</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
The above parameters minimize <code>maximum error</code> at the expense of <code>estimated error</code>,
the latter might be orders of magnitude above it&#8217;s "normal" value. These parameters also
may place a greater load on the time server, since they make the servers poll much more
frequently.
</td>
</tr>
</table>
</div>
<div class="ulist bibliography">
<div class="title">References</div>
<ul class="bibliography">
<li>
<p><a id="1"></a>[1] David Alves, Todd Lipcon and Vijay Garg. Technical Report: HybridTime - Accessible Global Consistency with High Clock Uncertainty. April, 2014. <a href="http://users.ece.utexas.edu/~garg/pdslab/david/hybrid-time-tech-report-01.pdf" class="bare">http://users.ece.utexas.edu/~garg/pdslab/david/hybrid-time-tech-report-01.pdf</a></p>
</li>
<li>
<p><a id="2"></a>[2] James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, J. J. Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford. 2012. Spanner: Google&#8217;s globally-distributed database. In Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation (OSDI'12). USENIX Association, Berkeley, CA, USA, 251-264.</p>
</li>
<li>
<p><a id="3"></a>[3] Alexander Thomson, Thaddeus Diamond, Shu-Chun Weng, Kun Ren, Philip Shao, and Daniel J. Abadi. 2012. Calvin: fast distributed transactions for partitioned database systems. In Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data (SIGMOD '12). ACM, New York, NY, USA, 1-12. DOI=10.1145/2213836.2213838 <a href="http://doi.acm.org/10.1145/2213836.2213838" class="bare">http://doi.acm.org/10.1145/2213836.2213838</a></p>
</li>
<li>
<p><a id="4"></a>[4] Diego Ongaro and John Ousterhout. 2014. In search of an understandable consensus algorithm. In Proceedings of the 2014 USENIX conference on USENIX Annual Technical Conference (USENIX ATC'14), Garth Gibson and Nickolai Zeldovich (Eds.). USENIX Association, Berkeley, CA, USA, 305-320.</p>
</li>
<li>
<p><a id="5"></a>[5] Kwei-Jay Lin, "Consistency issues in real-time database systems," in System Sciences, 1989. Vol.II: Software Track, Proceedings of the Twenty-Second Annual Hawaii International Conference on , vol.2, no., pp.654-661 vol.2, 3-6 Jan 1989 doi: 10.1109/HICSS.1989.48069</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="introduction.html">Introducing Kudu</a> 
      </li> 
      <li>

          <a href="release_notes.html">Kudu Release Notes</a> 
      </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>
<span class="active-toc">Kudu Transaction Semantics</span>
            <ul class="sectlevel1">
<li><a href="#_single_tablet_write_operations">Single tablet write operations</a></li>
<li><a href="#_writing_to_multiple_tablets">Writing to multiple tablets</a></li>
<li><a href="#_read_operations_scans">Read Operations (Scans)</a></li>
<li><a href="#known_issues">Known Issues and Limitations</a></li>
<li><a href="#_serialization">Serialization</a>
<ul class="sectlevel2">
<li><a href="#known_issues_scans">Scans</a></li>
<li><a href="#_writes">Writes</a></li>
</ul>
</li>
<li><a href="#recommendations">Recommendations</a></li>
</ul> 
      </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">
        <p class="pull-left">
        <a href="http://incubator.apache.org"><img src="/img/apache-incubator.png" width="225" height="53" align="right"/></a>
        </p>
        <p class="small">
        Apache Kudu (incubating) is an effort undergoing incubation at the Apache Software
        Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
        required of all newly accepted projects until a further review
        indicates that the infrastructure, communications, and decision making
        process have stabilized in a manner consistent with other successful
        ASF projects. While incubation status is not necessarily a reflection
        of the completeness or stability of the code, it does indicate that the
        project has yet to be fully endorsed by the ASF.

        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2016-04-26 19:57:06 PDT 
        </p>
      </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>

