blob: 094446b2ddb599991608579e00a89f504a24eb3a [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir=ZgotmplZ>
<head>
<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
<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/04/13/announcing-flink-0.9.0-milestone1-preview-release/">
<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.9.0-milestone-1 release. The release is a preview of the upcoming 0.9.0 release. It contains many new features which will be available in the upcoming 0.9 release. Interested users are encouraged to try it out and give feedback. As the version number indicates, this release is a preview release that contains known issues.
You can download the release here and check out the latest documentation here.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Announcing Flink 0.9.0-milestone1 preview release" />
<meta property="og:description" content="The Apache Flink community is pleased to announce the availability of the 0.9.0-milestone-1 release. The release is a preview of the upcoming 0.9.0 release. It contains many new features which will be available in the upcoming 0.9 release. Interested users are encouraged to try it out and give feedback. As the version number indicates, this release is a preview release that contains known issues.
You can download the release here and check out the latest documentation here." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-04-13T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-04-13T10:00:00+00:00" />
<title>Announcing Flink 0.9.0-milestone1 preview release | 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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
<meta name="generator" content="Hugo 0.124.1">
<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=ZgotmplZ>
<header>
<nav class="navbar navbar-expand-xl">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
<span>Apache Flink</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-bars navbar-toggler-icon"></i>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/security/">Security</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.19 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.8 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.0 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
</li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="/posts/">Flink Blog</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/downloads/">Downloads</a>
</li>
</ul>
<div class="book-search">
<div class="book-search-spinner hidden">
<i class="fa fa-refresh fa-spin"></i>
</div>
<form class="search-bar d-flex" onsubmit="return false;"su>
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
<i class="fa fa-search search"></i>
<i class="fa fa-circle-o-notch fa-spin spinner"></i>
</form>
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
</div>
</div>
</nav>
<div class="navbar-clearfix"></div>
</header>
<main class="flex">
<section class="container book-page">
<article class="markdown">
<h1>
<a href="/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/">Announcing Flink 0.9.0-milestone1 preview release</a>
</h1>
April 13, 2015 -
<p><p>The Apache Flink community is pleased to announce the availability of
the 0.9.0-milestone-1 release. The release is a preview of the
upcoming 0.9.0 release. It contains many new features which will be
available in the upcoming 0.9 release. Interested users are encouraged
to try it out and give feedback. As the version number indicates, this
release is a preview release that contains known issues.</p>
<p>You can download the release
<a href="http://flink.apache.org/downloads.html#preview">here</a> and check out the
latest documentation
<a href="//nightlies.apache.org/flink/flink-docs-master/">here</a>. Feedback
through the Flink <a href="http://flink.apache.org/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="table-api">
Table API
<a class="anchor" href="#table-api">#</a>
</h3>
<p>Flink’s new Table API offers a higher-level abstraction for
interacting with structured data sources. The Table API allows users
to execute logical, SQL-like queries on distributed data sets while
allowing them to freely mix declarative queries with regular Flink
operators. Here is an example that groups and joins two tables:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="k">val</span> <span class="n">clickCounts</span> <span class="k">=</span> <span class="n">clicks</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">groupBy</span><span class="o">(</span>&#39;user<span class="o">).</span><span class="n">select</span><span class="o">(</span>&#39;userId<span class="o">,</span> &#39;url<span class="o">.</span><span class="n">count</span> <span class="n">as</span> &#39;count<span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">activeUsers</span> <span class="k">=</span> <span class="n">users</span><span class="o">.</span><span class="n">join</span><span class="o">(</span><span class="n">clickCounts</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">where</span><span class="o">(</span>&#39;id <span class="o">===</span> &#39;userId <span class="o">&amp;&amp;</span> &#39;count <span class="o">&gt;</span> <span class="mi">10</span><span class="o">).</span><span class="n">select</span><span class="o">(</span>&#39;username<span class="o">,</span> &#39;count<span class="o">,</span> <span class="o">...)</span>
</span></span></code></pre></div><p>Tables consist of logical attributes that can be selected by name
rather than physical Java and Scala data types. This alleviates a lot
of boilerplate code for common ETL tasks and raises the abstraction
for Flink programs. Tables are available for both static and streaming
data sources (DataSet and DataStream APIs).</p>
<p>Check out the Table guide for Java and Scala
<a href="//nightlies.apache.org/flink/flink-docs-master/apis/batch/libs/table.html">here</a>.</p>
<h3 id="gelly-graph-processing-api">
Gelly Graph Processing API
<a class="anchor" href="#gelly-graph-processing-api">#</a>
</h3>
<p>Gelly is a Java Graph API for Flink. It contains a set of utilities
for graph analysis, support for iterative graph processing and a
library of graph algorithms. Gelly exposes a Graph data structure that
wraps DataSets for vertices and edges, as well as methods for creating
graphs from DataSets, graph transformations and utilities (e.g., in-
and out- degrees of vertices), neighborhood aggregations, iterative
vertex-centric graph processing, as well as a library of common graph
algorithms, including PageRank, SSSP, label propagation, and community
detection.</p>
<p>Gelly internally builds on top of Flink’s <a href="//nightlies.apache.org/flink/flink-docs-master/apis/batch/iterations.html">delta
iterations</a>. Iterative
graph algorithms are executed leveraging mutable state, achieving
similar performance with specialized graph processing systems.</p>
<p>Gelly will eventually subsume Spargel, Flink’s Pregel-like API. Check
out the Gelly guide
<a href="//nightlies.apache.org/flink/flink-docs-master/apis/batch/libs/gelly.html">here</a>.</p>
<h3 id="flink-machine-learning-library">
Flink Machine Learning Library
<a class="anchor" href="#flink-machine-learning-library">#</a>
</h3>
<p>This release includes the first version of Flink’s Machine Learning
library. The library’s pipeline approach, which has been strongly
inspired by scikit-learn’s abstraction of transformers and estimators,
makes it easy to quickly set up a data processing pipeline and to get
your job done.</p>
<p>Flink distinguishes between transformers and learners. Transformers
are components which transform your input data into a new format
allowing you to extract features, cleanse your data or to sample from
it. Learners on the other hand constitute the components which take
your input data and train a model on it. The model you obtain from the
learner can then be evaluated and used to make predictions on unseen
data.</p>
<p>Currently, the machine learning library contains transformers and
learners to do multiple tasks. The library supports multiple linear
regression using a stochastic gradient implementation to scale to
large data sizes. Furthermore, it includes an alternating least
squares (ALS) implementation to factorizes large matrices. The matrix
factorization can be used to do collaborative filtering. An
implementation of the communication efficient distributed dual
coordinate ascent (CoCoA) algorithm is the latest addition to the
library. The CoCoA algorithm can be used to train distributed
soft-margin SVMs.</p>
<h3 id="flink-on-yarn-leveraging-apache-tez">
Flink on YARN leveraging Apache Tez
<a class="anchor" href="#flink-on-yarn-leveraging-apache-tez">#</a>
</h3>
<p>We are introducing a new execution mode for Flink to be able to run
restricted Flink programs on top of <a href="http://tez.apache.org">Apache
Tez</a>. This mode retains Flink’s APIs,
optimizer, as well as Flink’s runtime operators, but instead of
wrapping those in Flink tasks that are executed by Flink TaskManagers,
it wraps them in Tez runtime tasks and builds a Tez DAG that
represents the program.</p>
<p>By using Flink on Tez, users have an additional choice for an
execution platform for Flink programs. While Flink’s distributed
runtime favors low latency, streaming shuffles, and iterative
algorithms, Tez focuses on scalability and elastic resource usage in
shared YARN clusters.</p>
<p>Get started with Flink on Tez
<a href="//nightlies.apache.org/flink/flink-docs-master/setup/flink_on_tez.html">here</a>.</p>
<h3 id="reworked-distributed-runtime-on-akka">
Reworked Distributed Runtime on Akka
<a class="anchor" href="#reworked-distributed-runtime-on-akka">#</a>
</h3>
<p>Flink’s RPC system has been replaced by the widely adopted
<a href="http://akka.io">Akka</a> framework. Akka’s concurrency model offers the
right abstraction to develop a fast as well as robust distributed
system. By using Akka’s own failure detection mechanism the stability
of Flink’s runtime is significantly improved, because the system can
now react in proper form to node outages. Furthermore, Akka improves
Flink’s scalability by introducing asynchronous messages to the
system. These asynchronous messages allow Flink to be run on many more
nodes than before.</p>
<h3 id="exactly-once-processing-on-kafka-streaming-sources">
Exactly-once processing on Kafka Streaming Sources
<a class="anchor" href="#exactly-once-processing-on-kafka-streaming-sources">#</a>
</h3>
<p>This release introduces stream processing with exacly-once delivery
guarantees for Flink streaming programs that analyze streaming sources
that are persisted by <a href="http://kafka.apache.org">Apache Kafka</a>. The
system is internally tracking the Kafka offsets to ensure that Flink
can pick up data from Kafka where it left off in case of an failure.</p>
<p>Read
<a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming_guide.html#apache-kafka">here</a>
on how to use the persistent Kafka source.</p>
<h3 id="improved-yarn-support">
Improved YARN support
<a class="anchor" href="#improved-yarn-support">#</a>
</h3>
<p>Flink’s YARN client contains several improvements, such as a detached
mode for starting a YARN session in the background, the ability to
submit a single Flink job to a YARN cluster without starting a
session, including a “fire and forget” mode. Flink is now also able to
reallocate failed YARN containers to maintain the size of the
requested cluster. This feature allows to implement fault-tolerant
setups on top of YARN. There is also an internal Java API to deploy
and control a running YARN cluster. This is being used by system
integrators to easily control Flink on YARN within their Hadoop 2
cluster.</p>
<p>See the YARN docs
<a href="//nightlies.apache.org/flink/flink-docs-master/setup/yarn_setup.html">here</a>.</p>
<h2 id="more-improvements-and-fixes">
More Improvements and Fixes
<a class="anchor" href="#more-improvements-and-fixes">#</a>
</h2>
<ul>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1605">FLINK-1605</a>:
Flink is not exposing its Guava and ASM dependencies to Maven
projects depending on Flink. We use the maven-shade-plugin to
relocate these dependencies into our own namespace. This allows
users to use any Guava or ASM version.</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1605">FLINK-1417</a>:
Automatic recognition and registration of Java Types at Kryo and the
internal serializers: Flink has its own type handling and
serialization framework falling back to Kryo for types that it cannot
handle. To get the best performance Flink is automatically registering
all types a user is using in their program with Kryo.Flink also
registers serializers for Protocol Buffers, Thrift, Avro and YodaTime
automatically. Users can also manually register serializers to Kryo
(<a href="https://issues.apache.org/jira/browse/FLINK-1399">https://issues.apache.org/jira/browse/FLINK-1399</a>)</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1296">FLINK-1296</a>: Add
support for sorting very large records</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1679">FLINK-1679</a>:
&ldquo;degreeOfParallelism&rdquo; methods renamed to &ldquo;parallelism&rdquo;</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1501">FLINK-1501</a>: Add
metrics library for monitoring TaskManagers</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1760">FLINK-1760</a>: Add
support for building Flink with Scala 2.11</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1648">FLINK-1648</a>: Add
a mode where the system automatically sets the parallelism to the
available task slots</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1622">FLINK-1622</a>: Add
groupCombine operator</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1589">FLINK-1589</a>: Add
option to pass Configuration to LocalExecutor</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1504">FLINK-1504</a>: Add
support for accessing secured HDFS clusters in standalone mode</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1478">FLINK-1478</a>: Add
strictly local input split assignment</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1512">FLINK-1512</a>: Add
CsvReader for reading into POJOs.</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1461">FLINK-1461</a>: Add
sortPartition operator</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1450">FLINK-1450</a>: Add
Fold operator to the Streaming api</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1389">FLINK-1389</a>:
Allow setting custom file extensions for files created by the
FileOutputFormat</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1236">FLINK-1236</a>: Add
support for localization of Hadoop Input Splits</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1179">FLINK-1179</a>: Add
button to JobManager web interface to request stack trace of a
TaskManager</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1105">FLINK-1105</a>: Add
support for locally sorted output</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1688">FLINK-1688</a>: Add
socket sink</p>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/FLINK-1436">FLINK-1436</a>:
Improve usability of command line interface</p>
</li>
</ul>
</p>
</article>
<div class="edit-this-page">
<p>
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
</p>
<p>
<a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-04-13-release-0.9.0-milestone1.md">
Edit This Page<i class="fa fa-edit fa-fw"></i>
</a>
</p>
</div>
</section>
<aside class="book-toc">
<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
<ul>
<li>
<ul>
<li><a href="#new-features">New Features</a>
<ul>
<li><a href="#table-api">Table API</a></li>
<li><a href="#gelly-graph-processing-api">Gelly Graph Processing API</a></li>
<li><a href="#flink-machine-learning-library">Flink Machine Learning Library</a></li>
<li><a href="#flink-on-yarn-leveraging-apache-tez">Flink on YARN leveraging Apache Tez</a></li>
<li><a href="#reworked-distributed-runtime-on-akka">Reworked Distributed Runtime on Akka</a></li>
<li><a href="#exactly-once-processing-on-kafka-streaming-sources">Exactly-once processing on Kafka Streaming Sources</a></li>
<li><a href="#improved-yarn-support">Improved YARN support</a></li>
</ul>
</li>
<li><a href="#more-improvements-and-fixes">More Improvements and Fixes</a></li>
</ul>
</li>
</ul>
</nav>
</aside>
<aside class="expand-toc hidden">
<a class="toc" onclick="expandToc()" href="javascript:void(0)">
<i class="fa fa-bars" aria-hidden="true"></i>
</a>
</aside>
</main>
<footer>
<div class="separator"></div>
<div class="panels">
<div class="wrapper">
<div class="panel">
<ul>
<li>
<a href="https://flink-packages.org/">flink-packages.org</a>
</li>
<li>
<a href="https://www.apache.org/">Apache Software Foundation</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
<li>
<a href="/zh/">
<i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
</a>
</li>
</ul>
</div>
<div class="panel">
<ul>
<li>
<a href="/what-is-flink/security">Security</a-->
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</div>
<div class="panel icons">
<div>
<a href="/posts">
<div class="icon flink-blog-icon"></div>
<span>Flink blog</span>
</a>
</div>
<div>
<a href="https://github.com/apache/flink">
<div class="icon flink-github-icon"></div>
<span>Github</span>
</a>
</div>
<div>
<a href="https://twitter.com/apacheflink">
<div class="icon flink-twitter-icon"></div>
<span>Twitter</span>
</a>
</div>
</div>
</div>
</div>
<hr/>
<div class="container disclaimer">
<p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>
</footer>
</body>
</html>