kudu-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mpe...@apache.org
Subject [41/51] [abbrv] [partial] kudu-site git commit: Publish commit(s) from site source repo: d78c4ca Update website for 1.7.0 release c9969cd Update download URLs 160e66c Fix broken doc guide link 8a2d8b9 Update the latest committers 188c57d site_t
Date Thu, 22 Mar 2018 16:12:30 GMT
http://git-wip-us.apache.org/repos/asf/kudu-site/blob/e9ed1525/docs/release_notes.html
----------------------------------------------------------------------
diff --git a/docs/release_notes.html b/docs/release_notes.html
index 531bde2..dc184e0 100644
--- a/docs/release_notes.html
+++ b/docs/release_notes.html
@@ -7,7 +7,7 @@
     <!-- 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.6.0 Release Notes</title>
+    <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"
@@ -114,16 +114,21 @@ limitations under the License.
   <div class="row">
     <div class="col-md-9">
 
-<h1>Apache Kudu 1.6.0 Release Notes</h1>
+<h1>Apache Kudu 1.7.0 Release Notes</h1>
       <div class="sect1">
-<h2 id="rn_1.6.0_upgrade_notes"><a class="link" href="#rn_1.6.0_upgrade_notes">Upgrade Notes</a></h2>
+<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.5.0 is supported and no special upgrade steps
-are required. A rolling upgrade may work, however it has not been tested.
-When upgrading Kudu, it is recommended to first shut down all Kudu processes
+<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>
@@ -132,20 +137,20 @@ the Kudu processes on all servers in the cluster.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="rn_1.6.0_obsoletions"><a class="link" href="#rn_1.6.0_obsoletions">Obsoletions</a></h2>
+<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>Support for Spark 1 (kudu-spark_2.10) has been <strong>removed</strong> in Kudu 1.6.0 and
-now only Spark 2 is supported. Spark 1 support was deprecated in Kudu 1.5.0.</p>
+<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.6.0_deprecations"><a class="link" href="#rn_1.6.0_deprecations">Deprecations</a></h2>
+<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>
@@ -158,37 +163,67 @@ the next major release.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="rn_1.6.0_new_features"><a class="link" href="#rn_1.6.0_new_features">New features</a></h2>
+<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>Tablet servers' tolerance of disk failures is now enabled by default and has
-been extended to handle data directory failures at runtime. In the event of
-a disk failure at runtime, any tablets with data on a failed disk will be
-shut down and restarted on another tablet server. There is a configurable
-tradeoff between a newly added tablet&#8217;s tolerance to disk failures and its
-ability to parallelize reads via the experimental
-<code>--fs_target_data_dirs_per_tablet</code> flag. Tablets that are spread across fewer
-disks are less likely to be affected by a disk failure, at the cost of
-reduced parallelism. By default, tablets are striped across all available
-disks. Note that the first configured data directory and the WAL directory
-cannot currently tolerate disk failures. This will be further improved in
-future Kudu releases.</p>
-</li>
-<li>
-<p>Kudu servers can now adopt new data directories via the new
-<code>kudu fs update_dirs</code> tool. The new directory will be used by new tablet
-replicas only. Note that removing directories is not yet supported
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2202">KUDU-2202</a>).</p>
-</li>
-<li>
-<p>Kudu servers have two new flags to control webui TLS/HTTPS
-settings: <code>--webserver_tls_ciphers</code> and <code>--webserver_tls_min_protocol</code>.
-These flags allow the advertised TLS ciphers and TLS protocol versions to be
-configured. Additionally, the webserver now excludes insecure legacy ciphers
-by default
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2190">KUDU-2190</a>).</p>
+<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>
@@ -200,161 +235,209 @@ by default
 <div class="ulist">
 <ul>
 <li>
-<p>Kudu servers can now tolerate short interruptions in NTP clock
-synchronization. NTP synchronization is still required when any Kudu daemon
-starts up. If NTP synchronization is not available, diagnostic information
-is now logged to help pinpoint the issue
-(see <a href="https://issues.apache.org/jira/browse/KUDU-1578">KUDU-1578</a>).</p>
-</li>
-<li>
-<p>Tablet server startup time has been improved significantly on servers
-containing large numbers of blocks.</p>
-</li>
-<li>
-<p>The log block manager now performs disk data deletion in batches. This
-optimization can significantly reduce the time taken to delete data on a tablet.</p>
+<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>The usage of sensitive data redaction flag has been slightly changed. By
-setting <code>--redact=log</code> flag, redaction will be disabled in the web UI but
-retained for server logs. Alternatively, <code>--redact=none</code> can be used to
-disable redaction completely.</p>
+<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 Spark DataSource integration now can take advantage of scan locality
-for better scan performance, the scan will take place at the closest replica
-instead of going to the leader.</p>
+<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>Various optimizations were made to reduce the 99th percentile latency of
-writes on the tablet server. This can also improve throughput on certain
-write workloads, particularly on larger clusters.</p>
+<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>Kudu may now be configured to ignore system-wide auth_to_local mappings
-configured in /etc/krb5.conf by setting the configuration flag
-<code>--use_system_auth_to_local=false</code>
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2198">KUDU-2198</a>).</p>
+<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>The performance of the compaction scheduler has been improved. In
-previous versions, certain types of time series workloads were found to
-cause compaction scheduling to take tens of seconds. These workloads now
-schedule compactions an order of magnitude more efficiently.</p>
+<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 compaction scheduler has been improved to avoid running a compaction
-when the benefit of that compaction is extremely small.</p>
+<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>Tablet servers now consider the health of all replicas of a tablet before
-deciding to evict one. This can improve stability of the Kudu cluster after
-experiencing multiple simultaneous daemon failures
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2048">KUDU-2048</a>).</p>
+<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>Several performance improvements have been made to the Kudu master,
-particularly in concurrency of clients opening tables. This should improve
-performance in highly concurrent workloads.</p>
+<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>The on-disk size metric for a tablet now includes all data and metadata.
-Previously, it excluded WAL segments and consensus metadata
-(see <a href="https://issues.apache.org/jira/browse/KUDU-1755">KUDU-1755</a>).</p>
+<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>Added verbose mode for the 'kudu cluster ksck' command to enable output
-of detailed information on the cluster&#8217;s metadata, even when no errors are
-detected.</p>
+<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.6.0_fixed_issues"><a class="link" href="#rn_1.6.0_fixed_issues">Fixed Issues</a></h2>
+<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>HybridTime timestamp propagation now works in the Java client when using scan
-tokens (see <a href="https://issues.apache.org/jira/browse/KUDU-1411">KUDU-1411</a>).</p>
+<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 an error message commonly found in tablet server logs indicating that
-operations were being read "from the future"
-(see <a href="https://issues.apache.org/jira/browse/KUDU-1078">KUDU-1078</a>).</p>
+<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>Tombstoned tablets no longer report metrics
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2044">KUDU-2044</a>).</p>
+<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>Fixed a bug in the C++ client which could cause tablets to be erroneously
-pruned, or skipped, during certain scans, resulting in fewer results than
-expected being returned from queries. The bug only affected tables whose range
-partition columns are a proper prefix of the primary key
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2173">KUDU-2173</a>).</p>
+<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>Published Kudu Java artifacts are now fully compatible with JRE 7 and JRE 8.
-There was previously a bug in the release process which made them compatible
-only with JRE 8
-(see <a href="https://issues.apache.org/jira/browse/KUDU-2188">KUDU-2188</a>).</p>
+<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 typo in the list of default TLS ciphers used by Kudu servers. As a
-result, two additional cipher suites are now available:</p>
-<div class="ulist">
-<ul>
+<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>ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128)  Mac=SHA256</p>
+<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>AES256-GCM-SHA384       TLSv1.2 Kx=RSA  Au=RSA Enc=AESGCM(256) Mac=AEAD</p>
+<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>
-</ul>
-</div>
+<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.6.0_wire_compatibility"><a class="link" href="#rn_1.6.0_wire_compatibility">Wire Protocol compatibility</a></h2>
+<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.6.0 is wire-compatible with previous versions of Kudu:</p>
+<p>Kudu 1.7.0 is wire-compatible with previous versions of Kudu:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>Kudu 1.6 clients may connect to servers running Kudu 1.0 or later. If the client uses
+<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.5 and Kudu 1.6 servers is believed to be possible
+<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.6 with the exception of the
+<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.6 and versions earlier than 1.3:</p>
+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.6 cluster is configured with authentication or encryption set to "required",
+<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.6 cluster is configured with authentication and encryption set to "optional"
+<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>
@@ -362,36 +445,75 @@ or "disabled", older clients will still be able to connect.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="rn_1.6.0_incompatible_changes"><a class="link" href="#rn_1.6.0_incompatible_changes">Incompatible Changes in Kudu 1.6.0</a></h2>
+<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.6.0_client_compatibility"><a class="link" href="#rn_1.6.0_client_compatibility">Client Library Compatibility</a></h3>
+<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.6 Java client library is API- and ABI-compatible with Kudu 1.5. Applications
-written against Kudu 1.5 will compile and run against the Kudu 1.6 client library and
+<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.6 C++ client is API- and ABI-forward-compatible with Kudu 1.5.
-Applications written and compiled against the Kudu 1.5 client library will run without
-modification against the Kudu 1.6 client library. Applications written and compiled
-against the Kudu 1.6 client library will run without modification against the Kudu 1.5
+<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.6 Python client is API-compatible with Kudu 1.5. Applications
-written against Kudu 1.5 will continue to run against the Kudu 1.6 client
+<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.6.0_known_issues"><a class="link" href="#rn_1.6.0_known_issues">Known Issues and Limitations</a></h2>
+<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
@@ -400,14 +522,14 @@ documentation.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="rn_1.6.0_contributors"><a class="link" href="#rn_1.6.0_contributors">Contributors</a></h2>
+<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.6 includes contributions from 14 people, including one
-first-time contributor, Hector Camarena.</p>
+<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>Thanks for helping to make Kudu even better!</p>
+<p>Thank you for helping to make Kudu even better!</p>
 </div>
 </div>
 </div>
@@ -471,20 +593,20 @@ first-time contributor, Hector Camarena.</p>
       <li>
 <span class="active-toc">Kudu Release Notes</span>
             <ul class="sectlevel1">
-<li><a href="#rn_1.6.0_upgrade_notes">Upgrade Notes</a></li>
-<li><a href="#rn_1.6.0_obsoletions">Obsoletions</a></li>
-<li><a href="#rn_1.6.0_deprecations">Deprecations</a></li>
-<li><a href="#rn_1.6.0_new_features">New features</a></li>
+<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.6.0_fixed_issues">Fixed Issues</a></li>
-<li><a href="#rn_1.6.0_wire_compatibility">Wire Protocol compatibility</a></li>
-<li><a href="#rn_1.6.0_incompatible_changes">Incompatible Changes in Kudu 1.6.0</a>
+<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.6.0_client_compatibility">Client Library Compatibility</a></li>
+<li><a href="#rn_1.7.0_client_compatibility">Client Library Compatibility</a></li>
 </ul>
 </li>
-<li><a href="#rn_1.6.0_known_issues">Known Issues and Limitations</a></li>
-<li><a href="#rn_1.6.0_contributors">Contributors</a></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>
@@ -561,7 +683,7 @@ first-time contributor, Hector Camarena.</p>
 </div>
       <footer class="footer">
         <p class="small">
-        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2017-12-01 23:56:01 PST 
+        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2018-03-19 08:09:15 CDT 
         </p>
       </footer>
     </div>

http://git-wip-us.apache.org/repos/asf/kudu-site/blob/e9ed1525/docs/scaling_guide.html
----------------------------------------------------------------------
diff --git a/docs/scaling_guide.html b/docs/scaling_guide.html
new file mode 100644
index 0000000..885d3de
--- /dev/null
+++ b/docs/scaling_guide.html
@@ -0,0 +1,585 @@
+<!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 Scaling Guide</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/">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>Apache Kudu Scaling Guide</h1>
+      <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>This document describes in detail how Kudu scales with respect to various system resources,
+including memory, file descriptors, and threads. See the
+<a href="known_issues.html#_scale">scaling limits</a> for the maximum recommended parameters of a Kudu
+cluster. They can be used to estimate roughly the number of servers required for a given quantity
+of data.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+The recommendations and conclusions here are only approximations. Appropriate numbers
+depend on use case. There is no substitute for measurement and monitoring of resources used during a
+representative workload.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_terms"><a class="link" href="#_terms">Terms</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>We will use the following terms:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><strong>hot replica</strong>: A tablet replica that is continuously receiving writes. For example, in a time
+series use case, tablet replicas for the most recent range partition on a time column would be
+continuously receiving the latest data, and would be hot replicas.</p>
+</li>
+<li>
+<p><strong>cold replica</strong>: A tablet replica that is not hot, i.e. a replica that is not frequently receiving
+writes, for example, once every few minutes. A cold replica may be read from. For example, in a time
+series use case, tablet replicas for previous range partitions on a time column would not receive
+writes at all, or only occasionally receive late updates or additions, but may be constantly read.</p>
+</li>
+<li>
+<p><strong>data on disk</strong>: The total amount of data stored on a tablet server across all disks,
+post-replication, post-compression, and post-encoding.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_example_workload"><a class="link" href="#_example_workload">Example Workload</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The sections below perform sample calculations using the following parameters:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>200 hot replicas per tablet server</p>
+</li>
+<li>
+<p>1600 cold replicas per tablet server</p>
+</li>
+<li>
+<p>8TB of data on disk per tablet server (about 4.5GB/replica)</p>
+</li>
+<li>
+<p>512MB block cache</p>
+</li>
+<li>
+<p>40 cores per server</p>
+</li>
+<li>
+<p>limit of 32000 file descriptors per server</p>
+</li>
+<li>
+<p>a read workload with 1 frequently-scanned table with 40 columns</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>This workload resembles a time series use case, where the hot replicas correspond to the most recent
+range partition on time.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="memory"><a class="link" href="#memory">Memory</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The flag <code>--memory_limit_hard_bytes</code> determines the maximum amount of memory that a Kudu tablet
+server may use. The amount of memory used by a tablet server scales with data size, write workload,
+and read concurrency. The following table provides numbers that can be used to compute a rough
+estimate of memory usage.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 1. Tablet Server Memory Usage</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Multiplier</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Memory required per TB of data on disk</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.5GB per 1TB data on disk</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Amount of memory per unit of data on disk required for
+basic operation of the tablet server.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Hot Replicas' MemRowSets and DeltaMemStores</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">minimum 128MB per hot replica</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum amount of data
+to flush per MemRowSet flush. For most use cases, updates should be rare compared to inserts, so the
+DeltaMemStores should be very small.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Scans</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">256KB per column per core for read-heavy tables</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Amount of memory used by scanners, and which
+will be constantly needed for tables which are constantly read.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Block Cache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Fixed by <code>--block_cache_capacity_mb</code> (default 512MB)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Amount of memory reserved for use by the
+block cache.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Using this information for the example load gives the following breakdown of memory usage:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 2. Example Tablet Server Memory Usage</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Amount</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8TB data on disk</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8TB * 1.5GB / 1TB = 12GB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">200 hot replicas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">200 * 128MB = 25.6GB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1 40-column, frequently-scanned table</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40 * 40 * 256KB = 409.6MB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Block Cache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>--block_cache_capacity_mb=512</code> = 512MB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Expected memory usage</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">38.5GB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Recommended hard limit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">52GB</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Using this as a rough estimate of Kudu&#8217;s memory usage, select a memory limit so that the expected
+memory usage of Kudu is around 50-75% of the hard limit.</p>
+</div>
+<div class="sect2">
+<h3 id="_verifying_if_a_memory_limit_is_sufficient"><a class="link" href="#_verifying_if_a_memory_limit_is_sufficient">Verifying if a Memory Limit is sufficient</a></h3>
+<div class="paragraph">
+<p>After configuring an appropriate memory limit with <code>--memory_limit_hard_bytes</code>, run a workload and
+monitor the Kudu tablet server process&#8217;s RAM usage. The memory usage should stay around 50-75% of
+the hard limit, with occasional spikes above 75% but below 100%. If the tablet server runs above 75%
+consistently, the memory limit should be increased.</p>
+</div>
+<div class="paragraph">
+<p>Additionally, it&#8217;s also useful to monitor the logs for memory rejections, which look like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Service unavailable: Soft memory limit exceeded (at 96.35% of capacity)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>and watch the memory rejections metrics:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>leader_memory_pressure_rejections</code></p>
+</li>
+<li>
+<p><code>follower_memory_pressure_rejections</code></p>
+</li>
+<li>
+<p><code>transaction_memory_pressure_rejections</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Occasional rejections due to memory pressure are fine and act as backpressure to clients. Clients
+will transparently retry operations. However, no operations should time out.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="file_descriptors"><a class="link" href="#file_descriptors">File Descriptors</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Processes are allotted a maximum number of open file descriptors (also referred to as fds). If a
+tablet server attempts to open too many fds, it will typically crash with a message saying something
+like "too many open files". The following table summarizes the sources of file descriptor usage in a
+Kudu tablet server process:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 3. Tablet Server File Descriptor Usage</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Multiplier</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File cache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Fixed by <code>--block_manager_max_open_files</code> (default 40% of process maximum)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum allowed open fds reserved for use by
+the file cache.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Hot replicas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2 per WAL segment, 1 per WAL index</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of fds used by hot replicas. See below
+for more explanation.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Cold replicas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3 per cold replica</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of fds used per cold replica: 2 for the single WAL
+segment and 1 for the single WAL index.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Every replica has at least one WAL segment and at least one WAL index, and should have the same
+number of segments and indices; however, the number of segments and indices can be greater for a
+replica if one of its peer replicas is falling behind. WAL segment and index fds are closed as WALs
+are garbage collected.</p>
+</div>
+<div class="paragraph">
+<p>Using this information for the example load gives the following breakdown of file descriptor usage,
+under the assumption that some replicas are lagging and using 10 WAL segments:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 4. Example Tablet Server File Descriptor Usage</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Amount</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">file cache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40% * 32000 fds = 12800 fds</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1600 cold replicas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1600 cold replicas * 3 fds / cold replica = 4800 fds</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">200 hot replicas</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(2 / segment * 10 segments/hot replica * 200 hot replicas) + (1 / index * 10 indices / hot replica * 200 hot replicas) = 6000 fds</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Total</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">23600 fds</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>So for this example, the tablet server process has about 32000 - 23600 = 8400 fds to spare.</p>
+</div>
+<div class="paragraph">
+<p>There is typically no downside to configuring a higher file descriptor limit if approaching the
+currently configured limit.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="threads"><a class="link" href="#threads">Threads</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Processes are allotted a maximum number of threads by the operating system, and this limit is
+typically difficult or impossible to change. Therefore, this section is more informational than
+advisory.</p>
+</div>
+<div class="paragraph">
+<p>If a Kudu tablet server&#8217;s thread count exceeds the OS limit, it will crash, usually with a message
+in the logs like "pthread_create failed: Resource temporarily unavailable". If the system thread
+count limit is exceeded, other processes on the same node may also crash.</p>
+</div>
+<div class="paragraph">
+<p>Threads and threadpools are used all over Kudu for various purposes, but the number of threads found
+in nearly all of these does not scale with load or data/tablet size; instead, the number of threads
+is either a hardcoded constant, a constant defined by a configuration parameter, or based on a
+static dimension (such as the number of CPU cores).</p>
+</div>
+<div class="paragraph">
+<p>The only exception to this is the WAL append thread, one of which exists for every "hot" replica.
+Note that all replicas may be considered hot at startup, so tablet servers' thread usage will
+generally peak when started and settle down thereafter.</p>
+</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">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">
+        <p class="small">
+        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2018-03-17 09:37:29 CDT 
+        </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>
+

http://git-wip-us.apache.org/repos/asf/kudu-site/blob/e9ed1525/docs/schema_design.html
----------------------------------------------------------------------
diff --git a/docs/schema_design.html b/docs/schema_design.html
index 93f9f10..6e94076 100644
--- a/docs/schema_design.html
+++ b/docs/schema_design.html
@@ -201,6 +201,9 @@ column types include:</p>
 <p>double-precision (64-bit) IEEE-754 floating-point number</p>
 </li>
 <li>
+<p>decimal (see <a href="#decimal">Decimal Type</a> for details)</p>
+</li>
+<li>
 <p>UTF-8 encoded string (up to 64KB uncompressed)</p>
 </li>
 <li>
@@ -232,6 +235,74 @@ an explicit version or timestamp column.
 </table>
 </div>
 <div class="sect2">
+<h3 id="decimal"><a class="link" href="#decimal">Decimal Type</a></h3>
+<div class="paragraph">
+<p>The <code>decimal</code> 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 <code>float</code> and <code>double</code> make those types impractical. The <code>decimal</code>
+type is also useful for integers larger than int64 and cases with fractional values
+in a primary key.</p>
+</div>
+<div class="paragraph">
+<p>The <code>decimal</code> type is a parameterized type that takes precision and scale type
+attributes.</p>
+</div>
+<div class="paragraph">
+<p><strong>Precision</strong> represents the total number of digits that can be represented by the
+column, regardless of the location of the decimal point. This value must be between
+1 and 38 and has no default. For example, a precision of 4 is required to represent
+integer values up to 9999, or to represent values up to 99.99 with two fractional
+digits. You can also represent corresponding negative values, without any
+change in the precision. For example, the range -9999 to 9999 still only requires
+a precision of 4.</p>
+</div>
+<div class="paragraph">
+<p><strong>Scale</strong> represents the number of fractional digits. This value must be between 0
+and the precision. A scale of 0 produces integral values, with no fractional part.
+If precision and scale are equal, all of the digits come after the decimal point.
+For example, a decimal with precision and scale equal to 3 can represent values
+between -0.999 and 0.999.</p>
+</div>
+<div class="paragraph">
+<p><strong>Performance considerations:</strong></p>
+</div>
+<div class="paragraph">
+<p>Kudu stores each value in as few bytes as possible depending on the precision
+specified for the decimal column. For that reason it is not advised to just use
+the highest precision possible for convenience. Doing so could negatively impact
+performance, memory and storage.</p>
+</div>
+<div class="paragraph">
+<p>Before encoding and compression:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Decimal values with precision of 9 or less are stored in 4 bytes.</p>
+</li>
+<li>
+<p>Decimal values with precision of 10 through 18 are stored in 8 bytes.</p>
+</li>
+<li>
+<p>Decimal values with precision greater than 18 are stored in 16 bytes.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The precision and scale of <code>decimal</code> columns cannot be changed by altering
+the table.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
 <h3 id="encoding"><a class="link" href="#encoding">Column Encoding</a></h3>
 <div class="paragraph">
 <p>Each column in a Kudu table can be created with an encoding, based on the type
@@ -263,7 +334,7 @@ of the column.</p>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bitshuffle</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">float, double</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">float, double, decimal</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">plain, bitshuffle</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bitshuffle</p></td>
 </tr>
@@ -358,30 +429,40 @@ recommended to apply additional compression on top of this encoding.</p>
 <h2 id="primary-keys"><a class="link" href="#primary-keys">Primary Key Design</a></h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>Every Kudu table must declare a primary key index comprised of one or more
-columns. Primary key columns must be non-nullable, and may not be a boolean or
-floating-point type. Once set during table creation, the set of columns in the
-primary key may not be altered. Like an RDBMS primary key, the Kudu primary key
-enforces a uniqueness constraint; attempting to insert a row with the same
-primary key values as an existing row will result in a duplicate key error.</p>
+<p>Every Kudu table must declare a primary key comprised of one or more columns.
+Like an RDBMS primary key, the Kudu primary key enforces a uniqueness constraint.
+Attempting to insert a row with the same primary key values as an existing row
+will result in a duplicate key error.</p>
+</div>
+<div class="paragraph">
+<p>Primary key columns must be non-nullable, and may not be a boolean, float
+or double type.</p>
 </div>
 <div class="paragraph">
-<p>Unlike an RDBMS, Kudu does not provide an auto-incrementing column feature, so
-the application must always provide the full primary key during insert. Row
-delete and update operations must also specify the full primary key of the row
-to be changed; Kudu does not natively support range deletes or updates. The
-primary key values of a column may not be updated after the row is inserted;
-however, the row may be deleted and re-inserted with the updated value.</p>
+<p>Once set during table creation, the set of columns in the primary key may not
+be altered.</p>
+</div>
+<div class="paragraph">
+<p>Unlike an RDBMS, Kudu does not provide an auto-incrementing column feature,
+so the application must always provide the full primary key during insert.</p>
+</div>
+<div class="paragraph">
+<p>Row delete and update operations must also specify the full primary key of the
+row to be changed. Kudu does not natively support range deletes or updates.</p>
+</div>
+<div class="paragraph">
+<p>The primary key values of a column may not be updated after the row is inserted.
+However, the row may be deleted and re-inserted with the updated value.</p>
 </div>
 <div class="sect2">
 <h3 id="indexing"><a class="link" href="#indexing">Primary Key Index</a></h3>
 <div class="paragraph">
-<p>As with many traditional relational databases, Kudu&#8217;s primary key is a clustered
-index. All rows within a tablet are kept in primary key sorted order. Kudu scans
-which specify equality or range constraints on the primary key will
-automatically skip rows which can not satisfy the predicate. This allows
-individual rows to be efficiently found by specifying equality constraints on
-the primary key columns.</p>
+<p>As with many traditional relational databases, Kudu’s primary key is in a
+clustered index. All rows within a tablet are sorted by its primary key.</p>
+</div>
+<div class="paragraph">
+<p>When scanning Kudu rows, use equality or range predicates on primary key
+columns to efficiently find the rows.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -398,6 +479,57 @@ predicates to skip entire tablets.
 </table>
 </div>
 </div>
+<div class="sect2">
+<h3 id="Backfilling"><a class="link" href="#Backfilling">Considerations for Backfill Inserts</a></h3>
+<div class="paragraph">
+<p>This section discuss a primary key design consideration for timeseries use
+cases where the primary key is a timestamp, or the first column of the primary
+key is a timestamp.</p>
+</div>
+<div class="paragraph">
+<p>Each time a row is inserted into a Kudu table, Kudu looks up the primary key in
+the primary key index storage to check whether that primary key is already
+present in the table. If the primary key exists in the table, a "duplicate key"
+error is returned.  In the typical case where data is being inserted at
+the current time as it arrives from the data source, only a small range of
+primary keys are "hot". So, each of these "check for presence" operations is
+very fast. It hits the cached primary key storage in memory and doesn&#8217;t require
+going to disk.</p>
+</div>
+<div class="paragraph">
+<p>In the case when you load historical data, which is called "backfilling", from
+an offline data source, each row that is inserted is likely to hit a cold area
+of the primary key index which is not resident in memory and will cause one or
+more HDD disk seeks. For example, in a normal ingestion case where Kudu sustains
+a few million inserts per second, the "backfill" use case might sustain only
+a few thousand inserts per second.</p>
+</div>
+<div class="paragraph">
+<p>To alleviate the performance issue during backfilling, consider the following
+options:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make the primary keys more compressible.</p>
+<div class="paragraph">
+<p>For example, with the first column of a primary key being a random ID of 32-bytes,
+caching one billion primary keys would require at least 32 GB of RAM to stay in
+cache. If caching backfill primary keys from several days ago, you need to have
+several times 32 GB of memory. By changing the primary key to be more compressible,
+you increase the likelihood that the primary keys can fit in cache and thus
+reducing the amount of random disk I/Os.</p>
+</div>
+</li>
+<li>
+<p>Use SSDs for storage as random seeks are orders of magnitude faster than spinning disks.</p>
+</li>
+<li>
+<p>Change the primary key structure such that the backfill writes hit a continuous range of primary keys.</p>
+</li>
+</ul>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
@@ -775,20 +907,6 @@ partitioning, which logically adds another dimension of partitioning.</p>
 <div class="paragraph">
 <p>Multiple alteration steps can be combined in a single transactional operation.</p>
 </div>
-<div class="admonitionblock important">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-important" title="Important"></i>
-</td>
-<td class="content">
-<div class="title">Renaming Primary Key Columns</div>
-<a href="https://issues.apache.org/jira/browse/KUDU-1626">KUDU-1626</a>: Kudu does not yet
-support renaming primary key columns.
-</td>
-</tr>
-</table>
-</div>
 </div>
 </div>
 <div class="sect1">
@@ -900,6 +1018,7 @@ altered.</p>
 <li><a href="#_the_perfect_schema">The Perfect Schema</a></li>
 <li><a href="#column-design">Column Design</a>
 <ul class="sectlevel2">
+<li><a href="#decimal">Decimal Type</a></li>
 <li><a href="#encoding">Column Encoding</a></li>
 <li><a href="#compression">Column Compression</a></li>
 </ul>
@@ -907,6 +1026,7 @@ altered.</p>
 <li><a href="#primary-keys">Primary Key Design</a>
 <ul class="sectlevel2">
 <li><a href="#indexing">Primary Key Index</a></li>
+<li><a href="#Backfilling">Considerations for Backfill Inserts</a></li>
 </ul>
 </li>
 <li><a href="#partitioning">Partitioning</a>
@@ -972,7 +1092,7 @@ altered.</p>
 </div>
       <footer class="footer">
         <p class="small">
-        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2017-12-01 23:44:25 PST 
+        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2018-03-17 09:37:29 CDT 
         </p>
       </footer>
     </div>

http://git-wip-us.apache.org/repos/asf/kudu-site/blob/e9ed1525/docs/security.html
----------------------------------------------------------------------
diff --git a/docs/security.html b/docs/security.html
index eda179f..c32b5b5 100644
--- a/docs/security.html
+++ b/docs/security.html
@@ -212,6 +212,22 @@ against a secured Kudu cluster where only the planner node has Kerberos
 credentials.</p>
 </div>
 </div>
+<div class="sect2">
+<h3 id="_client_authentication_to_secure_kudu_clusters"><a class="link" href="#_client_authentication_to_secure_kudu_clusters">Client Authentication to Secure Kudu Clusters</a></h3>
+<div class="paragraph">
+<p>Users running client Kudu applications must first run the <code>kinit</code> command to
+obtain a Kerberos ticket-granting ticket. For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ kinit admin@EXAMPLE-REALM.COM</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Once authenticated, you use the same client code to read from and write to Kudu
+servers with and without Kerberos configuration.</p>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
@@ -506,6 +522,7 @@ which require authentication or encryption.</p>
 <ul class="sectlevel2">
 <li><a href="#_internal_pki">Internal PKI</a></li>
 <li><a href="#_authentication_tokens">Authentication Tokens</a></li>
+<li><a href="#_client_authentication_to_secure_kudu_clusters">Client Authentication to Secure Kudu Clusters</a></li>
 </ul>
 </li>
 <li><a href="#_scalability">Scalability</a></li>
@@ -553,7 +570,7 @@ which require authentication or encryption.</p>
 </div>
       <footer class="footer">
         <p class="small">
-        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2017-12-01 23:44:25 PST 
+        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2018-03-17 09:37:29 CDT 
         </p>
       </footer>
     </div>

http://git-wip-us.apache.org/repos/asf/kudu-site/blob/e9ed1525/docs/transaction_semantics.html
----------------------------------------------------------------------
diff --git a/docs/transaction_semantics.html b/docs/transaction_semantics.html
index 57d1079..7224afc 100644
--- a/docs/transaction_semantics.html
+++ b/docs/transaction_semantics.html
@@ -155,9 +155,9 @@ 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>
+with different levels of 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>
@@ -254,7 +254,7 @@ 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
+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
@@ -349,7 +349,7 @@ the user. The mode may be selected as follows:</p>
 <dl>
 <dt class="hdlist1">Java Client</dt>
 <dd>
-<p>Call <code>KuduScannerBuilder#setReadMode(&#8230;&#8203;)</code></p>
+<p>Call <code>KuduScannerBuilder#readMode(&#8230;&#8203;)</code></p>
 </dd>
 <dt class="hdlist1">C++ Client</dt>
 <dd>
@@ -391,7 +391,39 @@ up-to-date view of the database. In that case, you might choose <code>READ_AT_SN
 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>
+so you might choose <code>READ_LATEST</code> instead for better scan performance.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Kudu also provides replica selection API for users to choose at which replica the
+scan should be performed:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Java Client</dt>
+<dd>
+<p>Call <code>KuduScannerBuilder#replicaSelection(&#8230;&#8203;)</code></p>
+</dd>
+<dt class="hdlist1">C++ Client</dt>
+<dd>
+<p>Call <code>KuduScanner::SetSelection(&#8230;&#8203;)</code></p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This API is a means to control locality and, in some cases, latency. The replica
+selection API has no effect on the consistency guarantees, which will hold no matter
+which replica is selected.</p>
+</div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 </div>
@@ -403,7 +435,7 @@ so you might choose <code>READ_LATEST</code> instead.</p>
 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">Reads (Scans)</a></h3>
+<h3 id="known_issues_scans"><a class="link" href="#known_issues_scans">Writes</a></h3>
 <div class="ulist">
 <ul>
 <li>
@@ -415,7 +447,7 @@ is discouraged in production environments.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_writes"><a class="link" href="#_writes">Writes</a></h3>
+<h3 id="_reads_scans"><a class="link" href="#_reads_scans">Reads (Scans)</a></h3>
 <div class="ulist">
 <ul>
 <li>
@@ -448,7 +480,7 @@ See <a href="https://issues.apache.org/jira/browse/KUDU-1767">KUDU-1767</a>.</p>
 <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 anomaly described in <a href="#known_issues_scans">Reads (Scans)</a>. Even when the
+This will circumvent the anomaly described in <a href="#known_issues_scans">Writes</a>. Even when the
 anomaly has been addressed, back-dating the timestamp will always make scans
 faster, since they are unlikely to block.</p>
 </li>
@@ -586,8 +618,8 @@ frequently.
 <li><a href="#_read_operations_scans">Read Operations (Scans)</a></li>
 <li><a href="#known_issues">Known Issues and Limitations</a>
 <ul class="sectlevel2">
-<li><a href="#known_issues_scans">Reads (Scans)</a></li>
-<li><a href="#_writes">Writes</a></li>
+<li><a href="#known_issues_scans">Writes</a></li>
+<li><a href="#_reads_scans">Reads (Scans)</a></li>
 <li><a href="#recommendations">Recommendations</a></li>
 </ul>
 </li>
@@ -625,7 +657,7 @@ frequently.
 </div>
       <footer class="footer">
         <p class="small">
-        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2017-03-08 17:29:48 PST 
+        Copyright &copy; 2016 The Apache Software Foundation.  Last updated 2018-03-17 09:37:29 CDT 
         </p>
       </footer>
     </div>


Mime
View raw message