| <!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 (incubating) Release Notes</title> |
| <!-- Bootstrap core CSS --> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" |
| integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" |
| crossorigin="anonymous"> |
| |
| <!-- Custom styles for this template --> |
| <link href="/css/kudu.css" rel="stylesheet"/> |
| <link href="/css/asciidoc.css" rel="stylesheet"/> |
| <link rel="shortcut icon" href="/img/logo-favicon.ico" /> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" /> |
| |
| |
| |
| <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> |
| <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> |
| <![endif]--> |
| </head> |
| <body> |
| <div class="kudu-site container-fluid"> |
| <!-- Static navbar --> |
| <nav class="navbar navbar-default"> |
| <div class="container-fluid"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| |
| <a class="logo" href="/"><img |
| src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png" |
| srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x" |
| alt="Apache Kudu"/></a> |
| |
| </div> |
| <div id="navbar" class="collapse navbar-collapse"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li > |
| <a href="/">Home</a> |
| </li> |
| <li > |
| <a href="/overview.html">Overview</a> |
| </li> |
| <li class="active"> |
| <a href="/docs/">Documentation</a> |
| </li> |
| <li > |
| <a href="/releases/">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> |
| <li><a href="https://www.reddit.com/r/kudu/">Reddit</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li> |
| <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li> |
| <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li> |
| <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li> |
| </ul> |
| </li> |
| <li > |
| <a href="/faq.html">FAQ</a> |
| </li> |
| </ul><!-- /.nav --> |
| </div><!-- /#navbar --> |
| </div><!-- /.container-fluid --> |
| </nav> |
| |
| <!-- |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| |
| <div class="container"> |
| <div class="row"> |
| <div class="col-md-9"> |
| |
| <h1>Apache Kudu (incubating) Release Notes</h1> |
| <div class="sect1"> |
| <h2 id="_introducing_kudu"><a class="link" href="#_introducing_kudu">Introducing Kudu</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Kudu is a columnar storage manager developed for the Hadoop platform. Kudu shares |
| the common technical properties of Hadoop ecosystem applications: it runs on |
| commodity hardware, is horizontally scalable, and supports highly available operation.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Kudu’s design sets it apart. Some of Kudu’s benefits include:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Fast processing of OLAP workloads.</p> |
| </li> |
| <li> |
| <p>Integration with MapReduce, Spark, and other Hadoop ecosystem components.</p> |
| </li> |
| <li> |
| <p>Tight integration with Apache Impala (incubating), making it a good, mutable alternative to |
| using HDFS with Parquet. See <a href="kudu_impala_integration.html">Kudu Impala Integration</a>.</p> |
| </li> |
| <li> |
| <p>Strong but flexible consistency model.</p> |
| </li> |
| <li> |
| <p>Strong performance for running sequential and random workloads simultaneously.</p> |
| </li> |
| <li> |
| <p>Efficient utilization of hardware resources.</p> |
| </li> |
| <li> |
| <p>High availability. Tablet Servers and Masters use the Raft Consensus Algorithm. |
| Given a replication factor of <code>2f+1</code>, if <code>f</code> tablet servers serving a given tablet |
| fail, the tablet is still available.</p> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| High availability for masters is not supported during the public beta. |
| </td> |
| </tr> |
| </table> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>By combining all of these properties, Kudu targets support for families of |
| applications that are difficult or impossible to implement on current-generation |
| Hadoop storage technologies.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="rn_0.8.0"><a class="link" href="#rn_0.8.0">Release notes specific to 0.8.0</a></h3> |
| <div class="paragraph"> |
| <p>Kudu 0.8.0 delivers incremental features, improvements, and bug fixes over the previous versions.</p> |
| </div> |
| <div class="paragraph"> |
| <p>See also <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20KUDU%20AND%20status%20%3D%20Resolved |
| %20AND%20fixVersion%20%3D%200.8.0">JIRAs resolved |
| for Kudu 0.8.0</a> and <a href="https://github.com/apache/incubator-kudu/compare/0.7.1...0.8.0">Git |
| changes between 0.7.1 and 0.8.0</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To upgrade to Kudu 0.8.0, see <a href="installation.html#upgrade">Upgrade from 0.7.1 to 0.8.0</a>.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.8.0_incompatible_changes"><a class="link" href="#rn_0.8.0_incompatible_changes">Incompatible changes</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>0.8.0 clients are not fully compatible with servers running Kudu 0.7.1 or lower. |
| In particular, scans that specify column predicates will fail. To work around this |
| issue, upgrade all Kudu servers before upgrading clients.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.8.0_new_features"><a class="link" href="#rn_0.8.0_new_features">New features</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-431">KUDU-431</a> A simple Flume |
| sink has been implemented.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.8.0_improvements"><a class="link" href="#rn_0.8.0_improvements">Improvements</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-839">KUDU-839</a> Java RowError now uses an enum error code.</p> |
| </li> |
| <li> |
| <p><a href="http://gerrit.cloudera.org:8080/#/c/2138/">Gerrit 2138</a> The handling of |
| column predicates has been re-implemented in the server and clients.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1379">KUDU-1379</a> Partition pruning |
| has been implemented for C++ clients (but not yet for the Java client). This feature |
| allows you to avoid reading a tablet if you know it does not serve the row keys you are querying.</p> |
| </li> |
| <li> |
| <p><a href="http://gerrit.cloudera.org:8080/#/c/2641">Gerrit 2641</a> Kudu now uses |
| <code>earliest-deadline-first</code> RPC scheduling and rejection. This changes the behavior |
| of the RPC service queue to prevent unfairness when processing a backlog of RPC |
| threads and to increase the likelihood that an RPC will be processed before it |
| can time out.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.8.0_fixed_issues"><a class="link" href="#rn_0.8.0_fixed_issues">Fixed Issues</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://issues.cloudera.org/browse/KUDU-1337">KUDU-1337</a> Tablets from tables |
| that were deleted might be unnecessarily re-bootstrapped when the leader gets the |
| notification to delete itself after the replicas do.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.cloudera.org/browse/KUDU-969">KUDU-969</a> If a tablet server |
| shuts down while compacting a rowset and receiving updates for it, it might immediately |
| crash upon restart while bootstrapping that rowset’s tablet.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.cloudera.org/browse/KUDU-1354">KUDU-1354</a> Due to a bug in Kudu’s |
| MVCC implementation where row locks were released before the MVCC commit happened, |
| flushed data would include out-of-order transactions, triggering a crash on the |
| next compaction.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1322">KUDU-1322</a> The C++ client |
| now retries write operations if the tablet it is trying to reach has already been |
| deleted.</p> |
| </li> |
| <li> |
| <p><a href="http://gerrit.cloudera.org:8080/#/c/2571/">Gerrit 2571</a> Due to a bug in the |
| Java client, users were unable to close the <code>kudu-spark</code> shell because of |
| lingering non-daemon threads.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.8.0_changes"><a class="link" href="#rn_0.8.0_changes">Other noteworthy changes</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="http://gerrit.cloudera.org:8080/#/c/2239/">Gerrit 2239</a> The concept of "feature flags" |
| was introduced in order to manage compatibility between different |
| Kudu versions. One case where this is helpful is if a newer client attempts to use |
| a feature unsupported by the currently-running tablet server. Rather than receiving |
| a cryptic error, the user gets an error message that is easier to interpret. |
| This is an internal change for Kudu system developers and requires no action by |
| users of the clients or API.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="rn_0.7.1"><a class="link" href="#rn_0.7.1">Release notes specific to 0.7.1</a></h3> |
| <div class="paragraph"> |
| <p>Kudu 0.7.1 is a bug fix release for 0.7.0.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.1_fixed_issues"><a class="link" href="#rn_0.7.1_fixed_issues">Fixed Issues</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1325">KUDU-1325</a> fixes a tablet server crash that could |
| occur during table deletion. In some cases, while a table was being deleted, other replicas would |
| attempt to re-replicate tablets to servers that had already processed the deletion. This could |
| trigger a race condition that caused a crash.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1341">KUDU-1341</a> fixes a potential data corruption and |
| crash that could happen shortly after tablet server restarts in workloads that repeatedly delete |
| and re-insert rows with the same primary key. In most cases, this corruption affected only a single |
| replica and could be repaired by re-replicating from another.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1343">KUDU-1343</a> fixes a bug in the Java client that |
| occurs when a scanner has to scan multiple batches from one tablet and then start scanning from |
| another. In particular, this would affect any scans using the Java client that read large numbers |
| of rows from multi-tablet tables.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1345">KUDU-1345</a> fixes a bug where in some cases the |
| hybrid clock could jump backwards, resulting in a crash followed by an inability to |
| restart the affected tablet server.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.apache.org/jira/browse/KUDU-1360">KUDU-1360</a> fixes a bug in the kudu-spark module |
| which prevented reading rows with <code>NULL</code> values.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="rn_0.7.0"><a class="link" href="#rn_0.7.0">Release notes specific to 0.7.0</a></h3> |
| <div class="paragraph"> |
| <p>Kudu 0.7.0 is the first release done as part of the Apache Incubator and includes a number |
| of changes, new features, improvements, and fixes.</p> |
| </div> |
| <div class="paragraph"> |
| <p>See also <a href="https://issues.cloudera.org/issues/?jql=project%20%3D%20Kudu%20AND%20status%20in%20 |
| (Resolved)%20AND%20fixVersion%20%3D%200.7.0%20ORDER%20BY%20key%20ASC">JIRAs resolved |
| for Kudu 0.7.0</a> and <a href="https://github.com/apache/incubator-kudu/compare/branch-0.6.0...branch-0.7.0">Git |
| changes between 0.6.0 and 0.7.0</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The upgrade instructions can be found at <a href="installation.html#upgrade">Upgrade from 0.6.0 to 0.7.0</a>.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.0_incompatible_changes"><a class="link" href="#rn_0.7.0_incompatible_changes">Incompatible changes</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The C++ client includes a new API, <code>KuduScanBatch</code>, which performs better when a |
| large number of small rows are returned in a batch. The old API of <code>vector<KuduRowResult></code> |
| is deprecated.</p> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| This change is API-compatible but <strong>not</strong> ABI-compatible. |
| </td> |
| </tr> |
| </table> |
| </div> |
| </li> |
| <li> |
| <p>The default replication factor has been changed from 1 to 3. Existing tables will |
| continue to use the replication factor they were created with. Applications that create |
| tables may not work properly if they assume a replication factor of 1 and fewer than |
| 3 replicas are available. To use the previous default replication factor, start the |
| master with the configuration flag <code>--default_num_replicas=1</code>.</p> |
| </li> |
| <li> |
| <p>The Python client has been completely rewritten, with a focus on improving code |
| quality and testing. The read path (scanners) has been improved by adding many of |
| the features already supported by the C++ and Java clients. The Python client is no |
| longer considered experimental.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.0_new_features"><a class="link" href="#rn_0.7.0_new_features">New features</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>With the goal of Spark integration in mind, a new <code>kuduRDD</code> API has been added, |
| which wraps <code>newAPIHadoopRDD</code> and includes a default source for Spark SQL.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.0_improvements"><a class="link" href="#rn_0.7.0_improvements">Improvements</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The Java client includes new methods <code>countPendingErrors()</code> and |
| <code>getPendingErrors()</code> on <code>KuduSession</code>. These methods allow you to count and |
| retrieve outstanding row errors when configuring sessions with <code>AUTO_FLUSH_BACKGROUND</code>.</p> |
| </li> |
| <li> |
| <p>New server-level metrics allow you to monitor CPU usage and context switching.</p> |
| </li> |
| <li> |
| <p>Kudu now builds on RHEL 7, CentOS 7, and SLES 12. Extra instructions are included |
| for SLES 12.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.0_fixed_issues"><a class="link" href="#rn_0.7.0_fixed_issues">Fixed Issues</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://issues.cloudera.org/browse/KUDU-1288">KUDU-1288</a> fixes a severe file descriptor |
| leak, which could previously only be resolved by restarting the tablet server.</p> |
| </li> |
| <li> |
| <p><a href="https://issues.cloudera.org/browse/KUDU-1250">KUDU-1250</a> fixes a hang in the Java |
| client when processing an in-flight batch and the previous batch encountered an error.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="rn_0.7.0_changes"><a class="link" href="#rn_0.7.0_changes">Other noteworthy changes</a></h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The file block manager’s performance was improved, but it is still not recommended for |
| real-world use.</p> |
| </li> |
| <li> |
| <p>The master now attempts to spread tablets more evenly across the cluster during |
| table creation. This has no impact on existing tables, but will improve the speed |
| at which under-replicated tabletsare re-replicated after a tablet server failure.</p> |
| </li> |
| <li> |
| <p>All licensing documents have been modified to adhere to ASF guidelines.</p> |
| </li> |
| <li> |
| <p>Kudu now requires an out-of-tree build directory. Review the build instructions |
| for additional information.</p> |
| </li> |
| <li> |
| <p>The <code>C` client library is now explicitly built against the |
| link:https://gcc.gnu.org/onlinedocs/libstdc/manual/using_dual_abi.html[old gcc5 ABI]. |
| If you use gcc5 to build a Kudu application, your application must use the old ABI |
| as well. This is typically achieved by defining the `_GLIBCXX_USE_CXX11_ABI</code> macro |
| at compile-time when building your application. For more information, see the |
| previous link and link:http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/.</p> |
| </li> |
| <li> |
| <p>The Python client is no longer considered experimental.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_limitations"><a class="link" href="#_limitations">Limitations</a></h4> |
| <div class="paragraph"> |
| <p>See also <a href="#beta_limitations">Limitations of the Kudu Public Beta</a>. Where applicable, this list adds to or overrides that |
| list.</p> |
| </div> |
| <div class="sect4"> |
| <h5 id="_operating_system_limitations"><a class="link" href="#_operating_system_limitations">Operating System Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Kudu 0.7 is known to work on RHEL 7 or 6.4 or newer, CentOS 7 or 6.4 or newer, Ubuntu |
| Trusty, and SLES 12. Other operating systems may work but have not been tested.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="rn_0.6.0"><a class="link" href="#rn_0.6.0">Release notes specific to 0.6.0</a></h3> |
| <div class="paragraph"> |
| <p>The 0.6.0 release contains incremental improvements and bug fixes. The most notable |
| changes are:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The Java client’s CreateTableBuilder and AlterTableBuilder classes have been renamed |
| to CreateTableOptions and AlterTableOptions. Their methods now also return <code>this</code> objects, |
| allowing them to be used as builders.</p> |
| </li> |
| <li> |
| <p>The Java client’s AbstractKuduScannerBuilder#maxNumBytes() setter is now called |
| batchSizeBytes as is the corresponding property in AsyncKuduScanner. This makes it |
| consistent with the C++ client.</p> |
| </li> |
| <li> |
| <p>The "kudu-admin" tool can now list and delete tables via its new subcommands |
| "list_tables" and "delete_table <table_name>".</p> |
| </li> |
| <li> |
| <p>OSX is now supported for single-host development. Please consult its specific installation |
| instructions in <a href="installation.html#osx_from_source">OS X</a>.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="sect3"> |
| <h4 id="_limitations_2"><a class="link" href="#_limitations_2">Limitations</a></h4> |
| <div class="paragraph"> |
| <p>See also <a href="#beta_limitations">Limitations of the Kudu Public Beta</a>. Where applicable, this list adds to or overrides that |
| list.</p> |
| </div> |
| <div class="sect4"> |
| <h5 id="_operating_system_limitations_2"><a class="link" href="#_operating_system_limitations_2">Operating System Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Kudu 0.6 is known to work on RHEL 6.4 or newer, CentOS 6.4 or newer, and Ubuntu |
| Trusty. Other operating systems may work but have not been tested.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_api_limitations"><a class="link" href="#_api_limitations">API Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The Python client is still considered experimental.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="rn_0.5.0"><a class="link" href="#rn_0.5.0">Release Notes Specific to 0.5.0</a></h3> |
| <div class="sect3"> |
| <h4 id="_limitations_3"><a class="link" href="#_limitations_3">Limitations</a></h4> |
| <div class="paragraph"> |
| <p>See also <a href="#beta_limitations">Limitations of the Kudu Public Beta</a>. Where applicable, this list adds to or overrides that |
| list.</p> |
| </div> |
| <div class="sect4"> |
| <h5 id="_operating_system_limitations_3"><a class="link" href="#_operating_system_limitations_3">Operating System Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Kudu 0.5 is known to work on RHEL 7 or 6.4 or newer, CentOS 7 or 6.4 or newer, Ubuntu |
| Trusty, and SLES 12. Other operating systems may work but have not been tested.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_api_limitations_2"><a class="link" href="#_api_limitations_2">API Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The Python client is considered experimental.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_about_the_kudu_public_beta"><a class="link" href="#_about_the_kudu_public_beta">About the Kudu Public Beta</a></h3> |
| <div class="paragraph"> |
| <p>This release of Kudu is a public beta. Do not run this beta release on production clusters. |
| During the public beta period, Kudu will be supported via a |
| <a href="https://issues.cloudera.org/projects/KUDU">public JIRA</a> and a public |
| <a href="http://mail-archives.apache.org/mod_mbox/incubator-kudu-user/">mailing list</a>, which will be |
| monitored by the Kudu development team and community members. Commercial support |
| is not available at this time.</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>You can submit any issues or feedback related to your Kudu experience via either |
| the JIRA system or the mailing list. The Kudu development team and community members |
| will respond and assist as quickly as possible.</p> |
| </li> |
| <li> |
| <p>The Kudu team will work with early adopters to fix bugs and release new binary drops |
| when fixes or features are ready. However, we cannot commit to issue resolution or |
| bug fix delivery times during the public beta period, and it is possible that some |
| fixes or enhancements will not be selected for a release.</p> |
| </li> |
| <li> |
| <p>We can’t guarantee time frames or contents for future beta code drops. However, |
| they will be announced to the user group when they occur.</p> |
| </li> |
| <li> |
| <p>No guarantees are made regarding upgrades from this release to follow-on releases. |
| While multiple drops of beta code are planned, we can’t guarantee their schedules |
| or contents.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="sect3"> |
| <h4 id="_kudu_impala_integration_features"><a class="link" href="#_kudu_impala_integration_features">Kudu-Impala Integration Features</a></h4> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1"><code>CREATE TABLE</code></dt> |
| <dd> |
| <p>Impala supports creating and dropping tables using Kudu as the persistence layer. |
| The tables follow the same internal / external approach as other tables in Impala, |
| allowing for flexible data ingestion and querying.</p> |
| </dd> |
| <dt class="hdlist1"><code>INSERT</code></dt> |
| <dd> |
| <p>Data can be inserted into Kudu tables in Impala using the same mechanisms as |
| any other table with HDFS or HBase persistence.</p> |
| </dd> |
| <dt class="hdlist1"><code>UPDATE</code> / <code>DELETE</code></dt> |
| <dd> |
| <p>Impala supports the <code>UPDATE</code> and <code>DELETE</code> SQL commands to modify existing data in |
| a Kudu table row-by-row or as a batch. The syntax of the SQL commands is chosen |
| to be as compatible as possible to existing solutions. In addition to simple <code>DELETE</code> |
| or <code>UPDATE</code> commands, you can specify complex joins in the <code>FROM</code> clause of the query |
| using the same syntax as a regular <code>SELECT</code> statement.</p> |
| </dd> |
| <dt class="hdlist1">Flexible Partitioning</dt> |
| <dd> |
| <p>Similar to partitioning of tables in Hive, Kudu allows you to dynamically |
| pre-split tables by hash or range into a predefined number of tablets, in order |
| to distribute writes and queries evenly across your cluster. You can partition by |
| any number of primary key columns, by any number of hashes and an optional list of |
| split rows. See <a href="schema_design.html">Schema Design</a>.</p> |
| </dd> |
| <dt class="hdlist1">Parallel Scan</dt> |
| <dd> |
| <p>To achieve the highest possible performance on modern hardware, the Kudu client |
| within Impala parallelizes scans to multiple tablets.</p> |
| </dd> |
| <dt class="hdlist1">High-efficiency queries</dt> |
| <dd> |
| <p>Where possible, Impala pushes down predicate evaluation to Kudu, so that predicates |
| are evaluated as close as possible to the data. Query performance is comparable |
| to Parquet in many workloads.</p> |
| </dd> |
| </dl> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="beta_limitations"><a class="link" href="#beta_limitations">Limitations of the Kudu Public Beta</a></h4> |
| <div class="paragraph"> |
| <p>Items in this list may be amended or superseded by limitations listed in the release |
| notes for specific Kudu releases above.</p> |
| </div> |
| <div class="sect4"> |
| <h5 id="_schema_limitations"><a class="link" href="#_schema_limitations">Schema Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Kudu is primarily designed for analytic use cases and, in the beta release, |
| you are likely to encounter issues if a single row contains multiple kilobytes of data.</p> |
| </li> |
| <li> |
| <p>The columns which make up the primary key must be listed first in the schema.</p> |
| </li> |
| <li> |
| <p>Key columns cannot be altered. You must drop and recreate a table to change its keys.</p> |
| </li> |
| <li> |
| <p>Key columns must not be null.</p> |
| </li> |
| <li> |
| <p>Columns with <code>DOUBLE</code>, <code>FLOAT</code>, or <code>BOOL</code> types are not allowed as part of a |
| primary key definition.</p> |
| </li> |
| <li> |
| <p>Type and nullability of existing columns cannot be changed by altering the table.</p> |
| </li> |
| <li> |
| <p>A table’s primary key cannot be changed.</p> |
| </li> |
| <li> |
| <p>Dropping a column does not immediately reclaim space. Compaction must run first. |
| There is no way to run compaction manually, but dropping the table will reclaim the |
| space immediately.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_ingest_limitations"><a class="link" href="#_ingest_limitations">Ingest Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Ingest via Sqoop or Flume is not supported in the public beta. The recommended |
| approach for bulk ingest is to use Impala’s <code>CREATE TABLE AS SELECT</code> functionality |
| or use the Kudu Java or C++ API.</p> |
| </li> |
| <li> |
| <p>Tables must be manually pre-split into tablets using simple or compound primary |
| keys. Automatic splitting is not yet possible. See |
| <a href="schema_design.html">Schema Design</a>.</p> |
| </li> |
| <li> |
| <p>Tablets cannot currently be merged. Instead, create a new table with the contents |
| of the old tables to be merged.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_replication_and_backup_limitations"><a class="link" href="#_replication_and_backup_limitations">Replication and Backup Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Replication and failover of Kudu masters is considered experimental. It is |
| recommended to run a single master and periodically perform a manual backup of |
| its data directories.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_impala_limitations"><a class="link" href="#_impala_limitations">Impala Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>To use Kudu with Impala, you must install a special release of Impala called |
| Impala_Kudu. Obtaining and installing a compatible Impala release is detailed in Kudu’s |
| <a href="kudu_impala_integration.html">Impala Integration</a> documentation.</p> |
| </li> |
| <li> |
| <p>To use Impala_Kudu alongside an existing Impala instance, you must install using parcels.</p> |
| </li> |
| <li> |
| <p>Updates, inserts, and deletes via Impala are non-transactional. If a query |
| fails part of the way through, its partial effects will not be rolled back.</p> |
| </li> |
| <li> |
| <p>All queries will be distributed across all Impala hosts which host a replica |
| of the target table(s), even if a predicate on a primary key could correctly |
| restrict the query to a single tablet. This limits the maximum concurrency of |
| short queries made via Impala.</p> |
| </li> |
| <li> |
| <p>No timestamp and decimal type support.</p> |
| </li> |
| <li> |
| <p>The maximum parallelism of a single query is limited to the number of tablets |
| in a table. For good analytic performance, aim for 10 or more tablets per host |
| or use large tables.</p> |
| </li> |
| <li> |
| <p>Impala is only able to push down predicates involving <code>=</code>, <code>⇐</code>, <code>>=</code>, |
| or <code>BETWEEN</code> comparisons between any column and a literal value, and <code><</code> and <code>></code> |
| for integer columns only. For example, for a table with an integer key <code>ts</code>, and |
| a string key <code>name</code>, the predicate <code>WHERE ts >= 12345</code> will convert into an |
| efficient range scan, whereas <code>where name > 'lipcon'</code> will currently fetch all |
| data from the table and evaluate the predicate within Impala.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_security_limitations"><a class="link" href="#_security_limitations">Security Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Authentication and authorization are not included in the public beta.</p> |
| </li> |
| <li> |
| <p>Data encryption is not included in the public beta.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_client_and_api_limitations"><a class="link" href="#_client_and_api_limitations">Client and API Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Potentially-incompatible C++, Java and Python API changes may be required during the |
| public beta.</p> |
| </li> |
| <li> |
| <p><code>ALTER TABLE</code> is not yet fully supported via the client APIs. More <code>ALTER TABLE</code> |
| operations will become available in future betas.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_application_integration_limitations"><a class="link" href="#_application_integration_limitations">Application Integration Limitations</a></h5> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>The Spark DataFrame implementation is not yet complete.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_other_known_issues"><a class="link" href="#_other_known_issues">Other Known Issues</a></h5> |
| <div class="paragraph"> |
| <p>The following are known bugs and issues with the current beta release. They will |
| be addressed in later beta releases.</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Building Kudu from source using <code>gcc</code> 4.6 or 4.7 causes runtime and test failures. Be sure |
| you are using a different version of <code>gcc</code> if you build Kudu from source.</p> |
| </li> |
| <li> |
| <p>If the Kudu master is configured with the <code>-log_fsync_all</code> option, tablet servers |
| and clients will experience frequent timeouts, and the cluster may become unusable.</p> |
| </li> |
| <li> |
| <p>If a tablet server has a very large number of tablets, it may take several minutes |
| to start up. It is recommended to limit the number of tablets per server to 100 or fewer. |
| Consider this limitation when pre-splitting your tables. If you notice slow start-up times, |
| you can monitor the number of tablets per server in the web UI.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_disclaimer_on_apache_incubation"><a class="link" href="#_disclaimer_on_apache_incubation">Disclaimer on Apache Incubation</a></h3> |
| <div class="paragraph"> |
| <p>Apache Kudu (incubating) is an effort undergoing incubation at The |
| Apache Software Foundation (ASF), sponsored by the Apache Incubator |
| PMC. Incubation is required of all newly accepted projects until a |
| further review indicates that the infrastructure, communications, and |
| decision making process have stabilized in a manner consistent with |
| other successful ASF projects. While incubation status is not |
| necessarily a reflection of the completeness or stability of the code, |
| it does indicate that the project has yet to be fully endorsed by the |
| ASF.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_resources"><a class="link" href="#_resources">Resources</a></h3> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="http://kudu.apache.org">Kudu Website</a></p> |
| </li> |
| <li> |
| <p><a href="http://github.com/apache/incubator-kudu">Kudu GitHub Repository</a></p> |
| </li> |
| <li> |
| <p><a href="index.html">Kudu Documentation</a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_installation_options"><a class="link" href="#_installation_options">Installation Options</a></h3> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>A Quickstart VM is provided to get you up and running quickly.</p> |
| </li> |
| <li> |
| <p>You can install Kudu using provided deb/yum packages.</p> |
| </li> |
| <li> |
| <p>You can install Kudu, in clusters managed by Cloudera Manager, using parcels or deb/yum packages.</p> |
| </li> |
| <li> |
| <p>You can build Kudu from source.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>For full installation details, see <a href="installation.html">Kudu Installation</a>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_next_steps"><a class="link" href="#_next_steps">Next Steps</a></h3> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="quickstart.html">Kudu Quickstart</a></p> |
| </li> |
| <li> |
| <p><a href="installation.html">Installing Kudu</a></p> |
| </li> |
| <li> |
| <p><a href="configuration.html">Configuring Kudu</a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="col-md-3"> |
| |
| <div id="toc" data-spy="affix" data-offset-top="70"> |
| <ul> |
| |
| <li> |
| |
| <a href="introduction.html">Introducing Kudu</a> |
| </li> |
| <li> |
| <span class="active-toc">Kudu Release Notes</span> |
| <ul class="sectlevel1"> |
| <li><a href="#_introducing_kudu">Introducing Kudu</a> |
| <ul class="sectlevel2"> |
| <li><a href="#rn_0.8.0">Release notes specific to 0.8.0</a> |
| <ul class="sectlevel3"> |
| <li><a href="#rn_0.8.0_incompatible_changes">Incompatible changes</a></li> |
| <li><a href="#rn_0.8.0_new_features">New features</a></li> |
| <li><a href="#rn_0.8.0_improvements">Improvements</a></li> |
| <li><a href="#rn_0.8.0_fixed_issues">Fixed Issues</a></li> |
| <li><a href="#rn_0.8.0_changes">Other noteworthy changes</a></li> |
| </ul> |
| </li> |
| <li><a href="#rn_0.7.1">Release notes specific to 0.7.1</a> |
| <ul class="sectlevel3"> |
| <li><a href="#rn_0.7.1_fixed_issues">Fixed Issues</a></li> |
| </ul> |
| </li> |
| <li><a href="#rn_0.7.0">Release notes specific to 0.7.0</a> |
| <ul class="sectlevel3"> |
| <li><a href="#rn_0.7.0_incompatible_changes">Incompatible changes</a></li> |
| <li><a href="#rn_0.7.0_new_features">New features</a></li> |
| <li><a href="#rn_0.7.0_improvements">Improvements</a></li> |
| <li><a href="#rn_0.7.0_fixed_issues">Fixed Issues</a></li> |
| <li><a href="#rn_0.7.0_changes">Other noteworthy changes</a></li> |
| <li><a href="#_limitations">Limitations</a></li> |
| </ul> |
| </li> |
| <li><a href="#rn_0.6.0">Release notes specific to 0.6.0</a> |
| <ul class="sectlevel3"> |
| <li><a href="#_limitations_2">Limitations</a></li> |
| </ul> |
| </li> |
| <li><a href="#rn_0.5.0">Release Notes Specific to 0.5.0</a> |
| <ul class="sectlevel3"> |
| <li><a href="#_limitations_3">Limitations</a></li> |
| </ul> |
| </li> |
| <li><a href="#_about_the_kudu_public_beta">About the Kudu Public Beta</a> |
| <ul class="sectlevel3"> |
| <li><a href="#_kudu_impala_integration_features">Kudu-Impala Integration Features</a></li> |
| <li><a href="#beta_limitations">Limitations of the Kudu Public Beta</a></li> |
| </ul> |
| </li> |
| <li><a href="#_disclaimer_on_apache_incubation">Disclaimer on Apache Incubation</a></li> |
| <li><a href="#_resources">Resources</a></li> |
| <li><a href="#_installation_options">Installation Options</a></li> |
| <li><a href="#_next_steps">Next Steps</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li> |
| |
| <a href="quickstart.html">Getting Started with Kudu</a> |
| </li> |
| <li> |
| |
| <a href="installation.html">Installation Guide</a> |
| </li> |
| <li> |
| |
| <a href="configuration.html">Configuring Kudu</a> |
| </li> |
| <li> |
| |
| <a href="kudu_impala_integration.html">Using Impala with Kudu</a> |
| </li> |
| <li> |
| |
| <a href="administration.html">Administering Kudu</a> |
| </li> |
| <li> |
| |
| <a href="troubleshooting.html">Troubleshooting Kudu</a> |
| </li> |
| <li> |
| |
| <a href="developing.html">Developing Applications with Kudu</a> |
| </li> |
| <li> |
| |
| <a href="schema_design.html">Kudu Schema Design</a> |
| </li> |
| <li> |
| |
| <a href="transaction_semantics.html">Kudu Transaction Semantics</a> |
| </li> |
| <li> |
| |
| <a href="contributing.html">Contributing to Kudu</a> |
| </li> |
| <li> |
| |
| <a href="style_guide.html">Kudu Documentation Style Guide</a> |
| </li> |
| <li> |
| |
| <a href="configuration_reference.html">Kudu Configuration Reference</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <footer class="footer"> |
| <div class="row"> |
| <div class="col-md-9"> |
| <p class="small"> |
| Copyright © 2019 The Apache Software Foundation. Last updated 2016-04-11 08:31:49 PDT |
| </p> |
| <p class="small"> |
| Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu |
| project logo are either registered trademarks or trademarks of The |
| Apache Software Foundation in the United States and other countries. |
| </p> |
| </div> |
| <div class="col-md-3"> |
| <a class="pull-right" href="https://www.apache.org/events/current-event.html"> |
| <img src="https://www.apache.org/events/current-event-234x60.png"/> |
| </a> |
| </div> |
| </div> |
| </footer> |
| </div> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> |
| <script> |
| // Try to detect touch-screen devices. Note: Many laptops have touch screens. |
| $(document).ready(function() { |
| if ("ontouchstart" in document.documentElement) { |
| $(document.documentElement).addClass("touch"); |
| } else { |
| $(document.documentElement).addClass("no-touch"); |
| } |
| }); |
| </script> |
| <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" |
| integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" |
| crossorigin="anonymous"></script> |
| <script> |
| (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
| (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
| m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
| })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); |
| |
| ga('create', 'UA-68448017-1', 'auto'); |
| ga('send', 'pageview'); |
| </script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script> |
| <script> |
| anchors.options = { |
| placement: 'right', |
| visible: 'touch', |
| }; |
| anchors.add(); |
| </script> |
| </body> |
| </html> |
| |