<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu (incubating) completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu (incubating) - Apache Kudu (incubating) Weekly Update March 21, 2016</title>
    <!-- Bootstrap core CSS -->
    <link href="/css/bootstrap.min.css" rel="stylesheet" />

    <!-- Custom styles for this template -->
    <link href="/css/justified-nav.css" rel="stylesheet" />

    <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" />

    
    <link rel="alternate" type="application/atom+xml"
      title="RSS Feed for Apache Kudu blog"
      href="/feed.xml" />
    

    <!-- 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>
    <!-- Fork me on GitHub -->
    <a class="fork-me-on-github" href="https://github.com/apache/incubator-kudu"><img src="//aral.github.io/fork-me-on-github-retina-ribbons/right-cerulean@2x.png" alt="Fork me on GitHub" /></a>

    <div class="kudu-site container-fluid">
      <!-- Static navbar -->
        <nav class="container-fluid navbar-default">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            
            <a class="logo" href="/"><img src="/img/logo_small.png" width="80" /></a>
            
          </div>
          <div id="navbar" class="navbar-collapse collapse navbar-right">
            <ul class="nav navbar-nav">
              <li >
                <a href="/">Home</a>
              </li>
              <li >
                <a href="/overview.html">Overview</a>
              </li>
              <li >
                <a href="/docs/">Documentation</a>
              </li>
              <li >
                <a href="/releases/">Download</a>
              </li>
              <li class="active">
                <a href="/blog/">Blog</a>
              </li>
              <li >
                <a href="/community.html">Community</a>
              </li>
              <li >
                <a href="/faq.html">FAQ</a>
              </li>
            </ul>
          </div><!--/.nav-collapse -->
        </nav>

<div class="row header">
  <div class="col-lg-12">
    <h2><a href="/blog">Apache Kudu (incubating) Blog</a></h2>
  </div>
</div>

<div class="row-fluid">
  <div class="col-lg-9">
    <article>
  <header>
    <h1 class="entry-title">Apache Kudu (incubating) Weekly Update March 21, 2016</h1>
    <p class="meta">Posted 20 Mar 2016 by Todd Lipcon</p>
  </header>
  <div class="entry-content">
    <p>Kudu is a fast-moving young open source project, and we’ve heard from a few
members of the community that it can be difficult to keep track of what’s
going on day-to-day. A typical month comprises 80-100 individual patches
committed and hundreds of code review and discussion
emails. So, inspired by similar weekly newsletters like
<a href="http://llvmweekly.org/">LLVM Weekly</a> and <a href="http://lwn.net/Kernel/">LWN’s weekly kernel coverage</a>
we’re going to experiment with our own weekly newsletter covering
recent development and Kudu-related news.
<!--more--></p>

<p>If you find this post useful, please let us know by emailing the
<a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#107;&#117;&#100;&#117;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">kudu-user mailing list</a> or
tweeting at <a href="https://twitter.com/">@ApacheKudu</a>. Similarly, if you’re
aware of some Kudu news we missed, let us know so we can cover it in
a future post.</p>

<h2 id="news-and-articles-from-around-the-web">News and articles from around the web</h2>

<ul>
  <li>Apache Kudu (incubating) 0.7.1 was released last week, and this week
Cloudera announced that its
<a href="http://www.cloudera.com/documentation/betas/kudu/latest/topics/kudu_installation.html">Kudu 0.7.1 binaries</a>
are now available.</li>
  <li>The Ibis open source project <a href="http://blog.ibis-project.org/release-0.7/">released version 0.7.0</a>
which includes support for querying Kudu. <a href="http://blog.ibis-project.org/kudu-impala-ibis/">An earlier post</a>
shows an example of the Ibis-Kudu integration in action.</li>
</ul>

<h2 id="development-discussions-and-code-in-progress">Development discussions and code in progress</h2>

<ul>
  <li>
    <p>Since the first public release, Kudu has had some experimental support for high-availability
master processes. Adar Dembo has started some work identifying the current gaps that make it
experimental and outlining some plans to stabilize it enough for reliable production use.
This week he posted a <a href="http://gerrit.cloudera.org:8080/#/c/2527/">design doc</a> as well as
some <a href="http://gerrit.cloudera.org:8080/#/c/2583/">analysis of CatalogManager code paths</a>.</p>
  </li>
  <li>
    <p>David Alves kicked off a <a href="http://markmail.org/message/p4njqwkls7di7aoa">discussion about version numbers for the Python client</a>.
The discussion trailed off with some general agreement that the Python client would
keep to its own version numbering scheme for the time being, rather than being tied
to specific Kudu versions.</p>
  </li>
  <li>
    <p>Binglin Chang’s patch for <a href="http://gerrit.cloudera.org:8080/#/c/2327/">per-tablet write quotas</a>
and associated throttling passed review and should be committed soon. This adds a very basic
throttling mechanism that can provide for some basic isolation and capacity planning for
multi-tenant clusters. It will be considered an experimental feature in the 0.8.0 release.</p>
  </li>
  <li>
    <p>Dan Burkert finished off some patches originally prototyped by Todd Lipcon which add
two types of “feature flags” for Kudu’s RPC system. Feature flags are a mechanism by which
Kudu clients and servers can expose to one another what specific features they support,
enabling better cross-version compatibility. The <a href="http://gerrit.cloudera.org:8080/#/c/2238/">first type of feature flag</a>
enumerates the features supported by the RPC system itself. The <a href="http://gerrit.cloudera.org:8080/#/c/2239/">second type</a>
are scoped to an individual call, and can be used by a client to assert that the server
is new enough to properly interpret requests. The commit messages and code documentation
included in these patches give example use cases.</p>
  </li>
  <li>
    <p>Dan also finished off most of a patch series implementing improved partition pruning
support. This will help reduce the number of servers that a client must contact when
scanning a table with predicates (e.g. by eliminating tablets from a hash-partitioned
table when the scanner specifies an equality predicate on the hash-distributed column).
More details can be found in the
<a href="https://github.com/apache/incubator-kudu/blob/master/docs/design-docs/scan-optimization-partition-pruning.md">partition-pruning design doc</a>
as well as the patches (<a href="http://gerrit.cloudera.org:8080/#/c/2137/">1</a>,
<a href="http://gerrit.cloudera.org:8080/#/c/2413/">2</a>,
<a href="http://gerrit.cloudera.org:8080/#/c/2138/">3</a>).</p>
  </li>
</ul>

<h2 id="upcoming-talks-and-meetups">Upcoming talks and meetups</h2>

<ul>
  <li>Dan Burkert will be presenting his work on a
<a href="https://github.com/danburkert/kudu-rs">Rust language client library for Kudu</a>
at the <a href="http://www.meetup.com/Rust-Bay-Area/events/229107276/">Rust Bay Area</a> meetup.</li>
</ul>

  </div>
</article>


  </div>
  <div class="col-lg-3 recent-posts">
    <h3>Recent posts</h3>
    <ul>
    
      <li> <a href="/2016/06/21/weekly-update.html">Apache Kudu (incubating) Weekly Update June 21, 2016</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>
    
      <li> <a href="/2016/06/10/apache-kudu-0-9-0-released.html">Apache Kudu (incubating) 0.9.0 released</a> </li>
    
      <li> <a href="/2016/06/06/weekly-update.html">Apache Kudu (incubating) Weekly Update June 6, 2016</a> </li>
    
      <li> <a href="/2016/06/02/no-default-partitioning.html">Default Partitioning Changes Coming in Kudu 0.9</a> </li>
    
      <li> <a href="/2016/06/01/weekly-update.html">Apache Kudu (incubating) Weekly Update June 1, 2016</a> </li>
    
      <li> <a href="/2016/05/23/weekly-update.html">Apache Kudu (incubating) Weekly Update May 23, 2016</a> </li>
    
      <li> <a href="/2016/05/16/weekly-update.html">Apache Kudu (incubating) Weekly Update May 16, 2016</a> </li>
    
      <li> <a href="/2016/05/09/weekly-update.html">Apache Kudu (incubating) Weekly Update May 9, 2016</a> </li>
    
      <li> <a href="/2016/05/03/weekly-update.html">Apache Kudu (incubating) Weekly Update May 3, 2016</a> </li>
    
      <li> <a href="/2016/04/26/ycsb.html">Benchmarking and Improving Kudu Insert Performance with YCSB</a> </li>
    
      <li> <a href="/2016/04/25/weekly-update.html">Apache Kudu (incubating) Weekly Update April 25, 2016</a> </li>
    
      <li> <a href="/2016/04/19/kudu-0-8-0-predicate-improvements.html">Predicate Improvements in Kudu 0.8</a> </li>
    
      <li> <a href="/2016/04/18/weekly-update.html">Apache Kudu (incubating) Weekly Update April 18, 2016</a> </li>
    
    </ul>
  </div>
</div>

      <footer class="footer">
        <p class="pull-left">
        <a href="http://incubator.apache.org"><img src="/img/apache-incubator.png" width="225" height="53" align="right"/></a>
        </p>
        <p class="small">
        Apache Kudu (incubating) is an effort undergoing incubation at the Apache Software
        Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
        required of all newly accepted projects until a further review
        indicates that the infrastructure, communications, and decision making
        process have stabilized in a manner consistent with other successful
        ASF projects. While incubation status is not necessarily a reflection
        of the completeness or stability of the code, it does indicate that the
        project has yet to be fully endorsed by the ASF.

        Copyright &copy; 2016 The Apache Software Foundation. 
        </p>
      </footer>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="/js/bootstrap.js"></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>

