Publish commit(s) from site source repo: 5a54566 Remove extra copy of predicate pushdown post f58955d Blogpost describing predicate evaluation pushdown
Site-Repo-Commit: 5a545660a635b5ab4f1a6413d4f126461203d550 Project: http://git-wip-us.apache.org/repos/asf/kudu-site/repo Commit: http://git-wip-us.apache.org/repos/asf/kudu-site/commit/bc4e6c33 Tree: http://git-wip-us.apache.org/repos/asf/kudu-site/tree/bc4e6c33 Diff: http://git-wip-us.apache.org/repos/asf/kudu-site/diff/bc4e6c33 Branch: refs/heads/asf-site Commit: bc4e6c33c5255cc323dc8d3eb2a2f538816fa3a0 Parents: 83485ff Author: Todd Lipcon <[email protected]> Authored: Thu Sep 15 21:39:37 2016 -0700 Committer: Todd Lipcon <[email protected]> Committed: Thu Sep 15 21:39:37 2016 -0700 ---------------------------------------------------------------------- 2016/02/26/apache-kudu-0-7-0-released.html | 6 +- 2016/03/10/apache-kudu-0-7-1-released.html | 4 +- 2016/03/20/weekly-update.html | 4 +- 2016/03/28/weekly-update.html | 4 +- 2016/04/04/weekly-update.html | 4 +- 2016/04/11/weekly-update.html | 4 +- 2016/04/12/apache-kudu-0-8-0-released.html | 4 +- ...n-apache-kudu-streamsets-data-collector.html | 4 +- 2016/04/18/weekly-update.html | 4 +- .../19/kudu-0-8-0-predicate-improvements.html | 16 +- 2016/04/25/weekly-update.html | 4 +- 2016/04/26/ycsb.html | 69 ++-- 2016/05/03/weekly-update.html | 4 +- 2016/05/09/weekly-update.html | 4 +- 2016/05/16/weekly-update.html | 4 +- 2016/05/23/weekly-update.html | 10 +- 2016/06/01/weekly-update.html | 4 +- 2016/06/02/no-default-partitioning.html | 14 +- 2016/06/06/weekly-update.html | 4 +- 2016/06/10/apache-kudu-0-9-0-released.html | 4 +- 2016/06/13/weekly-update.html | 4 +- 2016/06/17/raft-consensus-single-node.html | 8 +- 2016/06/21/weekly-update.html | 6 +- 2016/06/24/multi-master-1-0-0.html | 10 +- 2016/06/27/weekly-update.html | 4 +- 2016/07/01/apache-kudu-0-9-1-released.html | 4 +- 2016/07/11/weekly-update.html | 4 +- 2016/07/18/weekly-update.html | 4 +- 2016/07/25/asf-graduation.html | 4 +- 2016/07/26/weekly-update.html | 20 +- 2016/08/08/weekly-update.html | 4 +- 2016/08/16/weekly-update.html | 18 +- 2016/08/23/apache-kudu-0-10-0-released.html | 4 +- 2016/08/23/new-range-partitioning-features.html | 4 +- 2016/08/31/intro-flume-kudu-sink.html | 155 ++++---- 2016/09/16/predicate-pushdown.html | 339 ++++++++++++++++ blog/index.html | 232 ++++++----- blog/page/2/index.html | 54 ++- blog/page/3/index.html | 56 +-- blog/page/4/index.html | 48 +-- blog/page/5/index.html | 46 +-- blog/page/6/index.html | 46 +-- blog/page/7/index.html | 62 +-- blog/page/8/index.html | 225 +++++++++++ faq.html | 11 +- feed.xml | 387 ++++++++++++------- img/predicate-pushdown/pushdown-10.png | Bin 0 -> 6490 bytes img/predicate-pushdown/pushdown-10M.png | Bin 0 -> 5986 bytes img/predicate-pushdown/pushdown-tpch.png | Bin 0 -> 8987 bytes 49 files changed, 1300 insertions(+), 634 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/02/26/apache-kudu-0-7-0-released.html ---------------------------------------------------------------------- diff --git a/2016/02/26/apache-kudu-0-7-0-released.html b/2016/02/26/apache-kudu-0-7-0-released.html index 2ef1939..0d19715 100644 --- a/2016/02/26/apache-kudu-0-7-0-released.html +++ b/2016/02/26/apache-kudu-0-7-0-released.html @@ -120,7 +120,7 @@ part of the ASF Incubator, version 0.7.0!</p> <!--more--> <ul> - <li>Kudu now has limited support for Apache Spark, through a simple <code class="highlighter-rouge">kuduRDD</code> API</li> + <li>Kudu now has limited support for Apache Spark, through a simple <code>kuduRDD</code> API</li> <li>Several improvements to the Java client including better error handling support and fixes for a potential client hang.</li> <li>Better platform support, including support for building on RHEL 7, CentOS 7, and SLES 12.</li> <li>The Kudu Python client has been completely revamped and is now considered a supported feature.</li> @@ -143,6 +143,8 @@ part of the ASF Incubator, version 0.7.0!</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -171,8 +173,6 @@ part of the ASF Incubator, version 0.7.0!</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/03/10/apache-kudu-0-7-1-released.html ---------------------------------------------------------------------- diff --git a/2016/03/10/apache-kudu-0-7-1-released.html b/2016/03/10/apache-kudu-0-7-1-released.html index cbb4601..a9eb73f 100644 --- a/2016/03/10/apache-kudu-0-7-1-released.html +++ b/2016/03/10/apache-kudu-0-7-1-released.html @@ -142,6 +142,8 @@ bugs fixed in this release: <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -170,8 +172,6 @@ bugs fixed in this release: <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/03/20/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/03/20/weekly-update.html b/2016/03/20/weekly-update.html index 9d04f81..ce958a5 100644 --- a/2016/03/20/weekly-update.html +++ b/2016/03/20/weekly-update.html @@ -202,6 +202,8 @@ at the <a href="http://www.meetup.com/Rust-Bay-Area/events/229107276/">Rust Bay <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -230,8 +232,6 @@ at the <a href="http://www.meetup.com/Rust-Bay-Area/events/229107276/">Rust Bay <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/03/28/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/03/28/weekly-update.html b/2016/03/28/weekly-update.html index d7a4a8a..eac7d48 100644 --- a/2016/03/28/weekly-update.html +++ b/2016/03/28/weekly-update.html @@ -193,6 +193,8 @@ in San Jose. The conference will feature two talks on Kudu:</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -221,8 +223,6 @@ in San Jose. The conference will feature two talks on Kudu:</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/04/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/04/04/weekly-update.html b/2016/04/04/weekly-update.html index b89ab57..61153e7 100644 --- a/2016/04/04/weekly-update.html +++ b/2016/04/04/weekly-update.html @@ -212,6 +212,8 @@ on Friday, April 8th.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -240,8 +242,6 @@ on Friday, April 8th.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/11/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/04/11/weekly-update.html b/2016/04/11/weekly-update.html index e48f971..e84b74c 100644 --- a/2016/04/11/weekly-update.html +++ b/2016/04/11/weekly-update.html @@ -212,6 +212,8 @@ please pipe up on the mailing list.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -240,8 +242,6 @@ please pipe up on the mailing list.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/12/apache-kudu-0-8-0-released.html ---------------------------------------------------------------------- diff --git a/2016/04/12/apache-kudu-0-8-0-released.html b/2016/04/12/apache-kudu-0-8-0-released.html index ae96beb..d5d2eb5 100644 --- a/2016/04/12/apache-kudu-0-8-0-released.html +++ b/2016/04/12/apache-kudu-0-8-0-released.html @@ -133,6 +133,8 @@ client, plus many other improvements and bug fixes.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -161,8 +163,6 @@ client, plus many other improvements and bug fixes.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html ---------------------------------------------------------------------- diff --git a/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html b/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html index 4bb1794..7d9bab5 100644 --- a/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html +++ b/2016/04/14/ingesting-json-apache-kudu-streamsets-data-collector.html @@ -156,6 +156,8 @@ kernel drivers in C to web front ends in JavaScript.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -184,8 +186,6 @@ kernel drivers in C to web front ends in JavaScript.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/18/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/04/18/weekly-update.html b/2016/04/18/weekly-update.html index d50ef31..5379985 100644 --- a/2016/04/18/weekly-update.html +++ b/2016/04/18/weekly-update.html @@ -210,6 +210,8 @@ Data Collector</a>.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -238,8 +240,6 @@ Data Collector</a>.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/19/kudu-0-8-0-predicate-improvements.html ---------------------------------------------------------------------- diff --git a/2016/04/19/kudu-0-8-0-predicate-improvements.html b/2016/04/19/kudu-0-8-0-predicate-improvements.html index 079c438..10b65e1 100644 --- a/2016/04/19/kudu-0-8-0-predicate-improvements.html +++ b/2016/04/19/kudu-0-8-0-predicate-improvements.html @@ -151,10 +151,10 @@ know on the <a href="https://issues.apache.org/jira/browse/KUDU-1065">JIRA issue <h2 id="redesigned-predicate-api-in-the-java-client">Redesigned Predicate API in the Java Client</h2> <p>The Java client has a new way to express scan predicates: the -<a href="http://kudu.apache.org/apidocs/org/kududb/client/KuduPredicate.html"><code class="highlighter-rouge">KuduPredicate</code></a>. +<a href="http://kudu.apache.org/apidocs/org/kududb/client/KuduPredicate.html"><code>KuduPredicate</code></a>. The API matches the corresponding C++ API more closely, and adds support for specifying exclusive, as well as inclusive, range predicates. The existing -<a href="http://kudu.apache.org/apidocs/org/kududb/client/ColumnRangePredicate.html"><code class="highlighter-rouge">ColumnRangePredicate</code></a> +<a href="http://kudu.apache.org/apidocs/org/kududb/client/ColumnRangePredicate.html"><code>ColumnRangePredicate</code></a> API has been deprecated, and will be removed soon. Example of transitioning from the old to new API:</p> @@ -172,14 +172,14 @@ the old to new API:</p> <h2 id="under-the-covers-changes">Under the Covers Changes</h2> -<p>The scan optimizations in the server and C++ client, and the new <code class="highlighter-rouge">KuduPredicate</code> +<p>The scan optimizations in the server and C++ client, and the new <code>KuduPredicate</code> API in the Java client are made possible by an overhaul of how predicates are handled internally. A new protobuf message type, -<a href="https://github.com/apache/incubator-kudu/blob/master/src/kudu/common/common.proto#L273"><code class="highlighter-rouge">ColumnPredicatePB</code></a> +<a href="https://github.com/apache/incubator-kudu/blob/master/src/kudu/common/common.proto#L273"><code>ColumnPredicatePB</code></a> has been introduced, and will allow more column predicate types to be introduced in the future. If you are interested in contributing to Kudu but donât know -where to start, consider adding a new predicate type; for example the <code class="highlighter-rouge">IS NULL</code>, -<code class="highlighter-rouge">IS NOT NULL</code>, <code class="highlighter-rouge">IN</code>, and <code class="highlighter-rouge">LIKE</code> predicates types are currently not implemented.</p> +where to start, consider adding a new predicate type; for example the <code>IS NULL</code>, +<code>IS NOT NULL</code>, <code>IN</code>, and <code>LIKE</code> predicates types are currently not implemented.</p> </div> </article> @@ -190,6 +190,8 @@ where to start, consider adding a new predicate type; for example the <code clas <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -218,8 +220,6 @@ where to start, consider adding a new predicate type; for example the <code clas <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/25/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/04/25/weekly-update.html b/2016/04/25/weekly-update.html index 0c9d178..6939c88 100644 --- a/2016/04/25/weekly-update.html +++ b/2016/04/25/weekly-update.html @@ -209,6 +209,8 @@ Kudu 0.8</a>.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -237,8 +239,6 @@ Kudu 0.8</a>.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/04/26/ycsb.html ---------------------------------------------------------------------- diff --git a/2016/04/26/ycsb.html b/2016/04/26/ycsb.html index badbcd0..05009aa 100644 --- a/2016/04/26/ycsb.html +++ b/2016/04/26/ycsb.html @@ -139,12 +139,12 @@ </ul> <h2 id="experimental-setup">Experimental setup</h2> -<p>The single-node Kudu cluster was configured, started, and stopped by a Python script <code class="highlighter-rouge">run_experiments.py</code> which cycled through several different configurations, completely removing all data in between each iteration. For each Kudu configuration, YCSB was used to load 100M rows of data (each approximately 1KB). YCSB is configured with 16 client threads on the same node. For each configuration, the YCSB log as well as periodic dumps of Tablet Server metrics are captured for later analysis.</p> +<p>The single-node Kudu cluster was configured, started, and stopped by a Python script <code>run_experiments.py</code> which cycled through several different configurations, completely removing all data in between each iteration. For each Kudu configuration, YCSB was used to load 100M rows of data (each approximately 1KB). YCSB is configured with 16 client threads on the same node. For each configuration, the YCSB log as well as periodic dumps of Tablet Server metrics are captured for later analysis.</p> <p>Note that in many cases, the 16 client threads were not enough to max out the full performance of the machine. These experiments should not be taken to determine the maximum throughput of Kudu â instead, we are looking at comparing the <em>relative</em> performance of different configuration options.</p> <h1 id="benchmarking-synchronous-insert-operations">Benchmarking Synchronous Insert Operations</h1> -<p>The first set of experiments runs the YCSB load with the <code class="highlighter-rouge">sync_ops=true</code> configuration option. This option means that each client thread will insert one row at a time and synchronously wait for the response before inserting the next row. The lack of batching makes this a good stress test for Kuduâs RPC performance and other fixed per-request costs.</p> +<p>The first set of experiments runs the YCSB load with the <code>sync_ops=true</code> configuration option. This option means that each client thread will insert one row at a time and synchronously wait for the response before inserting the next row. The lack of batching makes this a good stress test for Kuduâs RPC performance and other fixed per-request costs.</p> <p>The fact that the requests are synchronous also makes it easy to measure the <em>latency</em> of the write requests. With request batching enabled, latency would be irrelevant.</p> @@ -164,28 +164,25 @@ <p><img src="/img/YCSB_files/YCSB_3_0.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 31163 ops/sec +<pre><code>Average throughput: 31163 ops/sec </code></pre> -</div> <p>The results here are interesting: the throughput starts out around 70K rows/second, but then collapses to nearly zero. After staying near zero for a while, it shoots back up to the original performance, and the pattern repeats many times.</p> <p>Also note that the 99th percentile latency seems to alternate between close to zero and a value near 500ms. This bimodal distribution led me to grep in the Java source for the magic number 500. Sure enough, I found:</p> -<div class="highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">SLEEP_TIME</span> <span class="o">=</span> <span class="mi">500</span><span class="o">;</span> +<pre><code class="language-java">public static final int SLEEP_TIME = 500; </code></pre> -</div> <p>Used in this backoff calculation method (slightly paraphrased here):</p> -<div class="highlighter-rouge"><pre class="highlight"><code> <span class="kt">long</span> <span class="nf">getSleepTimeForRpc</span><span class="p">(</span><span class="n">KuduRpc</span><span class="o"><?></span> <span class="n">rpc</span><span class="o">)</span> <span class="o">{</span> - <span class="c1">// TODO backoffs? Sleep in increments of 500 ms, plus some random time up to 50</span> - <span class="k">return</span> <span class="o">(</span><span class="n">attemptCount</span> <span class="o">*</span> <span class="n">SLEEP_TIME</span><span class="o">)</span> <span class="o">+</span> <span class="n">sleepRandomizer</span><span class="o">.</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">50</span><span class="o">);</span> - <span class="o">}</span> +<pre><code class="language-java"> long getSleepTimeForRpc(KuduRpc<?> rpc) { + // TODO backoffs? Sleep in increments of 500 ms, plus some random time up to 50 + return (attemptCount * SLEEP_TIME) + sleepRandomizer.nextInt(50); + } </code></pre> -</div> -<p>One reason that a client will back off and retry is a <code class="highlighter-rouge">SERVER_TOO_BUSY</code> response from the server. This response is used in a number of overload situations. In a write-mostly workload, the most likely situation is that the server is low on memory and thus asking clients to back off while it flushes. Sure enough, when we graph the heap usage over time, as well as the rate of writes rejected due to low-memory, we see that this is the case:</p> +<p>One reason that a client will back off and retry is a <code>SERVER_TOO_BUSY</code> response from the server. This response is used in a number of overload situations. In a write-mostly workload, the most likely situation is that the server is low on memory and thus asking clients to back off while it flushes. Sure enough, when we graph the heap usage over time, as well as the rate of writes rejected due to low-memory, we see that this is the case:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">plot_ts_metric</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">'default'</span><span class="p">],</span> <span class="s">"heap_allocated"</span><span class="p">,</span> <span class="s">"Heap usage (GB)"</span><span class="p">,</span> <span class="mi">1024</span><span class="o">*</span><span class="mi">1024</span><span class="o">*</span><span class="mi">1024</span><span class="p">)</span> <span class="n">plot_ts_metric</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">'default'</span><span class="p">],</span> <span class="s">"mem_rejections"</span><span class="p">,</span> <span class="s">"Rejected writes</span><span class="se">\n</span><span class="s">per sec"</span><span class="p">)</span></code></pre></div> @@ -202,11 +199,11 @@ <p><img src="/img/YCSB_files/YCSB_7_0.png" alt="png" class="img-responsive" /></p> -<p>I then re-ran the workload while watching <code class="highlighter-rouge">iostat -dxm 1</code> to see the write rates across all of the disks. I could see that each of the disks was busy in turn, rather than busy in parallel.</p> +<p>I then re-ran the workload while watching <code>iostat -dxm 1</code> to see the write rates across all of the disks. I could see that each of the disks was busy in turn, rather than busy in parallel.</p> <p>This reminded me that the default way in which Kudu flushes data is as follows:</p> -<div class="highlighter-rouge"><pre class="highlight"><code>for each column: +<pre><code>for each column: open a new block on disk to write that column, round-robining across disks iterate over data: append data to the already-open blocks @@ -214,13 +211,12 @@ for each column: fsync() the block of data close the block </code></pre> -</div> -<p>Because Kudu uses buffered writes, the actual appending of data to the open blocks does not generate immediate IO. Instead, it only dirties pages in the Linux page cache. The actual IO is performed with the <code class="highlighter-rouge">fsync</code> call at the end. Because Kudu defaults to fsyncing each file in turn from a single thread, this was causing the slow performance identified above.</p> +<p>Because Kudu uses buffered writes, the actual appending of data to the open blocks does not generate immediate IO. Instead, it only dirties pages in the Linux page cache. The actual IO is performed with the <code>fsync</code> call at the end. Because Kudu defaults to fsyncing each file in turn from a single thread, this was causing the slow performance identified above.</p> -<p>At this point, I consulted with Adar Dembo, who designed much of this code path. He reminded me that we actually have a configuration flag <code class="highlighter-rouge">cfile_do_on_finish=flush</code> which changes the code to something resembling the following:</p> +<p>At this point, I consulted with Adar Dembo, who designed much of this code path. He reminded me that we actually have a configuration flag <code>cfile_do_on_finish=flush</code> which changes the code to something resembling the following:</p> -<div class="highlighter-rouge"><pre class="highlight"><code>for each column: +<pre><code>for each column: open a new block on disk to write that column, round-robining across disks iterate over data: append data to the already-open blocks @@ -230,17 +226,15 @@ for each column: fsync the block close the block </code></pre> -</div> -<p>The <code class="highlighter-rouge">sync_file_range</code> call here asynchronously enqueues the dirty pages to be written back to the disks, and then the following <code class="highlighter-rouge">fsync</code> actually waits for the writeback to be complete. I ran the benchmark for a new configuration with this flag enabled, and plotted the results:</p> +<p>The <code>sync_file_range</code> call here asynchronously enqueues the dirty pages to be written back to the disks, and then the following <code>fsync</code> actually waits for the writeback to be complete. I ran the benchmark for a new configuration with this flag enabled, and plotted the results:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">plot_throughput_latency</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">'finish=flush'</span><span class="p">])</span></code></pre></div> <p><img src="/img/YCSB_files/YCSB_9_0.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 52457 ops/sec +<pre><code>Average throughput: 52457 ops/sec </code></pre> -</div> <p>This is already a substantial improvement from the default settings. The overall throughput has increased from 31K ops/second to 52K ops/second (<strong>67%</strong>), and we no longer see any dramatic drops in performance or increases in 99th percentile. In fact, the 99th percentile stays comfortably below 1ms for the entire test.</p> @@ -282,15 +276,14 @@ for each column: <p>Writing a lot of small flushes compared to a small number of large flushes means that the on-disk data is not as well sorted in the optimized workload. An individual write may need to consult up to 20 bloom filters corresponding to previously flushed pieces of data in order to ensure that it is not an insert with a duplicate primary key.</p> -<p>So, how can we address this issue? It turns out that the flush threshold is actually configurable with the <code class="highlighter-rouge">flush_threshold_mb</code> flag. I re-ran the workload yet another time with the flush threshold set to 20GB.</p> +<p>So, how can we address this issue? It turns out that the flush threshold is actually configurable with the <code>flush_threshold_mb</code> flag. I re-ran the workload yet another time with the flush threshold set to 20GB.</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">plot_throughput_latency</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="s">'finish=flush+20GB-threshold'</span><span class="p">])</span></code></pre></div> <p><img src="/img/YCSB_files/YCSB_17_0.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 67123 ops/sec +<pre><code>Average throughput: 67123 ops/sec </code></pre> -</div> <p>This gets us another 28% improvement from 52K ops/second up to 67K ops/second (<strong>+116%</strong> from the default), and we no longer see the troubling downward slope on the throughput graph. Letâs check on the memory and bloom filter metrics again.</p> @@ -319,13 +312,13 @@ for each column: <h1 id="tests-with-batched-writes">Tests with Batched Writes</h1> -<p>The above tests were done with the <code class="highlighter-rouge">sync_ops=true</code> YCSB configuration option. However, we expect that for many heavy write situations, the writers would batch many rows together into larger write operations for better throughput.</p> +<p>The above tests were done with the <code>sync_ops=true</code> YCSB configuration option. However, we expect that for many heavy write situations, the writers would batch many rows together into larger write operations for better throughput.</p> -<p>I wanted to ensure that the recommended configuration changes above also improved performance for this workload. So, I re-ran the same experiments, but with YCSB configured to send batches of 100 insert operations to the tablet server using the Kudu clientâs <code class="highlighter-rouge">AUTO_FLUSH_BACKGROUND</code> write mode.</p> +<p>I wanted to ensure that the recommended configuration changes above also improved performance for this workload. So, I re-ran the same experiments, but with YCSB configured to send batches of 100 insert operations to the tablet server using the Kudu clientâs <code>AUTO_FLUSH_BACKGROUND</code> write mode.</p> <p>This time, I compared four configurations: - the Kudu default settings -- the defaults, but configured with <code class="highlighter-rouge">cfile_do_on_finish=flush</code> to increase flush IO performance +- the defaults, but configured with <code>cfile_do_on_finish=flush</code> to increase flush IO performance - the above, but with the flush thresholds configured to 1G and 10G</p> <p>For these experiments, we donât plot latencies, since write latencies are meaningless with batching enabled.</p> @@ -342,9 +335,8 @@ for each column: <p><img src="/img/YCSB_files/YCSB_23_1.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 33319 ops/sec +<pre><code>Average throughput: 33319 ops/sec </code></pre> -</div> <p><img src="/img/YCSB_files/YCSB_23_3.png" alt="png" class="img-responsive" /></p> @@ -353,9 +345,8 @@ for each column: <p><img src="/img/YCSB_files/YCSB_23_5.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 80068 ops/sec +<pre><code>Average throughput: 80068 ops/sec </code></pre> -</div> <p><img src="/img/YCSB_files/YCSB_23_7.png" alt="png" class="img-responsive" /></p> @@ -364,9 +355,8 @@ for each column: <p><img src="/img/YCSB_files/YCSB_23_9.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 78040 ops/sec +<pre><code>Average throughput: 78040 ops/sec </code></pre> -</div> <p><img src="/img/YCSB_files/YCSB_23_11.png" alt="png" class="img-responsive" /></p> @@ -375,9 +365,8 @@ for each column: <p><img src="/img/YCSB_files/YCSB_23_13.png" alt="png" class="img-responsive" /></p> -<div class="highlighter-rouge"><pre class="highlight"><code>Average throughput: 82005 ops/sec +<pre><code>Average throughput: 82005 ops/sec </code></pre> -</div> <p><img src="/img/YCSB_files/YCSB_23_15.png" alt="png" class="img-responsive" /></p> @@ -395,8 +384,8 @@ for each column: <p>We will likely make these changes in the next Kudu release. In the meantime, users can experiment by adding the following flags to their tablet server configuration:</p> <ul> - <li><code class="highlighter-rouge">--cfile_do_on_finish=flush</code></li> - <li><code class="highlighter-rouge">--flush_threshold_mb=10000</code></li> + <li><code>--cfile_do_on_finish=flush</code></li> + <li><code>--flush_threshold_mb=10000</code></li> </ul> <p>Note that, even if the server hosts many tablets or has less memory than the one used in this test, flushes will still be triggered if the <em>overall</em> memory consumption of the process crosses the configured soft limit. So, configuring a 10GB threshold does not increase the risk of out-of-memory errors.</p> @@ -420,6 +409,8 @@ for each column: <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -448,8 +439,6 @@ for each column: <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/05/03/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/05/03/weekly-update.html b/2016/05/03/weekly-update.html index 7782544..5212377 100644 --- a/2016/05/03/weekly-update.html +++ b/2016/05/03/weekly-update.html @@ -184,6 +184,8 @@ list of conferenace sessions and meetups near you.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -212,8 +214,6 @@ list of conferenace sessions and meetups near you.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/05/09/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/05/09/weekly-update.html b/2016/05/09/weekly-update.html index 5f9f584..9c5711a 100644 --- a/2016/05/09/weekly-update.html +++ b/2016/05/09/weekly-update.html @@ -174,6 +174,8 @@ on May 10.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -202,8 +204,6 @@ on May 10.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/05/16/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/05/16/weekly-update.html b/2016/05/16/weekly-update.html index a51c809..ac78ae4 100644 --- a/2016/05/16/weekly-update.html +++ b/2016/05/16/weekly-update.html @@ -209,6 +209,8 @@ meetup.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -237,8 +239,6 @@ meetup.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/05/23/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/05/23/weekly-update.html b/2016/05/23/weekly-update.html index a5e1ff8..17dc701 100644 --- a/2016/05/23/weekly-update.html +++ b/2016/05/23/weekly-update.html @@ -143,9 +143,9 @@ first release candidate.</p> </li> <li> <p>Since Kuduâs initial release, one of the most commonly requested features -has been support for the <code class="highlighter-rouge">UPSERT</code> operation. <code class="highlighter-rouge">UPSERT</code>, known in some other -databases as <code class="highlighter-rouge">INSERT ... ON DUPLICATE KEY UPDATE</code>. This operation has the -semantics of an <code class="highlighter-rouge">INSERT</code> if no key already exists with the provided primary +has been support for the <code>UPSERT</code> operation. <code>UPSERT</code>, known in some other +databases as <code>INSERT ... ON DUPLICATE KEY UPDATE</code>. This operation has the +semantics of an <code>INSERT</code> if no key already exists with the provided primary key. Otherwise, it replaces the existing row with the new values.</p> <p>This week, several developers collaborated to add support for this operation. @@ -198,6 +198,8 @@ Cloudera User Group</a>.</li> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -226,8 +228,6 @@ Cloudera User Group</a>.</li> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/01/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/06/01/weekly-update.html b/2016/06/01/weekly-update.html index ccbf7c8..00a0430 100644 --- a/2016/06/01/weekly-update.html +++ b/2016/06/01/weekly-update.html @@ -164,6 +164,8 @@ hadoop-common test jar. This solved build issues while also removing a nasty dep <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -192,8 +194,6 @@ hadoop-common test jar. This solved build issues while also removing a nasty dep <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/02/no-default-partitioning.html ---------------------------------------------------------------------- diff --git a/2016/06/02/no-default-partitioning.html b/2016/06/02/no-default-partitioning.html index c1c8c7b..41d5c5e 100644 --- a/2016/06/02/no-default-partitioning.html +++ b/2016/06/02/no-default-partitioning.html @@ -155,7 +155,7 @@ advanced configurations.</p> <h1 id="c-client">C++ Client</h1> <p>With the C++ client, creating a new table with hash partitions is as simple as -calling <code class="highlighter-rouge">KuduTableCreator:add_hash_partitions</code> with the columns to hash and the +calling <code>KuduTableCreator:add_hash_partitions</code> with the columns to hash and the number of buckets to use:</p> <div class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">unique_ptr</span><span class="o"><</span><span class="n">KuduTableCreator</span><span class="o">></span> <span class="n">table_creator</span><span class="p">(</span><span class="n">my_client</span><span class="o">-></span><span class="n">NewTableCreator</span><span class="p">());</span> @@ -176,14 +176,14 @@ number of buckets to use:</p> <span class="n">myClient</span><span class="o">.</span><span class="na">createTable</span><span class="o">(</span><span class="s">"my-table"</span><span class="o">,</span> <span class="n">my_schema</span><span class="o">,</span> <span class="n">options</span><span class="o">);</span></code></pre></div> <p>In the examples above, if the hash partition configuration is omitted the create -table operation will fail with the error <code class="highlighter-rouge">Table partitioning must be specified +table operation will fail with the error <code>Table partitioning must be specified using setRangePartitionColumns or addHashPartitions</code>. In the Java client this -manifests as a thrown <code class="highlighter-rouge">IllegalArgumentException</code>, while in the C++ client it is -returned as a <code class="highlighter-rouge">Status::InvalidArgument</code>.</p> +manifests as a thrown <code>IllegalArgumentException</code>, while in the C++ client it is +returned as a <code>Status::InvalidArgument</code>.</p> <h1 id="impala">Impala</h1> -<p>When creating Kudu tables with Impala, the formerly optional <code class="highlighter-rouge">DISTRIBUTE BY</code> +<p>When creating Kudu tables with Impala, the formerly optional <code>DISTRIBUTE BY</code> clause is now required:</p> <div class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">my_table</span> <span class="p">(</span><span class="n">key_column_a</span> <span class="n">STRING</span><span class="p">,</span> <span class="n">key_column_b</span> <span class="n">STRING</span><span class="p">,</span> <span class="n">other_column</span> <span class="n">STRING</span><span class="p">)</span> @@ -205,6 +205,8 @@ clause is now required:</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -233,8 +235,6 @@ clause is now required:</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/06/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/06/06/weekly-update.html b/2016/06/06/weekly-update.html index d075b3f..3e532ff 100644 --- a/2016/06/06/weekly-update.html +++ b/2016/06/06/weekly-update.html @@ -159,6 +159,8 @@ patches in for the <a href="https://gerrit.cloudera.org/#/c/2642/">Replay Cache< <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -187,8 +189,6 @@ patches in for the <a href="https://gerrit.cloudera.org/#/c/2642/">Replay Cache< <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/10/apache-kudu-0-9-0-released.html ---------------------------------------------------------------------- diff --git a/2016/06/10/apache-kudu-0-9-0-released.html b/2016/06/10/apache-kudu-0-9-0-released.html index 61e055b..a506e79 100644 --- a/2016/06/10/apache-kudu-0-9-0-released.html +++ b/2016/06/10/apache-kudu-0-9-0-released.html @@ -134,6 +134,8 @@ the specification of a partitioning scheme for new tables.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -162,8 +164,6 @@ the specification of a partitioning scheme for new tables.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/13/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/06/13/weekly-update.html b/2016/06/13/weekly-update.html index 9abef97..bbfffe9 100644 --- a/2016/06/13/weekly-update.html +++ b/2016/06/13/weekly-update.html @@ -167,6 +167,8 @@ removal happening in this <a href="https://gerrit.cloudera.org/#/c/3350/">patch< <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -195,8 +197,6 @@ removal happening in this <a href="https://gerrit.cloudera.org/#/c/3350/">patch< <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/17/raft-consensus-single-node.html ---------------------------------------------------------------------- diff --git a/2016/06/17/raft-consensus-single-node.html b/2016/06/17/raft-consensus-single-node.html index 8beac05..e67fd51 100644 --- a/2016/06/17/raft-consensus-single-node.html +++ b/2016/06/17/raft-consensus-single-node.html @@ -137,13 +137,13 @@ implementation was complete.</p> <p>The Consensus API has the following main responsibilities:</p> <ol> - <li>Support acting as a Raft <code class="highlighter-rouge">LEADER</code> and replicate writes to a local + <li>Support acting as a Raft <code>LEADER</code> and replicate writes to a local write-ahead log (WAL) as well as followers in the Raft configuration. For each operation written to the leader, a Raft implementation must keep track of how many nodes have written a copy of the operation being replicated, and whether or not that constitutes a majority. Once a majority of the nodes have written a copy of the data, it is considered committed.</li> - <li>Support acting as a Raft <code class="highlighter-rouge">FOLLOWER</code> by accepting writes from the leader and + <li>Support acting as a Raft <code>FOLLOWER</code> by accepting writes from the leader and preparing them to be eventually committed.</li> <li>Support voting in and initiating leader elections.</li> <li>Support participating in and initiating configuration changes (such as going @@ -209,6 +209,8 @@ dissertation, which you can find linked from the above web site.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -237,8 +239,6 @@ dissertation, which you can find linked from the above web site.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/21/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/06/21/weekly-update.html b/2016/06/21/weekly-update.html index 45c95a1..c749c75 100644 --- a/2016/06/21/weekly-update.html +++ b/2016/06/21/weekly-update.html @@ -128,7 +128,7 @@ leveraging the tablets cache.</p> <li> <p>In the context of making multi-master reliable in 1.0, Adar Dembo posted a <a href="https://gerrit.cloudera.org/#/c/3393/">design document</a> on how to handle permanent master failures. Currently the masterâs code is missing some features -like <code class="highlighter-rouge">remote bootstrap</code> which makes it possible for a new replica to download a snapshot of the data +like <code>remote bootstrap</code> which makes it possible for a new replica to download a snapshot of the data from the leader replica.</p> </li> <li> @@ -160,6 +160,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -188,8 +190,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/24/multi-master-1-0-0.html ---------------------------------------------------------------------- diff --git a/2016/06/24/multi-master-1-0-0.html b/2016/06/24/multi-master-1-0-0.html index 772e4e3..a232989 100644 --- a/2016/06/24/multi-master-1-0-0.html +++ b/2016/06/24/multi-master-1-0-0.html @@ -138,9 +138,9 @@ can be safely enabled in production clusters.</p> <p>To use replicated masters, a Kudu operator must deploy some number of Kudu masters, providing the hostname and port number of each master in the group via -the <code class="highlighter-rouge">--master_address</code> command line option. For example, each master in a +the <code>--master_address</code> command line option. For example, each master in a three-node deployment should be started with -<code class="highlighter-rouge">--master_address=<host1:port1>,<host2:port2><host3:port3></code>. In Raft parlance, +<code>--master_address=<host1:port1>,<host2:port2><host3:port3></code>. In Raft parlance, this group of masters is known as a <em>Raft configuration</em>.</p> <p>At startup, a Raft configuration of masters will hold a leader election and @@ -185,7 +185,7 @@ clients are also configured with the locations of all masters. Unlike tablet servers, they always communicate with the leader master as follower masters will reject client requests. To do this, clients must determine which master is the leader before sending the first request as well as whenever any request fails -with a <code class="highlighter-rouge">NOT_THE_LEADER</code> error.</p> +with a <code>NOT_THE_LEADER</code> error.</p> <h1 id="remaining-work-for-kudu-10">Remaining work for Kudu 1.0</h1> @@ -222,6 +222,8 @@ nothing has been implemented yet. Stay tuned!</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -250,8 +252,6 @@ nothing has been implemented yet. Stay tuned!</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/06/27/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/06/27/weekly-update.html b/2016/06/27/weekly-update.html index 1fb8e89..f91d98e 100644 --- a/2016/06/27/weekly-update.html +++ b/2016/06/27/weekly-update.html @@ -224,6 +224,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -252,8 +254,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/07/01/apache-kudu-0-9-1-released.html ---------------------------------------------------------------------- diff --git a/2016/07/01/apache-kudu-0-9-1-released.html b/2016/07/01/apache-kudu-0-9-1-released.html index 2a5a347..c7fdc10 100644 --- a/2016/07/01/apache-kudu-0-9-1-released.html +++ b/2016/07/01/apache-kudu-0-9-1-released.html @@ -132,6 +132,8 @@ of 0.9.0 are encouraged to update to the new version at their earliest convenien <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -160,8 +162,6 @@ of 0.9.0 are encouraged to update to the new version at their earliest convenien <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/07/11/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/07/11/weekly-update.html b/2016/07/11/weekly-update.html index 24f2dd2..56ba283 100644 --- a/2016/07/11/weekly-update.html +++ b/2016/07/11/weekly-update.html @@ -190,6 +190,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -218,8 +220,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/07/18/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/07/18/weekly-update.html b/2016/07/18/weekly-update.html index 818d752..4d67a2f 100644 --- a/2016/07/18/weekly-update.html +++ b/2016/07/18/weekly-update.html @@ -182,6 +182,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -210,8 +212,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/07/25/asf-graduation.html ---------------------------------------------------------------------- diff --git a/2016/07/25/asf-graduation.html b/2016/07/25/asf-graduation.html index 7464362..e364526 100644 --- a/2016/07/25/asf-graduation.html +++ b/2016/07/25/asf-graduation.html @@ -158,6 +158,8 @@ Established in 1999, the all-volunteer Foundation oversees more than 350 leading <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -186,8 +188,6 @@ Established in 1999, the all-volunteer Foundation oversees more than 350 leading <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/07/26/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/07/26/weekly-update.html b/2016/07/26/weekly-update.html index 61cec4d..5677521 100644 --- a/2016/07/26/weekly-update.html +++ b/2016/07/26/weekly-update.html @@ -130,8 +130,8 @@ new name and status.</li> <ul> <li> - <p>Dan Burkert contributed a few patches that repackage the Java client under <code class="highlighter-rouge">org.apache.kudu</code> -in place of <code class="highlighter-rouge">org.kududb</code>. This was done in a <strong>backward-incompatible</strong> way, meaning that import + <p>Dan Burkert contributed a few patches that repackage the Java client under <code>org.apache.kudu</code> +in place of <code>org.kududb</code>. This was done in a <strong>backward-incompatible</strong> way, meaning that import statements will have to be modified in existing Java code to compile against a newer Kudu JAR version (from 0.10.0 onward). This stems from <a href="http://mail-archives.apache.org/mod_mbox/kudu-dev/201605.mbox/%3ccagptdncjohqbgjzxafxjqdqmbb4sl495p5v_bjrxk_nagwb...@mail.gmail.com%3E">a discussion</a> initiated in May. It wonât have an impact on C++ or Python users, and it isnât affecting wire @@ -141,12 +141,12 @@ compatibility.</p> <p>Still on the Java-side, J-D Cryans pushed <a href="https://gerrit.cloudera.org/#/c/3055/">a patch</a> that completely changes how Exceptions are managed. Before this change, users had to introspect generic Exception objects, making it a guessing game and discouraging good error handling. -Now, the synchronous clientâs methods throw <code class="highlighter-rouge">KuduException</code> which packages a <code class="highlighter-rouge">Status</code> object +Now, the synchronous clientâs methods throw <code>KuduException</code> which packages a <code>Status</code> object that can be interrogated. This is very similar to how the C++ API works.</p> <p>Existing code that uses the new Kudu JAR should still compile since this change replaces generic -<code class="highlighter-rouge">Exception</code> with a more specific <code class="highlighter-rouge">KuduException</code>. Error handling done by string-matching the -exception messages should now use the provided <code class="highlighter-rouge">Status</code> object.</p> +<code>Exception</code> with a more specific <code>KuduException</code>. Error handling done by string-matching the +exception messages should now use the provided <code>Status</code> object.</p> </li> <li> <p>Alexey Serbinâs <a href="https://gerrit.cloudera.org/#/c/3619/">patch</a> that adds Doxygen-based @@ -154,11 +154,11 @@ documentation was pushed and the new API documentation for C++ developers will b with the next release.</p> </li> <li> - <p>Todd has made many improvements to the <code class="highlighter-rouge">ksck</code> tool over the last week. Building upon Will -Berkeleyâs <a href="https://gerrit.cloudera.org/#/c/3632/">WIP patch for KUDU-1516</a>, <code class="highlighter-rouge">ksck</code> can + <p>Todd has made many improvements to the <code>ksck</code> tool over the last week. Building upon Will +Berkeleyâs <a href="https://gerrit.cloudera.org/#/c/3632/">WIP patch for KUDU-1516</a>, <code>ksck</code> can now detect more problematic situations like if a tablet doesnât have a majority of replicas on live tablet servers, or if those replicas arenât in a good state. -<code class="highlighter-rouge">ksck</code> is also <a href="https://gerrit.cloudera.org/#/c/3705/">now faster</a> when run against a large +<code>ksck</code> is also <a href="https://gerrit.cloudera.org/#/c/3705/">now faster</a> when run against a large cluster with a lot of tablets, among other improvements.</p> </li> <li> @@ -190,6 +190,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -218,8 +220,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/08/08/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/08/08/weekly-update.html b/2016/08/08/weekly-update.html index 1b79c50..80dd027 100644 --- a/2016/08/08/weekly-update.html +++ b/2016/08/08/weekly-update.html @@ -189,6 +189,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -217,8 +219,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/08/16/weekly-update.html ---------------------------------------------------------------------- diff --git a/2016/08/16/weekly-update.html b/2016/08/16/weekly-update.html index 69fc200..b94e3d6 100644 --- a/2016/08/16/weekly-update.html +++ b/2016/08/16/weekly-update.html @@ -162,20 +162,20 @@ from a single-master configuration to a multi-master one. Along the way, he started building some common infrastructure for command-line tooling.</p> <p>Since Kuduâs initial release, it has included separate binaries for different -administrative or operational tools (e.g. <code class="highlighter-rouge">kudu-ts-cli</code>, <code class="highlighter-rouge">kudu-ksck</code>, <code class="highlighter-rouge">kudu-fs_dump</code>, -<code class="highlighter-rouge">log-dump</code>, etc). Despite having similar usage, these tools donât share much code, +administrative or operational tools (e.g. <code>kudu-ts-cli</code>, <code>kudu-ksck</code>, <code>kudu-fs_dump</code>, +<code>log-dump</code>, etc). Despite having similar usage, these tools donât share much code, and the separate statically linked binaries make the Kudu packages take more disk space than strictly necessary.</p> - <p>Adarâs work has introduced a new top-level <code class="highlighter-rouge">kudu</code> binary which exposes a set of subcommands, -much like the <code class="highlighter-rouge">git</code> and <code class="highlighter-rouge">docker</code> binaries with which readers may be familiar. + <p>Adarâs work has introduced a new top-level <code>kudu</code> binary which exposes a set of subcommands, +much like the <code>git</code> and <code>docker</code> binaries with which readers may be familiar. For example, a new tool he has built for dumping peer identifiers from a tabletâs -consensus metadata is triggered using <code class="highlighter-rouge">kudu tablet cmeta print_replica_uuids</code>.</p> +consensus metadata is triggered using <code>kudu tablet cmeta print_replica_uuids</code>.</p> <p>This new tool will be available in the upcoming 0.10.0 release; however, migration of the existing tools to the new infrastructure has not yet been completed. We expect that by Kudu 1.0, the old tools will be removed in favor of more subcommands -of the <code class="highlighter-rouge">kudu</code> tool.</p> +of the <code>kudu</code> tool.</p> </li> <li> <p>Todd Lipcon picked up the work started by David Alves in July to provide @@ -199,7 +199,7 @@ was <a href="https://gerrit.cloudera.org/#/c/3840/">committed</a> this week. The docs will be published as part of the 0.10.0 release.</p> </li> <li> - <p>Alexey also continued work on implementing the <code class="highlighter-rouge">AUTO_FLUSH_BACKGROUND</code> write + <p>Alexey also continued work on implementing the <code>AUTO_FLUSH_BACKGROUND</code> write mode for the C++ client. This feature makes it easier to implement high-throughput ingest using the C++ API by automatically handling the batching and flushing of writes based on a configurable buffer size.</p> @@ -239,6 +239,8 @@ a future post.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -267,8 +269,6 @@ a future post.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/08/23/apache-kudu-0-10-0-released.html ---------------------------------------------------------------------- diff --git a/2016/08/23/apache-kudu-0-10-0-released.html b/2016/08/23/apache-kudu-0-10-0-released.html index c0928dd..6a63d29 100644 --- a/2016/08/23/apache-kudu-0-10-0-released.html +++ b/2016/08/23/apache-kudu-0-10-0-released.html @@ -155,6 +155,8 @@ the release notes below.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -183,8 +185,6 @@ the release notes below.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div> http://git-wip-us.apache.org/repos/asf/kudu-site/blob/bc4e6c33/2016/08/23/new-range-partitioning-features.html ---------------------------------------------------------------------- diff --git a/2016/08/23/new-range-partitioning-features.html b/2016/08/23/new-range-partitioning-features.html index c2291fb..bb6a51f 100644 --- a/2016/08/23/new-range-partitioning-features.html +++ b/2016/08/23/new-range-partitioning-features.html @@ -215,6 +215,8 @@ be updated to 0.10.</p> <h3>Recent posts</h3> <ul> + <li> <a href="/2016/09/16/predicate-pushdown.html">Pushing Down Predicate Evaluation in Apache Kudu</a> </li> + <li> <a href="/2016/08/31/intro-flume-kudu-sink.html">An Introduction to the Flume Kudu Sink</a> </li> <li> <a href="/2016/08/23/new-range-partitioning-features.html">New Range Partitioning Features in Kudu 0.10</a> </li> @@ -243,8 +245,6 @@ be updated to 0.10.</p> <li> <a href="/2016/06/17/raft-consensus-single-node.html">Using Raft Consensus on a Single Node</a> </li> - <li> <a href="/2016/06/13/weekly-update.html">Apache Kudu (incubating) Weekly Update June 13, 2016</a> </li> - </ul> </div> </div>
