<!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 28, 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 28, 2016</h1>
    <p class="meta">Posted 28 Mar 2016 by Todd Lipcon</p>
  </header>
  <div class="entry-content">
    <p>Welcome to the second edition of the Kudu Weekly Update. As with last week’s
inaugural post, we’ll cover ongoing development and news in the Apache Kudu
project on a weekly basis.</p>

<!--more-->

<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">@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="development-discussions-and-code-in-progress">Development discussions and code in progress</h2>

<ul>
  <li>
    <p>Binglin Chang’s patch for <a href="http://gerrit.cloudera.org:8080/#/c/2327/">per-tablet write quotas</a>,
described in last week’s post, was committed this week. This new experimental feature will be
available in the upcoming 0.8.0 release.</p>
  </li>
  <li>
    <p>Development discussion around improving the stability of the high-availability
Kudu master continued on the <a href="http://gerrit.cloudera.org:8080/#/c/2527/">design doc review</a>.</p>
  </li>
  <li>
    <p>Dan Burkert has been working on a <a href="http://gerrit.cloudera.org:8080/#/c/2443/">design doc</a>
for a “scan tokens” API as described in the <a href="https://issues.apache.org/jira/browse/KUDU-1312">KUDU-1312</a>
JIRA. He also posted a preliminary patch series for the
<a href="http://gerrit.cloudera.org:8080/#/c/2592/">Java implementation</a> of the API.</p>

    <p>This work will make it easier to integrate query and execution engines such as
Spark, MapReduce, and Drill with Kudu. In particular, the API aims to support features
such as partition pruning based on Kudu’s distribution schemas. See the design document
for more details.</p>
  </li>
  <li>
    <p>Ara Ebrahimi has been working on a Kudu sink for Flume. This will make it easier for
users of Flume to build streaming ingest pipelines into Kudu tables. The
<a href="http://gerrit.cloudera.org:8080/#/c/2600/">code review</a> is making steady progress
with reviews by Mike Percy and Harsh J.</p>
  </li>
  <li>
    <p>Jean-Daniel Cryans was the release manager for the past couple of releases and is
acting as RM again for the upcoming 0.8.0 release. This week he reminded developers
that <a href="http://markmail.org/thread/syfg6icqhfgxlcvi">the 0.8.0 train will soon be departing the station</a>.
JD is trying to follow the “train” release model: if a feature is ready when the release’s
time comes, it will be included. Otherwise, it will have to wait for the next release
to depart.</p>

    <p>The thread hasn’t generated much discussion, as it’s just a reminder of the schedule
that JD proposed a few months back. However, the focus this coming week will likely
be on fixing blockers and getting the last bits and pieces of in-flight features
in before a release candidate is cut.</p>
  </li>
</ul>

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

<ul>
  <li>This week, O’Reilly and Cloudera will be hosting the Strata/Hadoop World
in San Jose. The conference will feature two talks on Kudu:</li>
</ul>

<ol>
  <li>Thu, Mar 31, 2016. <a href="http://conferences.oreilly.com/strata/hadoop-big-data-ca/public/schedule/detail/47055">Strata Hadoop World</a>. San Jose, CA, USA.<br />
<em>Fast data made easy with Apache Kafka and Apache Kudu (incubating)</em>. Presented by Ted Malaska and Jeff Holoman.</li>
  <li>Wed, Mar 30, 2016. <a href="http://conferences.oreilly.com/strata/hadoop-big-data-ca/public/schedule/detail/46916">Strata Hadoop World</a>. San Jose, CA, USA.<br />
<em>Hadoop’s storage gap: Resolving transactional-access and analytic-performance tradeoffs with Apache Kudu (incubating)</em>. Presented by Todd Lipcon.</li>
</ol>

<p>Datanami has posted a <a href="http://www.datanami.com/2016/03/28/strata-preview-resolving-hadoops-storage-gap/">preview of Todd Lipcon’s talk</a>.</p>

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

