blob: 109f6a4d9e7b20feb2696f8a9637f8b86e3be508 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.111.3">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.
For Flink 0.10.0, the focus of the community was to graduate the DataStream API from beta and to evolve Apache Flink into a production-ready stream data processor with a competitive feature set.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Announcing Apache Flink 0.10.0" />
<meta property="og:description" content="The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.
For Flink 0.10.0, the focus of the community was to graduate the DataStream API from beta and to evolve Apache Flink into a production-ready stream data processor with a competitive feature set." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2015/11/16/announcing-apache-flink-0.10.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-11-16T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-11-16T08:00:00+00:00" />
<title>Announcing Apache Flink 0.10.0 | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9&#43;28Iyvkdhgf5o=">
<script defer src="/en.search.min.8592fd2e43835d2ef6fab8eb9b8969ee6ad1bdb888a636e37e28032f8bd9887d.js" integrity="sha256-hZL9LkODXS72&#43;rjrm4lp7mrRvbiIpjbjfigDL4vZiH0="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
<script src="/js/anchor.min.js"></script>
<script src="/js/flink.js"></script>
<link rel="canonical" href="https://flink.apache.org/2015/11/16/announcing-apache-flink-0.10.0/">
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<nav>
<a id="logo" href="/">
<img width="70%" src="/flink-header-logo.svg">
</a>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<input type="checkbox" id="section-4117fb24454a2c30ee86e524839e77ec" class="toggle" />
<label for="section-4117fb24454a2c30ee86e524839e77ec" class="flex justify-between flink-menu-item">What is Apache Flink?<span></span>
</label>
<ul>
<li>
<label for="section-ffd5922da551e96e0481423fab94c463" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/what-is-flink/flink-architecture/" class="">Architecture</a>
</label>
</li>
<li>
<label for="section-fc28f08b67476edb77e00e03b6c7c2e0" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/what-is-flink/flink-applications/" class="">Applications</a>
</label>
</li>
<li>
<label for="section-612df33a02d5d4ee78d718abaab5b5b4" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/what-is-flink/flink-operations/" class="">Operations</a>
</label>
</li>
</ul>
<label for="section-f1ecec07350bd6810050d40158878749" class="flex justify-between flink-menu-item">
<a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/" style="color:black" class="">What is Stateful Functions? <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<label for="section-4113a4c3072cb35f6fd7a0d4e098ee70" class="flex justify-between flink-menu-item">
<a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/" style="color:black" class="">What is Flink ML? <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<label for="section-b39c70259d0abbe2bf1d8d645425f84d" class="flex justify-between flink-menu-item">
<a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/" style="color:black" class="">What is the Flink Kubernetes Operator? <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<label for="section-53e0b1afcb9ccaf779dc285aa272a014" class="flex justify-between flink-menu-item">
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/" style="color:black" class="">What is Flink Table Store? <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<label for="section-f4973f06a66f063045b4ebdacaf3127d" class="flex justify-between flink-menu-item">
<a href="/use-cases/" class="">Use Cases</a>
</label>
<label for="section-0f1863835376e859ac438ae9529daff2" class="flex justify-between flink-menu-item">
<a href="/powered-by/" class="">Powered By</a>
</label>
<br/>
<label for="section-f383f23a96a43d8d0cc66aeb0237e26a" class="flex justify-between flink-menu-item">
<a href="/downloads/" class="">Downloads</a>
</label>
<input type="checkbox" id="section-c727fab97b4d77e5b28ce8c448fb9000" class="toggle" />
<label for="section-c727fab97b4d77e5b28ce8c448fb9000" class="flex justify-between flink-menu-item">Getting Started<span></span>
</label>
<ul>
<li>
<label for="section-f45abaa99ab076108b9a5b94edbc6647" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/" style="color:black" class="">With Flink <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-efe2166e9dce6f72e126dcc2396b4402" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html" style="color:black" class="">With Flink Stateful Functions <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-7e268d0a469b1093bb33d71d093eb7b9" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/" style="color:black" class="">With Flink ML <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-cc7147cd0441503127bfaf6f219d4fbb" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/" style="color:black" class="">With Flink Kubernetes Operator <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-660ca694e416d8ca9176dda52a60d637" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/docs/try-table-store/quick-start/" style="color:black" class="">With Flink Table Store <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-75db0b47bf4ae9c247aadbba5fbd720d" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/" style="color:black" class="">Training Course <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
</ul>
<input type="checkbox" id="section-6318075fef29529089951a49d413d083" class="toggle" />
<label for="section-6318075fef29529089951a49d413d083" class="flex justify-between flink-menu-item">Documentation<span></span>
</label>
<ul>
<li>
<label for="section-9a8122d8912450484d1c25394ad40229" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-docs-stable/" style="color:black" class="">Flink 1.17 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-8b2fd3efb702be3783ba98d650707e3c" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-docs-master/" style="color:black" class="">Flink Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-5317a079cddb964c59763c27607f43d9" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/" style="color:black" class="">Stateful Functions 3.2 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-25b72f108b7156e94d91b04853d8813a" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-statefun-docs-master" style="color:black" class="">Stateful Functions Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-13a02f969904a2455a39ed90e287593f" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/" style="color:black" class="">ML 2.2 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-6d895ec5ad127a29a6a9ce101328ccdf" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-ml-docs-master" style="color:black" class="">ML Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-c83ad0caf34e364bf3729badd233a350" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/" style="color:black" class="">Kubernetes Operator 1.4 (latest) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-a2c75d90005425982ba8f26ae0e160a3" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main" style="color:black" class="">Kubernetes Operator Main (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-07b85e4b2f61b1526bf202c64460abcd" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/" style="color:black" class="">Table Store 0.3 (stable) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
<li>
<label for="section-9b9a0032b1e858a34c125d828d1a0718" class="flex justify-between flink-menu-item flink-menu-child">
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-master/" style="color:black" class="">Table Store Master (snapshot) <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
</li>
</ul>
<label for="section-63d6a565d79aa2895f70806a46021c07" class="flex justify-between flink-menu-item">
<a href="/getting-help/" class="">Getting Help</a>
</label>
<label for="section-1d5066022b83f4732dc80f4e9eaa069a" class="flex justify-between flink-menu-item">
<a href="https://flink-packages.org/" style="color:black" class="">flink-packages.org <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<br/>
<label for="section-7821b78a97db9e919426e86121a7be9c" class="flex justify-between flink-menu-item">
<a href="/community/" class="">Community & Project Info</a>
</label>
<label for="section-8c042831df4e371c4ef9375f1df06f35" class="flex justify-between flink-menu-item">
<a href="/roadmap/" class="">Roadmap</a>
</label>
<input type="checkbox" id="section-73117efde5302fddcb193307d582b588" class="toggle" />
<label for="section-73117efde5302fddcb193307d582b588" class="flex justify-between flink-menu-item">How to Contribute<span></span>
</label>
<ul>
<li>
<label for="section-6646b26b23a3e79b8de9c552ee76f6dd" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/overview/" class="">Overview</a>
</label>
</li>
<li>
<label for="section-e6ab9538b82cd5f94103b971adb7c1a9" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/contribute-code/" class="">Contribute Code</a>
</label>
</li>
<li>
<label for="section-1c09e1358485e82d9b3f5f689d4ced65" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/reviewing-prs/" class="">Review Pull Requests</a>
</label>
</li>
<li>
<label for="section-ed01e0defd235498fa3c9a2a0b3302fb" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/code-style-and-quality-preamble/" class="">Code Style and Quality Guide</a>
</label>
</li>
<li>
<label for="section-4e8d5e9924cf15f397711b0d82e15650" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/contribute-documentation/" class="">Contribute Documentation</a>
</label>
</li>
<li>
<label for="section-ddaa8307917e5ba7f60ba3316711e492" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/documentation-style-guide/" class="">Documentation Style Guide</a>
</label>
</li>
<li>
<label for="section-390a72c171cc82f180a308b95fc3aa72" class="flex justify-between flink-menu-item flink-menu-child">
<a href="/how-to-contribute/improve-website/" class="">Contribute to the Website</a>
</label>
</li>
</ul>
<label for="section-9d3ddfd487223d5a199ba301f25c88c6" class="flex justify-between flink-menu-item">
<a href="/security/" class="">Security</a>
</label>
<br/>
<label for="section-a07783f405300745807d39eacf150420" class="flex justify-between flink-menu-item">
<a href="/posts/" class="">Flink Blog</a>
</label>
<br/>
<hr class="menu-break">
<label for="section-f71a7070dbb7b669824a6441408ded70" class="flex justify-between flink-menu-item">
<a href="https://github.com/apache/flink" style="color:black" class="">Flink on GitHub <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<label for="section-2ccaaab8c67f3105bbf7df75faca8027" class="flex justify-between flink-menu-item">
<a href="https://twitter.com/apacheflink" style="color:black" class="">@ApacheFlink <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label>
<hr class="menu-break">
<table>
<tr>
<th colspan="2">
<label for="section-78c2028200542d78f8c1a8f6b4cbb36b" class="flex justify-between flink-menu-item">
<a href="https://www.apache.org/" style="color:black" class="">Apache Software Foundation <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label></th>
</tr>
<tr>
<td>
<label for="section-794df3791a8c800841516007427a2aa3" class="flex justify-between flink-menu-item">
<a href="https://www.apache.org/licenses/" style="color:black" class="">License <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label></td>
<td>
<label for="section-2fae32629d4ef4fc6341f1751b405e45" class="flex justify-between flink-menu-item">
<a href="https://www.apache.org/security/" style="color:black" class="">Security <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label></td>
</tr>
<tr>
<td>
<label for="section-0584e445d656b83b431227bb80ff0c30" class="flex justify-between flink-menu-item">
<a href="https://www.apache.org/foundation/sponsorship.html" style="color:black" class="">Donate <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label></td>
<td>
<label for="section-00d06796e489999226fb5bb27fe1b3b2" class="flex justify-between flink-menu-item">
<a href="https://www.apache.org/foundation/thanks.html" style="color:black" class="">Thanks <i class="link fa fa-external-link title" aria-hidden="true"></i></a>
</label></td>
</tr>
</table>
<hr class="menu-break">
<a href="/zh/" class="flex align-center">
<i class="fa fa-globe" aria-hidden="true"></i>&nbsp;&nbsp;
中文版
</a>
<script src="/js/track-search-terms.js"></script>
</nav>
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Announcing Apache Flink 0.10.0</strong>
<label for="toc-control">
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3>
<ul>
<li><a href="#new-features">New Features</a>
<ul>
<li><a href="#event-time-stream-processing">Event-time Stream Processing</a></li>
<li><a href="#stateful-stream-processing">Stateful Stream Processing</a></li>
<li><a href="#highly-available-cluster-operations">Highly-available Cluster Operations</a></li>
<li><a href="#graduated-datastream-api">Graduated DataStream API</a></li>
<li><a href="#new-connectors-for-data-streams">New Connectors for Data Streams</a></li>
<li><a href="#new-web-dashboard--real-time-monitoring">New Web Dashboard &amp; Real-time Monitoring</a></li>
<li><a href="#off-heap-managed-memory">Off-heap Managed Memory</a></li>
<li><a href="#outer-joins">Outer Joins</a></li>
<li><a href="#gelly-major-improvements-and-scala-api">Gelly: Major Improvements and Scala API</a></li>
</ul>
</li>
<li><a href="#more-improvements-and-fixes">More Improvements and Fixes</a></li>
<li><a href="#notice">Notice</a></li>
<li><a href="#contributors">Contributors</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown">
<h1>
<a href="/2015/11/16/announcing-apache-flink-0.10.0/">Announcing Apache Flink 0.10.0</a>
</h1>
November 16, 2015 -
<p><p>The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.</p>
<p>For Flink 0.10.0, the focus of the community was to graduate the DataStream API from beta and to evolve Apache Flink into a production-ready stream data processor with a competitive feature set. These efforts resulted in support for event-time and out-of-order streams, exactly-once guarantees in the case of failures, a very flexible windowing mechanism, sophisticated operator state management, and a highly-available cluster operation mode. Flink 0.10.0 also brings a new monitoring dashboard with real-time system and job monitoring capabilities. Both batch and streaming modes of Flink benefit from the new high availability and improved monitoring features. Needless to say that Flink 0.10.0 includes many more features, improvements, and bug fixes.</p>
<p>We encourage everyone to <a href="/downloads.html">download the release</a> and <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/">check out the documentation</a>. Feedback through the Flink <a href="/community.html#mailing-lists">mailing lists</a> is, as always, very welcome!</p>
<h2 id="new-features">
New Features
<a class="anchor" href="#new-features">#</a>
</h2>
<h3 id="event-time-stream-processing">
Event-time Stream Processing
<a class="anchor" href="#event-time-stream-processing">#</a>
</h3>
<p>Many stream processing applications consume data from sources that produce events with associated timestamps such as sensor or user-interaction events. Very often, events have to be collected from several sources such that it is usually not guaranteed that events arrive in the exact order of their timestamps at the stream processor. Consequently, stream processors must take out-of-order elements into account in order to produce results which are correct and consistent with respect to the timestamps of the events. With release 0.10.0, Apache Flink supports event-time processing as well as ingestion-time and processing-time processing. See <a href="https://issues.apache.org/jira/browse/FLINK-2674">FLINK-2674</a> for details.</p>
<h3 id="stateful-stream-processing">
Stateful Stream Processing
<a class="anchor" href="#stateful-stream-processing">#</a>
</h3>
<p>Operators that maintain and update state are a common pattern in many stream processing applications. Since streaming applications tend to run for a very long time, operator state can become very valuable and impossible to recompute. In order to enable fault-tolerance, operator state must be backed up to persistent storage in regular intervals. Flink 0.10.0 offers flexible interfaces to define, update, and query operator state and hooks to connect various state backends.</p>
<h3 id="highly-available-cluster-operations">
Highly-available Cluster Operations
<a class="anchor" href="#highly-available-cluster-operations">#</a>
</h3>
<p>Stream processing applications may be live for months. Therefore, a production-ready stream processor must be highly-available and continue to process data even in the face of failures. With release 0.10.0, Flink supports high availability modes for standalone cluster and <a href="https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html">YARN</a> setups, eliminating any single point of failure. In this mode, Flink relies on <a href="https://zookeeper.apache.org">Apache Zookeeper</a> for leader election and persisting small sized meta-data of running jobs. You can <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/setup/jobmanager_high_availability.html">check out the documentation</a> to see how to enable high availability. See <a href="https://issues.apache.org/jira/browse/FLINK-2287">FLINK-2287</a> for details.</p>
<h3 id="graduated-datastream-api">
Graduated DataStream API
<a class="anchor" href="#graduated-datastream-api">#</a>
</h3>
<p>The DataStream API was revised based on user feedback and with foresight for upcoming features and graduated from beta status to fully supported. The most obvious changes are related to the methods for stream partitioning and window operations. The new windowing system is based on the concepts of window assigners, triggers, and evictors, inspired by the <a href="http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf">Dataflow Model</a>. The new API is fully described in the <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/apis/streaming_guide.html">DataStream API documentation</a>. This <a href="https://cwiki.apache.org/confluence/display/FLINK/Migration&#43;Guide%3A&#43;0.9.x&#43;to&#43;0.10.x">migration guide</a> will help to port your Flink 0.9 DataStream programs to the revised API of Flink 0.10.0. See <a href="https://issues.apache.org/jira/browse/FLINK-2674">FLINK-2674</a> and <a href="https://issues.apache.org/jira/browse/FLINK-2877">FLINK-2877</a> for details.</p>
<h3 id="new-connectors-for-data-streams">
New Connectors for Data Streams
<a class="anchor" href="#new-connectors-for-data-streams">#</a>
</h3>
<p>Apache Flink 0.10.0 features DataStream sources and sinks for many common data producers and stores. This includes an exactly-once rolling file sink which supports any file system, including HDFS, local FS, and S3. We also updated the <a href="https://kafka.apache.org">Apache Kafka</a> producer to use the new producer API, and added a connectors for <a href="https://github.com/elastic/elasticsearch">ElasticSearch</a> and <a href="https://nifi.apache.org">Apache Nifi</a>. More connectors for DataStream programs will be added by the community in the future. See the following JIRA issues for details <a href="https://issues.apache.org/jira/browse/FLINK-2583">FLINK-2583</a>, <a href="https://issues.apache.org/jira/browse/FLINK-2386">FLINK-2386</a>, <a href="https://issues.apache.org/jira/browse/FLINK-2372">FLINK-2372</a>, <a href="https://issues.apache.org/jira/browse/FLINK-2740">FLINK-2740</a>, and <a href="https://issues.apache.org/jira/browse/FLINK-2558">FLINK-2558</a>.</p>
<h3 id="new-web-dashboard--real-time-monitoring">
New Web Dashboard &amp; Real-time Monitoring
<a class="anchor" href="#new-web-dashboard--real-time-monitoring">#</a>
</h3>
<p>The 0.10.0 release features a newly designed and significantly improved monitoring dashboard for Apache Flink. The new dashboard visualizes the progress of running jobs and shows real-time statistics of processed data volumes and record counts. Moreover, it gives access to resource usage and JVM statistics of TaskManagers including JVM heap usage and garbage collection details. The following screenshot shows the job view of the new dashboard.</p>
<center>
<img src="/img/blog/new-dashboard-screenshot.png" style="width:90%;margin:15px">
</center>
<p>The web server that provides all monitoring statistics has been designed with a REST interface allowing other systems to also access the internal system metrics. See <a href="https://issues.apache.org/jira/browse/FLINK-2357">FLINK-2357</a> for details.</p>
<h3 id="off-heap-managed-memory">
Off-heap Managed Memory
<a class="anchor" href="#off-heap-managed-memory">#</a>
</h3>
<p>Flink’s internal operators (such as its sort algorithm and hash tables) write data to and read data from managed memory to achieve memory-safe operations and reduce garbage collection overhead. Until version 0.10.0, managed memory was allocated only from JVM heap memory. With this release, managed memory can also be allocated from off-heap memory. This will facilitate shorter TaskManager start-up times as well as reduce garbage collection pressure. See <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/setup/config.html#managed-memory">the documentation</a> to learn how to configure managed memory on off-heap memory. JIRA issue <a href="https://issues.apache.org/jira/browse/FLINK-1320">FLINK-1320</a> contains further details.</p>
<h3 id="outer-joins">
Outer Joins
<a class="anchor" href="#outer-joins">#</a>
</h3>
<p>Outer joins have been one of the most frequently requested features for Flink’s <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/apis/programming_guide.html">DataSet API</a>. Although there was a workaround to implement outer joins as CoGroup function, it had significant drawbacks including added code complexity and not being fully memory-safe. With release 0.10.0, Flink adds native support for <a href="//nightlies.apache.org/flinkflink-docs-release-0.10/apis/dataset_transformations.html#outerjoin">left, right, and full outer joins</a> to the DataSet API. All outer joins are backed by a memory-safe operator implementation that leverages Flink’s managed memory. See <a href="https://issues.apache.org/jira/browse/FLINK-687">FLINK-687</a> and <a href="https://issues.apache.org/jira/browse/FLINK-2107">FLINK-2107</a> for details.</p>
<h3 id="gelly-major-improvements-and-scala-api">
Gelly: Major Improvements and Scala API
<a class="anchor" href="#gelly-major-improvements-and-scala-api">#</a>
</h3>
<p><a href="//nightlies.apache.org/flinkflink-docs-release-0.10/libs/gelly_guide.html">Gelly</a> is Flink’s API and library for processing and analyzing large-scale graphs. Gelly was introduced with release 0.9.0 and has been very well received by users and contributors. Based on user feedback, Gelly has been improved since then. In addition, Flink 0.10.0 introduces a Scala API for Gelly. See <a href="https://issues.apache.org/jira/browse/FLINK-2857">FLINK-2857</a> and <a href="https://issues.apache.org/jira/browse/FLINK-1962">FLINK-1962</a> for details.</p>
<h2 id="more-improvements-and-fixes">
More Improvements and Fixes
<a class="anchor" href="#more-improvements-and-fixes">#</a>
</h2>
<p>The Flink community resolved more than 400 issues. The following list is a selection of new features and fixed bugs.</p>
<ul>
<li><a href="https://issues.apache.org/jira/browse/FLINK-1851">FLINK-1851</a> Java Table API does not support Casting</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2152">FLINK-2152</a> Provide zipWithIndex utility in flink-contrib</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2158">FLINK-2158</a> NullPointerException in DateSerializer.</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2240">FLINK-2240</a> Use BloomFilter to minimize probe side records which are spilled to disk in Hybrid-Hash-Join</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2533">FLINK-2533</a> Gap based random sample optimization</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2555">FLINK-2555</a> Hadoop Input/Output Formats are unable to access secured HDFS clusters</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2565">FLINK-2565</a> Support primitive arrays as keys</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2582">FLINK-2582</a> Document how to build Flink with other Scala versions</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2584">FLINK-2584</a> ASM dependency is not shaded away</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2689">FLINK-2689</a> Reusing null object for joins with SolutionSet</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2703">FLINK-2703</a> Remove log4j classes from fat jar / document how to use Flink with logback</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2763">FLINK-2763</a> Bug in Hybrid Hash Join: Request to spill a partition with less than two buffers.</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2767">FLINK-2767</a> Add support Scala 2.11 to Scala shell</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2774">FLINK-2774</a> Import Java API classes automatically in Flink&rsquo;s Scala shell</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2782">FLINK-2782</a> Remove deprecated features for 0.10</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2800">FLINK-2800</a> kryo serialization problem</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2834">FLINK-2834</a> Global round-robin for temporary directories</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2842">FLINK-2842</a> S3FileSystem is broken</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2874">FLINK-2874</a> Certain Avro generated getters/setters not recognized</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2895">FLINK-2895</a> Duplicate immutable object creation</li>
<li><a href="https://issues.apache.org/jira/browse/FLINK-2964">FLINK-2964</a> MutableHashTable fails when spilling partitions without overflow segments</li>
</ul>
<h2 id="notice">
Notice
<a class="anchor" href="#notice">#</a>
</h2>
<p>As previously announced, Flink 0.10.0 no longer supports Java 6. If you are still using Java 6, please consider upgrading to Java 8 (Java 7 ended its free support in April 2015).
Also note that some methods in the DataStream API had to be renamed as part of the API rework. For example the <code>groupBy</code> method has been renamed to <code>keyBy</code> and the windowing API changed. This <a href="https://cwiki.apache.org/confluence/display/FLINK/Migration&#43;Guide%3A&#43;0.9.x&#43;to&#43;0.10.x">migration guide</a> will help to port your Flink 0.9 DataStream programs to the revised API of Flink 0.10.0.</p>
<h2 id="contributors">
Contributors
<a class="anchor" href="#contributors">#</a>
</h2>
<ul>
<li>Alexander Alexandrov</li>
<li>Marton Balassi</li>
<li>Enrique Bautista</li>
<li>Faye Beligianni</li>
<li>Bryan Bende</li>
<li>Ajay Bhat</li>
<li>Chris Brinkman</li>
<li>Dmitry Buzdin</li>
<li>Kun Cao</li>
<li>Paris Carbone</li>
<li>Ufuk Celebi</li>
<li>Shivani Chandna</li>
<li>Liang Chen</li>
<li>Felix Cheung</li>
<li>Hubert Czerpak</li>
<li>Vimal Das</li>
<li>Behrouz Derakhshan</li>
<li>Suminda Dharmasena</li>
<li>Stephan Ewen</li>
<li>Fengbin Fang</li>
<li>Gyula Fora</li>
<li>Lun Gao</li>
<li>Gabor Gevay</li>
<li>Piotr Godek</li>
<li>Sachin Goel</li>
<li>Anton Haglund</li>
<li>Gábor Hermann</li>
<li>Greg Hogan</li>
<li>Fabian Hueske</li>
<li>Martin Junghanns</li>
<li>Vasia Kalavri</li>
<li>Ulf Karlsson</li>
<li>Frederick F. Kautz</li>
<li>Samia Khalid</li>
<li>Johannes Kirschnick</li>
<li>Kostas Kloudas</li>
<li>Alexander Kolb</li>
<li>Johann Kovacs</li>
<li>Aljoscha Krettek</li>
<li>Sebastian Kruse</li>
<li>Andreas Kunft</li>
<li>Chengxiang Li</li>
<li>Chen Liang</li>
<li>Andra Lungu</li>
<li>Suneel Marthi</li>
<li>Tamara Mendt</li>
<li>Robert Metzger</li>
<li>Maximilian Michels</li>
<li>Chiwan Park</li>
<li>Sahitya Pavurala</li>
<li>Pietro Pinoli</li>
<li>Ricky Pogalz</li>
<li>Niraj Rai</li>
<li>Lokesh Rajaram</li>
<li>Johannes Reifferscheid</li>
<li>Till Rohrmann</li>
<li>Henry Saputra</li>
<li>Matthias Sax</li>
<li>Shiti Saxena</li>
<li>Chesnay Schepler</li>
<li>Peter Schrott</li>
<li>Saumitra Shahapure</li>
<li>Nikolaas Steenbergen</li>
<li>Thomas Sun</li>
<li>Peter Szabo</li>
<li>Viktor Taranenko</li>
<li>Kostas Tzoumas</li>
<li>Pieter-Jan Van Aeken</li>
<li>Theodore Vasiloudis</li>
<li>Timo Walther</li>
<li>Chengxuan Wang</li>
<li>Huang Wei</li>
<li>Dawid Wysakowicz</li>
<li>Rerngvit Yanggratoke</li>
<li>Nezih Yigitbasi</li>
<li>Ted Yu</li>
<li>Rucong Zhang</li>
<li>Vyacheslav Zholudev</li>
<li>Zoltán Zvara</li>
</ul>
</p>
</article>
<footer class="book-footer">
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
<br><br>
<a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-11-16-release-0.10.0.md" style="color:black"><i class="fa fa-edit fa-fw"></i>Edit This Page</a>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3>
<ul>
<li><a href="#new-features">New Features</a>
<ul>
<li><a href="#event-time-stream-processing">Event-time Stream Processing</a></li>
<li><a href="#stateful-stream-processing">Stateful Stream Processing</a></li>
<li><a href="#highly-available-cluster-operations">Highly-available Cluster Operations</a></li>
<li><a href="#graduated-datastream-api">Graduated DataStream API</a></li>
<li><a href="#new-connectors-for-data-streams">New Connectors for Data Streams</a></li>
<li><a href="#new-web-dashboard--real-time-monitoring">New Web Dashboard &amp; Real-time Monitoring</a></li>
<li><a href="#off-heap-managed-memory">Off-heap Managed Memory</a></li>
<li><a href="#outer-joins">Outer Joins</a></li>
<li><a href="#gelly-major-improvements-and-scala-api">Gelly: Major Improvements and Scala API</a></li>
</ul>
</li>
<li><a href="#more-improvements-and-fixes">More Improvements and Fixes</a></li>
<li><a href="#notice">Notice</a></li>
<li><a href="#contributors">Contributors</a></li>
</ul>
</nav>
</aside>
<aside class="expand-toc">
<button class="toc" onclick="expandToc()">
<i class="fa fa-expand" aria-hidden="true"></i>
</button>
</aside>
</main>
</body>
</html>