<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Apache Flink® — Stateful Computations over Data Streams on Apache Flink</title>
    <link>https://flink.apache.org/</link>
    <description>Recent content in Apache Flink® — Stateful Computations over Data Streams on Apache Flink</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 21 Mar 2024 18:00:00 +0000</lastBuildDate>
    <atom:link href="https://flink.apache.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Architecture</title>
      <link>https://flink.apache.org/what-is-flink/flink-architecture/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/flink-architecture/</guid>
      <description>What is Apache Flink? — Architecture # Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.&#xA;Here, we explain important aspects of Flink&amp;rsquo;s architecture.&#xA;Process Unbounded and Bounded Data # Any kind of data is produced as a stream of events.</description>
    </item>
    <item>
      <title>Flink $FlinkStableShortVersion (stable)</title>
      <link>https://flink.apache.org/documentation/flink-stable/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-stable/</guid>
      <description> Flink documentation (latest stable release) # You can find the Flink documentation for the latest stable release here. </description>
    </item>
    <item>
      <title>With Flink</title>
      <link>https://flink.apache.org/getting-started/with-flink/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/with-flink/</guid>
      <description> Getting Started with Flink # Read how you can get started with Flink here. </description>
    </item>
    <item>
      <title>Applications</title>
      <link>https://flink.apache.org/what-is-flink/flink-applications/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/flink-applications/</guid>
      <description>What is Apache Flink? — Applications # Apache Flink is a framework for stateful computations over unbounded and bounded data streams. Flink provides multiple APIs at different levels of abstraction and offers dedicated libraries for common use cases.&#xA;Here, we present Flink&amp;rsquo;s easy-to-use and expressive APIs and libraries.&#xA;Building Blocks for Streaming Applications # The types of applications that can be built with and executed by a stream processing framework are defined by how well the framework controls streams, state, and time.</description>
    </item>
    <item>
      <title>Flink Master (snapshot)</title>
      <link>https://flink.apache.org/documentation/flink-master/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-master/</guid>
      <description> Flink documentation (latest snapshot) # You can find the Flink documentation for the latest snapshot here. </description>
    </item>
    <item>
      <title>With Flink Kubernetes Operator</title>
      <link>https://flink.apache.org/getting-started/with-flink-kubernetes-operator/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/with-flink-kubernetes-operator/</guid>
      <description> Getting Started with Flink Kubernetes Operator # Read how you can get started with Flink Kubernetes Operator here. </description>
    </item>
    <item>
      <title>Kubernetes Operator $FlinkKubernetesOperatorStableShortVersion (latest)</title>
      <link>https://flink.apache.org/documentation/flink-kubernetes-operator-stable/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-kubernetes-operator-stable/</guid>
      <description> Flink Kubernetes Operator documentation (latest stable release) # You can find the Flink Kubernetes Operator documentation for the latest stable release here. </description>
    </item>
    <item>
      <title>Operations</title>
      <link>https://flink.apache.org/what-is-flink/flink-operations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/flink-operations/</guid>
      <description>What is Apache Flink? — Operations # Apache Flink is a framework for stateful computations over unbounded and bounded data streams. Since many streaming applications are designed to run continuously with minimal downtime, a stream processor must provide excellent failure recovery, as well as tooling to monitor and maintain applications while they are running.&#xA;Apache Flink puts a strong focus on the operational aspects of stream processing. Here, we explain Flink&amp;rsquo;s failure recovery mechanism and present its features to manage and supervise running applications.</description>
    </item>
    <item>
      <title>With Flink CDC</title>
      <link>https://flink.apache.org/getting-started/with-flink-cdc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/with-flink-cdc/</guid>
      <description> Getting Started with Flink CDC # Read how you can get started with Flink CDC here. </description>
    </item>
    <item>
      <title>Kubernetes Operator Main (snapshot)</title>
      <link>https://flink.apache.org/documentation/flink-kubernetes-operator-master/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-kubernetes-operator-master/</guid>
      <description> Flink Kubernetes Operator documentation (latest snapshot) # You can find the Flink Kubernetes Operator documentation for the latest snapshot here. </description>
    </item>
    <item>
      <title>Use Cases</title>
      <link>https://flink.apache.org/what-is-flink/use-cases/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/use-cases/</guid>
      <description>Use Cases # Apache Flink is an excellent choice to develop and run many different types of applications due to its extensive feature set. Flink&amp;rsquo;s features include support for stream and batch processing, sophisticated state management, event-time processing semantics, and exactly-once consistency guarantees for state. Moreover, Flink can be deployed on various resource providers such as YARN and Kubernetes, but also as a stand-alone cluster on bare-metal hardware. Configured for high availability, Flink does not have a single point of failure.</description>
    </item>
    <item>
      <title>With Flink ML</title>
      <link>https://flink.apache.org/getting-started/with-flink-ml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/with-flink-ml/</guid>
      <description> Getting Started with Flink ML # Read how you can get started with Flink ML here. </description>
    </item>
    <item>
      <title>CDC $FlinkCDCStableShortVersion (stable)</title>
      <link>https://flink.apache.org/documentation/flink-cdc-stable/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-cdc-stable/</guid>
      <description> Flink CDC documentation (latest stable release) # You can find the Flink CDC documentation for the latest stable release here. </description>
    </item>
    <item>
      <title>Downloads</title>
      <link>https://flink.apache.org/downloads/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/downloads/</guid>
      <description>Apache Flink® Downloads # Apache Flink # Apache Flink® 1.19.0 is the latest stable release.&#xA;Apache Flink 1.19.0 # Apache Flink 1.19.0 (asc, sha512)&#xA;Apache Flink 1.19.0 Source Release (asc, sha512)&#xA;Release Notes # Please have a look at the Release Notes for Apache Flink 1.19.0 if you plan to upgrade your Flink setup from a previous version.&#xA;Apache Flink 1.18.1 # Apache Flink 1.18.1 (asc, sha512)&#xA;Apache Flink 1.</description>
    </item>
    <item>
      <title>Powered By</title>
      <link>https://flink.apache.org/what-is-flink/powered-by/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/powered-by/</guid>
      <description>Powered By Flink # Apache Flink powers business-critical applications in many companies and enterprises around the globe. On this page, we present a few notable Flink users that run interesting use cases in production and link to resources that discuss their applications in more detail.&#xA;More Flink users are listed in the Powered by Flink directory in the project wiki. Please note that the list is not comprehensive. We only add users that explicitly ask to be listed.</description>
    </item>
    <item>
      <title>With Flink Stateful Functions</title>
      <link>https://flink.apache.org/getting-started/with-flink-stateful-functions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/with-flink-stateful-functions/</guid>
      <description> Getting Started with Flink Stateful Functions # Read how you can get started with Flink Stateful Functions here. </description>
    </item>
    <item>
      <title>CDC Master (snapshot)</title>
      <link>https://flink.apache.org/documentation/flink-cdc-master/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-cdc-master/</guid>
      <description> Flink CDC documentation (latest snapshot) # You can find the Flink CDC documentation for the latest snapshot here. </description>
    </item>
    <item>
      <title>Roadmap</title>
      <link>https://flink.apache.org/what-is-flink/roadmap/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/roadmap/</guid>
      <description>Roadmap # Preamble: This roadmap means to provide users and contributors with a high-level summary of ongoing efforts, grouped by the major threads to which the efforts belong. With so much that is happening in Flink, we hope that this helps with understanding the direction of the project. The roadmap contains both efforts in early stages as well as nearly completed efforts, so that users may get a better impression of the overall status and direction of those developments.</description>
    </item>
    <item>
      <title>Training Course</title>
      <link>https://flink.apache.org/getting-started/training-course/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/getting-started/training-course/</guid>
      <description> Training Course # Read all about the Flink Training Course here. </description>
    </item>
    <item>
      <title>Community &amp; Project Info</title>
      <link>https://flink.apache.org/what-is-flink/community/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/community/</guid>
      <description>Community &amp;amp; Project Info # How do I get help from Apache Flink? # There are many ways to get help from the Apache Flink community. The mailing lists are the primary place where all Flink committers are present. For user support and questions use the user mailing list. You can also join the community on Slack. Some committers are also monitoring Stack Overflow. Please remember to tag your questions with the apache-flink tag.</description>
    </item>
    <item>
      <title>ML $FlinkMLStableShortVersion (stable)</title>
      <link>https://flink.apache.org/documentation/flinkml-stable/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flinkml-stable/</guid>
      <description> Flink ML documentation (latest stable release) # You can find the Flink ML documentation for the latest stable release here. </description>
    </item>
    <item>
      <title>ML Master (snapshot)</title>
      <link>https://flink.apache.org/documentation/flinkml-master/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flinkml-master/</guid>
      <description> Flink ML documentation (latest snapshot) # You can find the Flink ML documentation for the latest snapshot here. </description>
    </item>
    <item>
      <title>Security</title>
      <link>https://flink.apache.org/what-is-flink/security/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/security/</guid>
      <description>Security # Security Updates # This section lists fixed vulnerabilities in Flink.&#xA;CVE ID Affected Flink versions Notes CVE-2020-1960 1.1.0 to 1.1.5, 1.2.0 to 1.2.1, 1.3.0 to 1.3.3, 1.4.0 to 1.4.2, 1.5.0 to 1.5.6, 1.6.0 to 1.6.4, 1.7.0 to 1.7.2, 1.8.0 to 1.8.3, 1.9.0 to 1.9.2, 1.10.0 Users are advised to upgrade to Flink 1.9.3 or 1.10.1 or later versions or remove the port parameter from the reporter configuration (see advisory for details).</description>
    </item>
    <item>
      <title>Special Thanks</title>
      <link>https://flink.apache.org/what-is-flink/special-thanks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink/special-thanks/</guid>
      <description>Special Thanks # General Apache sponsors # Without those sponsors, the ASF would simply not exist or sustain its activities:&#xA;https://www.apache.org/foundation/thanks.html&#xA;For those who want to know more about the Apache Sponsorship Program, please check:&#xA;https://www.apache.org/foundation/sponsorship.html&#xA;Thanks !&#xA;Organizations who helped our project … # We would also like to thank the companies and organizations who sponsored machines or services for helping the development of Apache Flink:&#xA;Alibaba donated 8 machines (32vCPU,64GB) to run Flink CI builds for Flink repository and Flink pull requests.</description>
    </item>
    <item>
      <title>Stateful Functions $StateFunStableShortVersion (stable)</title>
      <link>https://flink.apache.org/documentation/flink-stateful-functions-stable/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-stateful-functions-stable/</guid>
      <description> Flink documentation (latest stable release) # You can find the Flink documentation for the latest stable release here. </description>
    </item>
    <item>
      <title>Stateful Functions Master (snapshot)</title>
      <link>https://flink.apache.org/documentation/flink-stateful-functions-master/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/documentation/flink-stateful-functions-master/</guid>
      <description> Flink Stateful Functions documentation (latest snapshot) # You can find the Flink Stateful Functions documentation for the latest snapshot here. </description>
    </item>
    <item>
      <title>Overview</title>
      <link>https://flink.apache.org/how-to-contribute/overview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/overview/</guid>
      <description>How To Contribute # Apache Flink is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to Apache Flink. There are several ways to interact with the community and to contribute to Flink including asking questions, filing bug reports, proposing new features, joining discussions on the mailing lists, contributing code or documentation, improving the website, or testing release candidates.&#xA;What do you want to do?</description>
    </item>
    <item>
      <title>Contribute Code</title>
      <link>https://flink.apache.org/how-to-contribute/contribute-code/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/contribute-code/</guid>
      <description>Contributing Code # Apache Flink is maintained, improved, and extended by code contributions of volunteers. We welcome contributions to Flink, but due to the size of the project and to preserve the high quality of the code base, we follow a contribution process that is explained in this document.&#xA;Please feel free to ask questions at any time. Either send a mail to the Dev mailing list or comment on the Jira issue you are working on.</description>
    </item>
    <item>
      <title>Review Pull Requests</title>
      <link>https://flink.apache.org/how-to-contribute/reviewing-prs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/reviewing-prs/</guid>
      <description>How to Review a Pull Request # This guide is for all committers and contributors that want to help with reviewing code contributions. Thank you for your effort - good reviews are one of the most important and crucial parts of an open source project. This guide should help the community to make reviews such that:&#xA;Contributors have a good contribution experience. Our reviews are structured and check all important aspects of a contribution.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-preamble/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-preamble/</guid>
      <description>Apache Flink Code Style and Quality Guide # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # This is an attempt to capture the code and quality standard that we want to maintain.&#xA;A code contribution (or any piece of code) can be evaluated in various ways: One set of properties is whether the code is correct and efficient.</description>
    </item>
    <item>
      <title>Contribute Documentation</title>
      <link>https://flink.apache.org/how-to-contribute/contribute-documentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/contribute-documentation/</guid>
      <description>Contribute Documentation # Good documentation is crucial for any kind of software. This is especially true for sophisticated software systems such as distributed data processing engines like Apache Flink. The Apache Flink community aims to provide concise, precise, and complete documentation and welcomes any contribution to improve Apache Flink&amp;rsquo;s documentation.&#xA;Obtain the documentation sources # Apache Flink&amp;rsquo;s documentation is maintained in the same git repository as the code base. This is done to ensure that code and documentation can be easily kept in sync.</description>
    </item>
    <item>
      <title>Documentation Style Guide</title>
      <link>https://flink.apache.org/how-to-contribute/documentation-style-guide/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/documentation-style-guide/</guid>
      <description>Documentation Style Guide # This guide provides an overview of the essential style guidelines for writing and contributing to the Flink documentation. It&amp;rsquo;s meant to support your contribution journey in the greater community effort to improve and extend existing documentation — and help make it more accessible, consistent and inclusive.&#xA;Language # The Flink documentation is maintained in US English and Chinese — when extending or updating the documentation, both versions should be addressed in one pull request.</description>
    </item>
    <item>
      <title>Contribute to the Website</title>
      <link>https://flink.apache.org/how-to-contribute/improve-website/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/improve-website/</guid>
      <description>Improving the Website # The Apache Flink website presents Apache Flink and its community. It serves several purposes including:&#xA;Informing visitors about Apache Flink and its features. Encouraging visitors to download and use Flink. Encouraging visitors to engage with the community. We welcome any contribution to improve our website. This document contains all information that is necessary to improve Flink&amp;rsquo;s website.&#xA;Obtain the website sources # The website of Apache Flink is hosted in a dedicated git repository which is mirrored to GitHub at https://github.</description>
    </item>
    <item>
      <title>Getting Help</title>
      <link>https://flink.apache.org/how-to-contribute/getting-help/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/getting-help/</guid>
      <description>Getting Help # Having a Question? # The Apache Flink community answers many user questions every day. You can search for answers and advice in the archives or reach out to the community for help and guidance.&#xA;User Mailing List # Many Flink users, contributors, and committers are subscribed to Flink&amp;rsquo;s user mailing list. The user mailing list is a very good place to ask for help.&#xA;Before posting to the mailing list, you can search the mailing list archives for email threads that discuss issues related to yours on the following websites.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.8.0 Release Announcement</title>
      <link>https://flink.apache.org/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/</link>
      <pubDate>Thu, 21 Mar 2024 18:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.8.0!&#xA;The release includes many improvements to the operator core, the autoscaler, and introduces new features like TaskManager memory auto-tuning.&#xA;We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&amp;rsquo;re looking forward to your feedback!&#xA;Highlights # Flink Autotuning # We&amp;rsquo;re excited to announce our latest addition to the autoscaling module: Flink Autotuning.</description>
    </item>
    <item>
      <title>Announcing the Release of Apache Flink 1.19</title>
      <link>https://flink.apache.org/2024/03/18/announcing-the-release-of-apache-flink-1.19/</link>
      <pubDate>Mon, 18 Mar 2024 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2024/03/18/announcing-the-release-of-apache-flink-1.19/</guid>
      <description>The Apache Flink PMC is pleased to announce the release of Apache Flink 1.19.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 162 people contributed to this release completing 33 FLIPs and 600+ issues. Thank you!&#xA;Let&amp;rsquo;s dive into the highlights.&#xA;Flink SQL Improvements # Custom Parallelism for Table/SQL Sources # Now in Flink 1.19, you can set a custom parallelism for performance tuning via the scan.</description>
    </item>
    <item>
      <title>Apache Flink 1.18.1 Release Announcement</title>
      <link>https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/</link>
      <pubDate>Fri, 19 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.18 series.&#xA;This release includes 47 bug fixes, vulnerability fixes, and minor improvements for Flink 1.18. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.18.1.</description>
    </item>
    <item>
      <title>Apache Flink 1.16.3 Release Announcement</title>
      <link>https://flink.apache.org/2023/11/29/apache-flink-1.16.3-release-announcement/</link>
      <pubDate>Wed, 29 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/11/29/apache-flink-1.16.3-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.16 series.&#xA;This release includes 52 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.16.3.</description>
    </item>
    <item>
      <title>Apache Flink 1.17.2 Release Announcement</title>
      <link>https://flink.apache.org/2023/11/29/apache-flink-1.17.2-release-announcement/</link>
      <pubDate>Wed, 29 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/11/29/apache-flink-1.17.2-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.17 series.&#xA;This release includes 82 bug fixes, vulnerability fixes, and minor improvements for Flink 1.17. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.17.2.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.7.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/</link>
      <pubDate>Wed, 22 Nov 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.7.0! The release introduces a large number of improvements to the autoscaler, including a complete decoupling from Kubernetes to support more Flink environments in the future. It&amp;rsquo;s important to call out that the release explicitly drops support for Flink 1.13 and 1.14 as agreed by the community.&#xA;We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.6.1 Release Announcement</title>
      <link>https://flink.apache.org/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/</link>
      <pubDate>Fri, 27 Oct 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.6 series.&#xA;The release contains fixes for several critical issues, and some doc improvements for the autoscaler.&#xA;We highly recommend all users to upgrade to Flink Kubernetes Operator 1.6.1.&#xA;Release Notes # Bug # [FLINK-32890] Correct HA patch check for zookeeper metadata store [FLINK-33011] Never accidentally delete HA metadata for last state deployments Documentation improvement # [FLINK-32868][docs] Document the need to backport FLINK-30213 for using autoscaler with older version Flinks [docs][autoscaler] Autoscaler docs and default config improvement Release Resources # The source artifacts and helm chart are available on the Downloads page of the Flink website.</description>
    </item>
    <item>
      <title>Announcing the Release of Apache Flink 1.18</title>
      <link>https://flink.apache.org/2023/10/24/announcing-the-release-of-apache-flink-1.18/</link>
      <pubDate>Tue, 24 Oct 2023 22:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/10/24/announcing-the-release-of-apache-flink-1.18/</guid>
      <description>The Apache Flink PMC is pleased to announce the release of Apache Flink 1.18.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 174 people contributed to this release completing 18 FLIPS and 700+ issues. Thank you!&#xA;Let&amp;rsquo;s dive into the highlights.&#xA;Towards a Streaming Lakehouse # Flink SQL Improvements # Introduce Flink JDBC Driver For SQL Gateway # Flink 1.</description>
    </item>
    <item>
      <title>Stateful Functions 3.3.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/09/19/stateful-functions-3.3.0-release-announcement/</link>
      <pubDate>Tue, 19 Sep 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/09/19/stateful-functions-3.3.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Stateful Functions 3.3.0!&#xA;Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release upgrades the Flink runtime to 1.16.2.&#xA;The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK,, GoLang SDK and JavaScript SDK distributions are available on Maven, PyPI, Github, and npm respectively.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.6.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/</link>
      <pubDate>Tue, 15 Aug 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.6.0! The release features a large number of improvements all across the operator.&#xA;We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.&#xA;Highlights # Improved and simplified rollback mechanism # Previously the rollback mechanism had some serious limitations always requiring the presence of HA metadata.</description>
    </item>
    <item>
      <title>Announcing three new Apache Flink connectors, the new connector versioning strategy and externalization</title>
      <link>https://flink.apache.org/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/</link>
      <pubDate>Fri, 04 Aug 2023 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/</guid>
      <description>New connectors # We&amp;rsquo;re excited to announce that Apache Flink now supports three new connectors: Amazon DynamoDB, MongoDB and OpenSearch! The connectors are available for both the DataStream and Table/SQL APIs.&#xA;Amazon DynamoDB - This connector includes a sink that provides at-least-once delivery guarantees. MongoDB connector - This connector includes a source and sink that provide at-least-once guarantees. OpenSearch sink - This connector includes a sink that provides at-least-once guarantees.</description>
    </item>
    <item>
      <title>SIGMOD Systems Award for Apache Flink</title>
      <link>https://flink.apache.org/2023/07/03/sigmod-systems-award-for-apache-flink/</link>
      <pubDate>Mon, 03 Jul 2023 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/07/03/sigmod-systems-award-for-apache-flink/</guid>
      <description>Apache Flink received the 2023 SIGMOD Systems Award, which is awarded to an individual or set of individuals to recognize the development of a software or hardware system whose technical contributions have had significant impact on the theory or practice of large-scale data management systems:&#xA;The 2023 SIGMOD Systems Award goes to Apache Flink:&#xA;“Apache Flink greatly expanded the use of stream data-processing.”&#xA;Winning of SIGMOD Systems Award indicates the high recognition of Flink&amp;rsquo;s technological advancement and industry influence from academia.</description>
    </item>
    <item>
      <title>Apache Flink 1.16.2 Release Announcement</title>
      <link>https://flink.apache.org/2023/05/25/apache-flink-1.16.2-release-announcement/</link>
      <pubDate>Thu, 25 May 2023 13:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/25/apache-flink-1.16.2-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.16 series.&#xA;This release includes 104 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.16.2.</description>
    </item>
    <item>
      <title>Apache Flink 1.17.1 Release Announcement</title>
      <link>https://flink.apache.org/2023/05/25/apache-flink-1.17.1-release-announcement/</link>
      <pubDate>Thu, 25 May 2023 13:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/25/apache-flink-1.17.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.17 series.&#xA;This release includes 75 bug fixes, vulnerability fixes, and minor improvements for Flink 1.17. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.17.1.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.5.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/</link>
      <pubDate>Wed, 17 May 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.5.0! The release focuses on improvements to the job autoscaler that was introduced in the previous release and general operational hardening of the operator.&#xA;We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.</description>
    </item>
    <item>
      <title>Howto test a batch source with the new Source framework</title>
      <link>https://flink.apache.org/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/</link>
      <pubDate>Fri, 12 May 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/</guid>
      <description>Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. This article is the continuation of the howto create a batch source with the new Source framework article . Now it is time to test the created source ! As the previous article, this one was built while implementing the Flink batch source for Cassandra.&#xA;Unit testing the source # Testing the serializers # Example Cassandra SplitSerializer and SplitEnumeratorStateSerializer</description>
    </item>
    <item>
      <title>Howto migrate a real-life batch pipeline from the DataSet API to the DataStream API</title>
      <link>https://flink.apache.org/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/</link>
      <pubDate>Tue, 09 May 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/</guid>
      <description>Introduction # The Flink community has been deprecating the DataSet API since version 1.12 as part of the work on FLIP-131: Consolidate the user-facing Dataflow SDKs/APIs (and deprecate the DataSet API) . This blog article illustrates the migration of a real-life batch DataSet pipeline to a batch DataStream pipeline. All the code presented in this article is available in the tpcds-benchmark-flink repo. The use case shown here is extracted from a broader work comparing Flink performances of different APIs by implementing TPCDS queries using these APIs.</description>
    </item>
    <item>
      <title>Howto create a batch source with the new Source framework</title>
      <link>https://flink.apache.org/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/</link>
      <pubDate>Wed, 03 May 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/</guid>
      <description>Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. Some connectors have migrated to this new framework. This article is a how-to for creating a batch source using this new framework. It was built while implementing the Flink batch source for Cassandra. If you are interested in contributing or migrating connectors, this blog post is for you!&#xA;Implementing the source components # The source architecture is depicted in the diagrams below:</description>
    </item>
    <item>
      <title>Apache Flink ML 2.2.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/04/19/apache-flink-ml-2.2.0-release-announcement/</link>
      <pubDate>Wed, 19 Apr 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/04/19/apache-flink-ml-2.2.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink ML 2.2.0! This release focuses on enriching Flink ML&amp;rsquo;s feature engineering algorithms. The library now includes 33 feature engineering algorithms, making it a more comprehensive library for feature engineering tasks.&#xA;With the addition of these algorithms, we believe Flink ML library is ready for use in production jobs that require feature engineering capabilities, whose input can then be consumed by both offline and online machine learning tasks.</description>
    </item>
    <item>
      <title>Announcing the Release of Apache Flink 1.17</title>
      <link>https://flink.apache.org/2023/03/23/announcing-the-release-of-apache-flink-1.17/</link>
      <pubDate>Thu, 23 Mar 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/03/23/announcing-the-release-of-apache-flink-1.17/</guid>
      <description>The Apache Flink PMC is pleased to announce Apache Flink release 1.17.0. Apache Flink is the leading stream processing standard, and the concept of unified stream and batch data processing is being successfully adopted in more and more companies. Thanks to our excellent community and contributors, Apache Flink continues to grow as a technology and remains one of the most active projects in the Apache Software Foundation. Flink 1.17 had 172 contributors enthusiastically participating and saw the completion of 7 FLIPs and 600+ issues, bringing many exciting new features and improvements to the community.</description>
    </item>
    <item>
      <title>Apache Flink 1.15.4 Release Announcement</title>
      <link>https://flink.apache.org/2023/03/15/apache-flink-1.15.4-release-announcement/</link>
      <pubDate>Wed, 15 Mar 2023 16:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/03/15/apache-flink-1.15.4-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the fourth bug fix release of the Flink 1.15 series.&#xA;This release includes 53 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.15.4.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.4.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/</link>
      <pubDate>Mon, 27 Feb 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/</guid>
      <description>We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.&#xA;Flink Streaming Job Autoscaler # A highly requested feature for Flink applications is the ability to scale the pipeline based on incoming data load and the utilization of the dataflow. While Flink has already provided some of the required building blocks, this feature has not yet been realized in the open source ecosystem.</description>
    </item>
    <item>
      <title>Apache Flink 1.16.1 Release Announcement</title>
      <link>https://flink.apache.org/2023/01/30/apache-flink-1.16.1-release-announcement/</link>
      <pubDate>Mon, 30 Jan 2023 16:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/01/30/apache-flink-1.16.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.16 series.&#xA;This release includes 84 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.16.1.</description>
    </item>
    <item>
      <title>Delegation Token Framework: Obtain, Distribute and Use Temporary Credentials Automatically</title>
      <link>https://flink.apache.org/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/</link>
      <pubDate>Fri, 20 Jan 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/</guid>
      <description>The Apache Flink Community is pleased to announce that the upcoming minor version of Flink (1.17) includes the Delegation Token Framework proposed in FLIP-272. This enables Flink to authenticate to external services at a central location (JobManager) and distribute authentication tokens to the TaskManagers.&#xA;Introduction # Authentication in distributed systems is not an easy task. Previously all worker nodes (TaskManagers) reading from or writing to an external system needed to authenticate on their own.</description>
    </item>
    <item>
      <title>Apache Flink Table Store 0.3.0 Release Announcement</title>
      <link>https://flink.apache.org/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/</link>
      <pubDate>Fri, 13 Jan 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).&#xA;We highly recommend all users upgrade to Flink Table Store 0.3.0. 0.3.0 completed 150+ issues, which were completed by nearly 30 contributors.&#xA;Please check out the full documentation for detailed information and user guides.&#xA;Flink Table Store 0.3 completes many exciting features, enhances its ability as a data lake storage and greatly improves the availability of its stream pipeline.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.3.1 Release Announcement</title>
      <link>https://flink.apache.org/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/</link>
      <pubDate>Tue, 10 Jan 2023 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.3 series.&#xA;The release contains fixes for several critical issues and some major stability improvements for the application upgrade mechanism.&#xA;We highly recommend all users to upgrade to Flink Kubernetes Operator 1.3.1.&#xA;Release Notes # Bug # [FLINK-30329] - flink-kubernetes-operator helm chart does not work with dynamic config because of use of volumeMount subPath [FLINK-30361] - Cluster deleted and created back while updating replicas [FLINK-30406] - Jobmanager Deployment error without HA metadata should not lead to unrecoverable error [FLINK-30437] - State incompatibility issue might cause state loss [FLINK-30527] - Last-state suspend followed by flinkVersion change may lead to state loss [FLINK-30528] - Job may be stuck in upgrade loop when last-state fallback is disabled and deployment is missing Improvement # [FLINK-28875] - Add FlinkSessionJobControllerTest [FLINK-30408] - Add unit test for HA metadata check logic Release Resources # The source artifacts and helm chart are available on the Downloads page of the Flink website.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.3.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/</link>
      <pubDate>Wed, 14 Dec 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/</guid>
      <description>The Flink community is happy to announce that the latest Flink Kubernetes Operator version went live today. Beyond the regular operator improvements and fixes the 1.3.0 version also integrates better with some popular infrastructure management tools like OLM and Argo CD. These improvements are clear indicators that the original intentions of the Flink community, namely to provide the de facto standard solution for managing Flink applications on Kubernetes is making steady progress to becoming a reality.</description>
    </item>
    <item>
      <title>Optimising the throughput of async sinks using a custom RateLimitingStrategy</title>
      <link>https://flink.apache.org/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/</link>
      <pubDate>Fri, 25 Nov 2022 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/</guid>
      <description>Introduction # When designing a Flink data processing job, one of the key concerns is maximising job throughput. Sink throughput is a crucial factor because it can determine the entire job’s throughput. We generally want the highest possible write rate in the sink without overloading the destination. However, since the factors impacting a destination’s performance are variable over the job’s lifetime, the sink needs to adjust its write rate dynamically.</description>
    </item>
    <item>
      <title>Apache Flink 1.15.3 Release Announcement</title>
      <link>https://flink.apache.org/2022/11/10/apache-flink-1.15.3-release-announcement/</link>
      <pubDate>Thu, 10 Nov 2022 22:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/11/10/apache-flink-1.15.3-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.15 series.&#xA;This release includes 59 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.15.3.</description>
    </item>
    <item>
      <title>Announcing the Release of Apache Flink 1.16</title>
      <link>https://flink.apache.org/2022/10/28/announcing-the-release-of-apache-flink-1.16/</link>
      <pubDate>Fri, 28 Oct 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/10/28/announcing-the-release-of-apache-flink-1.16/</guid>
      <description>Apache Flink continues to grow at a rapid pace and is one of the most active communities in Apache. Flink 1.16 had over 240 contributors enthusiastically participating, with 19 FLIPs and 1100+ issues completed, bringing a lot of exciting features to the community.&#xA;Flink has become the leading role and factual standard of stream processing, and the concept of the unification of stream and batch data processing is gradually gaining recognition and is being successfully implemented in more and more companies.</description>
    </item>
    <item>
      <title>Apache Flink Table Store 0.2.1 Release Announcement</title>
      <link>https://flink.apache.org/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/</link>
      <pubDate>Thu, 13 Oct 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink Table Store 0.2 series.&#xA;This release includes 13 bug fixes, vulnerability fixes, and minor improvements for Flink Table Store 0.2. Below you will find a list of all bugfixes and improvements. For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink Table Store 0.2.1.&#xA;Release Artifacts # Binaries # You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.2.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/</link>
      <pubDate>Fri, 07 Oct 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/</guid>
      <description>We are proud to announce the latest stable release of the operator. The 1.2.0 release adds support for the Standalone Kubernetes deployment mode and includes several improvements to the core logic.&#xA;Release Highlights # Standalone deployment mode support Improved upgrade flow Readiness and liveness probes Flexible job jar handling Standalone deployment mode support # Until now the operator relied exclusively on Flink’s built-in Native Kubernetes integration to deploy and manage Flink clusters.</description>
    </item>
    <item>
      <title>Apache Flink 1.14.6 Release Announcement</title>
      <link>https://flink.apache.org/2022/09/28/apache-flink-1.14.6-release-announcement/</link>
      <pubDate>Wed, 28 Sep 2022 02:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/09/28/apache-flink-1.14.6-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.&#xA;This release includes 34 bug fixes, vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.14.6.&#xA;Release Artifacts # Maven Dependencies # &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.</description>
    </item>
    <item>
      <title>Regarding Akka&#39;s licensing change</title>
      <link>https://flink.apache.org/2022/09/08/regarding-akkas-licensing-change/</link>
      <pubDate>Thu, 08 Sep 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/09/08/regarding-akkas-licensing-change/</guid>
      <description>On September 7th Lightbend announced a license change for the Akka project, the TL;DR being that you will need a commercial license to use future versions of Akka (2.7+) in production if you exceed a certain revenue threshold.&#xA;Within a few hours of the announcement several people reached out to the Flink project, worrying about the impact this has on Flink, as we use Akka internally.&#xA;The purpose of this blogpost is to clarify our position on the matter.</description>
    </item>
    <item>
      <title>Apache Flink Table Store 0.2.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/</link>
      <pubDate>Mon, 29 Aug 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.2.0).&#xA;Please check out the full documentation for detailed information and user guides.&#xA;What is Flink Table Store # Flink Table Store is a data lake storage for streaming updates/deletes changelog ingestion and high-performance queries in real time.&#xA;As a new type of updatable data lake, Flink Table Store has the following features:</description>
    </item>
    <item>
      <title>Apache Flink 1.15.2 Release Announcement</title>
      <link>https://flink.apache.org/2022/08/24/apache-flink-1.15.2-release-announcement/</link>
      <pubDate>Wed, 24 Aug 2022 22:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/08/24/apache-flink-1.15.2-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.15 series.&#xA;This release includes 30 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.15.2.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/</link>
      <pubDate>Mon, 25 Jul 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/</guid>
      <description>The community has continued to work hard on improving the Flink Kubernetes Operator capabilities since our first production ready release we launched about two months ago.&#xA;With the release of Flink Kubernetes Operator 1.1.0 we are proud to announce a number of exciting new features improving the overall experience of managing Flink resources and the operator itself in production environments.&#xA;Release Highlights # A non-exhaustive list of some of the more exciting features added in the release:</description>
    </item>
    <item>
      <title>Apache Flink ML 2.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/07/12/apache-flink-ml-2.1.0-release-announcement/</link>
      <pubDate>Tue, 12 Jul 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/07/12/apache-flink-ml-2.1.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink ML 2.1.0! This release focuses on improving Flink ML&amp;rsquo;s infrastructure, such as Python SDK, memory management, and benchmark framework, to facilitate the development of performant, memory-safe, and easy-to-use algorithm libraries. We validated the enhanced infrastructure by implementing, benchmarking, and optimizing 10 new algorithms in Flink ML, and confirmed that Flink ML can meet or exceed the performance of selected algorithms from alternative popular ML libraries.</description>
    </item>
    <item>
      <title>FLIP-147: Support Checkpoints After Tasks Finished - Part One</title>
      <link>https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/</link>
      <pubDate>Mon, 11 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/</guid>
      <description>Motivation # Flink is a distributed processing engine for both unbounded and bounded streams of data. In recent versions, Flink has unified the DataStream API and the Table / SQL API to support both streaming and batch cases. Since most users require both types of data processing pipelines, the unification helps reduce the complexity of developing, operating, and maintaining consistency between streaming and batch backfilling jobs, like the case for Alibaba.</description>
    </item>
    <item>
      <title>FLIP-147: Support Checkpoints After Tasks Finished - Part Two</title>
      <link>https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/</link>
      <pubDate>Mon, 11 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/</guid>
      <description>In the first part of this blog, we have briefly introduced the work to support checkpoints after tasks get finished and revised the process of finishing. In this part we will present more details on the implementation, including how we support checkpoints with finished tasks and the revised protocol of the finish process.&#xA;Implementation of support Checkpointing with Finished Tasks # As described in part one, to support checkpoints after some tasks are finished, the core idea is to mark the finished operators in checkpoints and skip executing these operators after recovery.</description>
    </item>
    <item>
      <title>Apache Flink 1.15.1 Release Announcement</title>
      <link>https://flink.apache.org/2022/07/06/apache-flink-1.15.1-release-announcement/</link>
      <pubDate>Wed, 06 Jul 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/07/06/apache-flink-1.15.1-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.15 series.&#xA;This release includes 62 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users upgrade to Flink 1.15.1.</description>
    </item>
    <item>
      <title>Apache Flink 1.14.5 Release Announcement</title>
      <link>https://flink.apache.org/2022/06/22/apache-flink-1.14.5-release-announcement/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/06/22/apache-flink-1.14.5-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.&#xA;This release includes 67 bugs, vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.14.5.&#xA;Release Artifacts # Maven Dependencies # &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.</description>
    </item>
    <item>
      <title>Adaptive Batch Scheduler: Automatically Decide Parallelism of Flink Batch Jobs</title>
      <link>https://flink.apache.org/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/</link>
      <pubDate>Fri, 17 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/</guid>
      <description>Introduction # Deciding proper parallelisms of operators is not an easy work for many users. For batch jobs, a small parallelism may result in long execution time and big failover regression. While an unnecessary large parallelism may result in resource waste and more overhead cost in task deployment and network shuffling.&#xA;To decide a proper parallelism, one needs to know how much data each operator needs to process. However, It can be hard to predict data volume to be processed by a job because it can be different everyday.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 1.0.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/</link>
      <pubDate>Sun, 05 Jun 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/</guid>
      <description>In the last two months since our initial preview release the community has been hard at work to stabilize and improve the core Flink Kubernetes Operator logic. We are now proud to announce the first production ready release of the operator project.&#xA;Release Highlights # The Flink Kubernetes Operator 1.0.0 version brings numerous improvements and new features to almost every aspect of the operator.&#xA;New v1beta1 API version &amp;amp; compatibility guarantees Session Job Management support Support for Flink 1.</description>
    </item>
    <item>
      <title>Improving speed and stability of checkpointing with generic log-based incremental checkpoints</title>
      <link>https://flink.apache.org/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/</link>
      <pubDate>Mon, 30 May 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/</guid>
      <description>Introduction # One of the most important characteristics of stream processing systems is end-to-end latency, i.e. the time it takes for the results of processing an input record to reach the outputs. In the case of Flink, end-to-end latency mostly depends on the checkpointing mechanism, because processing results should only become visible after the state of the stream is persisted to non-volatile storage (this is assuming exactly-once mode; in other modes, results can be published immediately).</description>
    </item>
    <item>
      <title>Getting into Low-Latency Gears with Apache Flink - Part Two</title>
      <link>https://flink.apache.org/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/</link>
      <pubDate>Mon, 23 May 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/</guid>
      <description>This series of blog posts present a collection of low-latency techniques in Flink. In part one, we discussed the types of latency in Flink and the way we measure end-to-end latency and presented a few techniques that optimize latency directly. In this post, we will continue with a few more direct latency optimization techniques. Just like in part one, for each optimization technique, we will clarify what it is, when to use it, and what to keep in mind when using it.</description>
    </item>
    <item>
      <title>Getting into Low-Latency Gears with Apache Flink - Part One</title>
      <link>https://flink.apache.org/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/</link>
      <pubDate>Wed, 18 May 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/</guid>
      <description>Apache Flink is a stream processing framework well known for its low latency processing capabilities. It is generic and suitable for a wide range of use cases. As a Flink application developer or a cluster administrator, you need to find the right gear that is best for your application. In other words, you don&amp;rsquo;t want to be driving a luxury sports car while only using the first gear.&#xA;In this multi-part series, we will present a collection of low-latency techniques in Flink.</description>
    </item>
    <item>
      <title>Apache Flink Table Store 0.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/</link>
      <pubDate>Wed, 11 May 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce the preview release of the Apache Flink Table Store (0.1.0).&#xA;Please check out the full documentation for detailed information and user guides.&#xA;Note: Flink Table Store is still in beta status and undergoing rapid development. We do not recommend that you use it directly in a production environment.&#xA;What is Flink Table Store # In the past years, thanks to our numerous contributors and users, Apache Flink has established itself as one of the best distributed computing engines, especially for stateful stream processing at large scale.</description>
    </item>
    <item>
      <title>Exploring the thread mode in PyFlink</title>
      <link>https://flink.apache.org/2022/05/06/exploring-the-thread-mode-in-pyflink/</link>
      <pubDate>Fri, 06 May 2022 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/06/exploring-the-thread-mode-in-pyflink/</guid>
      <description>PyFlink was introduced in Flink 1.9 which purpose is to bring the power of Flink to Python users and allow Python users to develop Flink jobs in Python language. The functionality becomes more and more mature through the development in the past releases.&#xA;Before Flink 1.15, Python user-defined functions will be executed in separate Python processes (based on the Apache Beam Portability Framework). It will bring additional serialization/deserialization overhead and also communication overhead.</description>
    </item>
    <item>
      <title>Improvements to Flink operations: Snapshots Ownership and Savepoint Formats</title>
      <link>https://flink.apache.org/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/</link>
      <pubDate>Fri, 06 May 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/</guid>
      <description>Flink has become a well established data streaming engine and a mature project requires some shifting of priorities from thinking purely about new features towards improving stability and operational simplicity. In the last couple of releases, the Flink community has tried to address some known friction points, which includes improvements to the snapshotting process. Snapshotting takes a global, consistent image of the state of a Flink job and is integral to fault-tolerance and exacty-once processing.</description>
    </item>
    <item>
      <title>Announcing the Release of Apache Flink 1.15</title>
      <link>https://flink.apache.org/2022/05/05/announcing-the-release-of-apache-flink-1.15/</link>
      <pubDate>Thu, 05 May 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/05/05/announcing-the-release-of-apache-flink-1.15/</guid>
      <description>Thanks to our well-organized and open community, Apache Flink continues to grow as a technology and remain one of the most active projects in the Apache community. With the release of Flink 1.15, we are proud to announce a number of exciting changes.&#xA;One of the main concepts that makes Apache Flink stand out is the unification of batch (aka bounded) and stream (aka unbounded) data processing, which helps reduce the complexity of development.</description>
    </item>
    <item>
      <title>Apache Flink Kubernetes Operator 0.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/</link>
      <pubDate>Sun, 03 Apr 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce the preview release of the Apache Flink Kubernetes Operator (0.1.0)&#xA;The Flink Kubernetes Operator allows users to easily manage their Flink deployment lifecycle using native Kubernetes tooling.&#xA;The operator takes care of submitting, savepointing, upgrading and generally managing Flink jobs using the built-in Flink Kubernetes integration. This way users do not have to use the Flink Clients (e.g. CLI) or interact with the Flink jobs manually, they only have to declare the desired deployment specification and the operator will take care of the rest.</description>
    </item>
    <item>
      <title>The Generic Asynchronous Base Sink</title>
      <link>https://flink.apache.org/2022/03/16/the-generic-asynchronous-base-sink/</link>
      <pubDate>Wed, 16 Mar 2022 16:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/03/16/the-generic-asynchronous-base-sink/</guid>
      <description>Flink sinks share a lot of similar behavior. Most sinks batch records according to user-defined buffering hints, sign requests, write them to the destination, retry unsuccessful or throttled requests, and participate in checkpointing.&#xA;This is why for Flink 1.15 we have decided to create the AsyncSinkBase (FLIP-171), an abstract sink with a number of common functionalities extracted.&#xA;This is a base implementation for asynchronous sinks, which you should use whenever you need to implement a sink that doesn&amp;rsquo;t offer transactional capabilities.</description>
    </item>
    <item>
      <title>Apache Flink 1.14.4 Release Announcement</title>
      <link>https://flink.apache.org/2022/03/11/apache-flink-1.14.4-release-announcement/</link>
      <pubDate>Fri, 11 Mar 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/03/11/apache-flink-1.14.4-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.&#xA;This release includes 51 bug and vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.14.4.&#xA;Release Artifacts # Maven Dependencies # &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.</description>
    </item>
    <item>
      <title>Scala Free in One Fifteen</title>
      <link>https://flink.apache.org/2022/02/22/scala-free-in-one-fifteen/</link>
      <pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/02/22/scala-free-in-one-fifteen/</guid>
      <description>Flink 1.15 is right around the corner, and among the many improvements is a Scala free classpath. Users can now leverage the Java API from any Scala version, including Scala 3!&#xA;Fig.1 Flink 1.15 Scala 3 Example This blog will discuss what has historically made supporting multiple Scala versions so complex, how we achieved this milestone, and the future of Scala in Apache Flink.&#xA;TLDR: All Scala dependencies are now isolated to the flink-scala jar.</description>
    </item>
    <item>
      <title>Apache Flink 1.13.6 Release Announcement</title>
      <link>https://flink.apache.org/2022/02/18/apache-flink-1.13.6-release-announcement/</link>
      <pubDate>Fri, 18 Feb 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/02/18/apache-flink-1.13.6-release-announcement/</guid>
      <description>The Apache Flink Community is pleased to announce another bug fix release for Flink 1.13.&#xA;This release includes 99 bug and vulnerability fixes and minor improvements for Flink 1.13 including another upgrade of Apache Log4j (to 2.17.1). Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.</description>
    </item>
    <item>
      <title>Stateful Functions 3.2.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/01/31/stateful-functions-3.2.0-release-announcement/</link>
      <pubDate>Mon, 31 Jan 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/31/stateful-functions-3.2.0-release-announcement/</guid>
      <description>Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release brings various improvements to the StateFun runtime, a leaner way to specify StateFun module components, and a brand new JavaScript SDK!&#xA;The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK,, GoLang SDK and JavaScript SDK distributions are available on Maven, PyPI, Github, and npm respectively.</description>
    </item>
    <item>
      <title>Pravega Flink Connector 101</title>
      <link>https://flink.apache.org/2022/01/20/pravega-flink-connector-101/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/20/pravega-flink-connector-101/</guid>
      <description>Pravega, which is now a CNCF sandbox project, is a cloud-native storage system based on abstractions for both batch and streaming data consumption. Pravega streams (a new storage abstraction) are durable, consistent, and elastic, while natively supporting long-term data retention. In comparison, Apache Flink is a popular real-time computing engine that provides unified batch and stream processing. Flink provides high-throughput, low-latency computation, as well as support for complex event processing and state management.</description>
    </item>
    <item>
      <title>Apache Flink 1.14.3 Release Announcement</title>
      <link>https://flink.apache.org/2022/01/17/apache-flink-1.14.3-release-announcement/</link>
      <pubDate>Mon, 17 Jan 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/17/apache-flink-1.14.3-release-announcement/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.14 series. The first bugfix release was 1.14.2, being an emergency release due to an Apache Log4j Zero Day (CVE-2021-44228). Flink 1.14.1 was abandoned. That means that this Flink release is the first bugfix release of the Flink 1.14 series which contains bugfixes not related to the mentioned CVE.&#xA;This release includes 164 fixes and minor improvements for Flink 1.</description>
    </item>
    <item>
      <title>Apache Flink ML 2.0.0 Release Announcement</title>
      <link>https://flink.apache.org/2022/01/07/apache-flink-ml-2.0.0-release-announcement/</link>
      <pubDate>Fri, 07 Jan 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/07/apache-flink-ml-2.0.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink ML 2.0.0! Flink ML is a library that provides APIs and infrastructure for building stream-batch unified machine learning algorithms, that can be easy-to-use and performant with (near-) real-time latency.&#xA;This release involves a major refactor of the earlier Flink ML library and introduces major features that extend the Flink ML API and the iteration runtime, such as supporting stages with multi-input multi-output, graph-based stage composition, and a new stream-batch unified iteration library.</description>
    </item>
    <item>
      <title>How We Improved Scheduler Performance for Large-scale Jobs - Part One</title>
      <link>https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/</link>
      <pubDate>Tue, 04 Jan 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/</guid>
      <description>Introduction # When scheduling large-scale jobs in Flink 1.12, a lot of time is required to initialize jobs and deploy tasks. The scheduler also requires a large amount of heap memory in order to store the execution topology and host temporary deployment descriptors. For example, for a job with a topology that contains two vertices connected with an all-to-all edge and a parallelism of 10k (which means there are 10k source tasks and 10k sink tasks and every source task is connected to all sink tasks), Flink’s JobManager would require 30 GiB of heap memory and more than 4 minutes to deploy all of the tasks.</description>
    </item>
    <item>
      <title>How We Improved Scheduler Performance for Large-scale Jobs - Part Two</title>
      <link>https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/</link>
      <pubDate>Tue, 04 Jan 2022 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/</guid>
      <description>Part one of this blog post briefly introduced the optimizations we’ve made to improve the performance of the scheduler; compared to Flink 1.12, the time cost and memory usage of scheduling large-scale jobs in Flink 1.14 is significantly reduced. In part two, we will elaborate on the details of these optimizations.&#xA;Reducing complexity with groups # A distribution pattern describes how consumer tasks are connected to producer tasks. Currently, there are two distribution patterns in Flink: pointwise and all-to-all.</description>
    </item>
    <item>
      <title>Apache Flink StateFun Log4j emergency release</title>
      <link>https://flink.apache.org/2021/12/22/apache-flink-statefun-log4j-emergency-release/</link>
      <pubDate>Wed, 22 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/12/22/apache-flink-statefun-log4j-emergency-release/</guid>
      <description>The Apache Flink community has released an emergency bugfix version of Apache Flink Stateful Function 3.1.1.&#xA;This release include a version upgrade of Apache Flink to 1.13.5, for log4j to address CVE-2021-44228 and CVE-2021-45046.&#xA;We highly recommend all users to upgrade to the latest patch release.&#xA;You can find the source and binaries on the updated Downloads page, and Docker images in the apache/flink-statefun dockerhub repository.</description>
    </item>
    <item>
      <title>Apache Flink Log4j emergency releases</title>
      <link>https://flink.apache.org/2021/12/16/apache-flink-log4j-emergency-releases/</link>
      <pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/12/16/apache-flink-log4j-emergency-releases/</guid>
      <description>The Apache Flink community has released emergency bugfix versions of Apache Flink for the 1.11, 1.12, 1.13 and 1.14 series.&#xA;These releases only include a version upgrade for Log4j to address CVE-2021-44228 and CVE-2021-45046.&#xA;We highly recommend all users to upgrade to the respective patch release.&#xA;You can find the source and binaries on the updated Downloads page, and Docker images in the apache/flink dockerhub repository.&#xA;We are publishing this announcement earlier than usual to give users access to the updated source/binary releases as soon as possible.</description>
    </item>
    <item>
      <title>Advise on Apache Log4j Zero Day (CVE-2021-44228)</title>
      <link>https://flink.apache.org/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/</link>
      <pubDate>Fri, 10 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/</guid>
      <description>Please see [this](/news/2021/12/16/log4j-patch-releases) for our updated recommendation regarding this CVE. Yesterday, a new Zero Day for Apache Log4j was reported. It is by now tracked under CVE-2021-44228.&#xA;Apache Flink is bundling a version of Log4j that is affected by this vulnerability. We recommend users to follow the advisory of the Apache Log4j Community. For Apache Flink this currently translates to setting the following property in your flink-conf.yaml:&#xA;env.java.opts: -Dlog4j2.formatMsgNoLookups=true If you are already setting env.</description>
    </item>
    <item>
      <title>Flink Backward - The Apache Flink Retrospective</title>
      <link>https://flink.apache.org/2021/11/03/flink-backward-the-apache-flink-retrospective/</link>
      <pubDate>Wed, 03 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/11/03/flink-backward-the-apache-flink-retrospective/</guid>
      <description>It has now been a month since the community released Apache Flink 1.14 into the wild. We had a comprehensive look at the enhancements, additions, and fixups in the release announcement blog post, and now we will look at the development cycle from a different angle. Based on feedback collected from contributors involved in this release, we will explore the experiences and processes behind it all.&#xA;A retrospective on the release cycle # From the team, we collected emotions that have been attributed to points in time of the 1.</description>
    </item>
    <item>
      <title>Sort-Based Blocking Shuffle Implementation in Flink - Part One</title>
      <link>https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/</link>
      <pubDate>Tue, 26 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/</guid>
      <description>Part one of this blog post will explain the motivation behind introducing sort-based blocking shuffle, present benchmark results, and provide guidelines on how to use this new feature.&#xA;How data gets passed around between operators # Data shuffling is an important stage in batch processing applications and describes how data is sent from one operator to the next. In this phase, output data of the upstream operator will spill over to persistent storages like disk, then the downstream operator will read the corresponding data and process it.</description>
    </item>
    <item>
      <title>Sort-Based Blocking Shuffle Implementation in Flink - Part Two</title>
      <link>https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/</link>
      <pubDate>Tue, 26 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/</guid>
      <description>Part one of this blog post explained the motivation behind introducing sort-based blocking shuffle, presented benchmark results, and provided guidelines on how to use this new feature.&#xA;Like sort-merge shuffle implemented by other distributed data processing frameworks, the whole sort-based shuffle process in Flink consists of several important stages, including collecting data in memory, sorting the collected data in memory, spilling the sorted data to files, and reading the shuffle data from these spilled files.</description>
    </item>
    <item>
      <title>Apache Flink 1.13.3 Released</title>
      <link>https://flink.apache.org/2021/10/19/apache-flink-1.13.3-released/</link>
      <pubDate>Tue, 19 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/10/19/apache-flink-1.13.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.13 series.&#xA;This release includes 136 fixes and minor improvements for Flink 1.13.2. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.13.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.14.0 Release Announcement</title>
      <link>https://flink.apache.org/2021/09/29/apache-flink-1.14.0-release-announcement/</link>
      <pubDate>Wed, 29 Sep 2021 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/09/29/apache-flink-1.14.0-release-announcement/</guid>
      <description>The Apache Software Foundation recently released its annual report and Apache Flink once again made it on the list of the top 5 most active projects! This remarkable activity also shows in the new 1.14.0 release. Once again, more than 200 contributors worked on over 1,000 issues. We are proud of how this community is consistently moving the project forward.&#xA;This release brings many new features and improvements in areas such as the SQL API, more connector support, checkpointing, and PyFlink.</description>
    </item>
    <item>
      <title>Implementing a Custom Source Connector for Table API and SQL - Part One </title>
      <link>https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/</link>
      <pubDate>Tue, 07 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/</guid>
      <description>Part one of this tutorial will teach you how to build and run a custom source connector to be used with Table API and SQL, two high-level abstractions in Flink. The tutorial comes with a bundled docker-compose setup that lets you easily run the connector. You can then try it out with Flink’s SQL client.&#xA;Introduction # Apache Flink is a data processing engine that aims to keep state locally in order to do computations efficiently.</description>
    </item>
    <item>
      <title>Implementing a custom source connector for Table API and SQL - Part Two </title>
      <link>https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/</link>
      <pubDate>Tue, 07 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/</guid>
      <description>In part one of this tutorial, you learned how to build a custom source connector for Flink. In part two, you will learn how to integrate the connector with a test email inbox through the IMAP protocol and filter out emails using Flink SQL.&#xA;Goals # Part two of the tutorial will teach you how to:&#xA;integrate a source connector which connects to a mailbox using the IMAP protocol use Jakarta Mail, a Java library that can send and receive email via the IMAP protocol write Flink SQL and execute the queries in the Ververica Platform for a nicer visualization You are encouraged to follow along with the code in this repository.</description>
    </item>
    <item>
      <title>Stateful Functions 3.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2021/08/31/stateful-functions-3.1.0-release-announcement/</link>
      <pubDate>Tue, 31 Aug 2021 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/08/31/stateful-functions-3.1.0-release-announcement/</guid>
      <description>Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release brings various improvements to the StateFun runtime, a leaner way to specify StateFun module components, and a brand new GoLang SDK!&#xA;The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK, and GoLang SDK distributions are available on Maven, PyPI, and Github repecitvely.</description>
    </item>
    <item>
      <title>Help us stabilize Apache Flink 1.14.0 RC0</title>
      <link>https://flink.apache.org/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/</link>
      <pubDate>Tue, 31 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/</guid>
      <description>Hint Update 29th of September: Today Apache Flink 1.14 has been released. For sure we&#39;d still like to hear your feedback. Dear Flink Community,&#xA;we are excited to announce the first release candidate of Apache Flink 1.14. 🎉&#xA;A lot of features and fixes went into this release, including improvements to the unified batch and streaming experience, an increase in fault tolerance by reducing in-flight data, and more developments on connectors and components.</description>
    </item>
    <item>
      <title>Apache Flink 1.11.4 Released</title>
      <link>https://flink.apache.org/2021/08/09/apache-flink-1.11.4-released/</link>
      <pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/08/09/apache-flink-1.11.4-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.11 series.&#xA;This release includes 78 fixes and minor improvements for Flink 1.11.4. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.11.4.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.5 Released</title>
      <link>https://flink.apache.org/2021/08/06/apache-flink-1.12.5-released/</link>
      <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/08/06/apache-flink-1.12.5-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.&#xA;This release includes 76 fixes and minor improvements for Flink 1.12.4. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.12.5.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.13.2 Released</title>
      <link>https://flink.apache.org/2021/08/06/apache-flink-1.13.2-released/</link>
      <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/08/06/apache-flink-1.13.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.13 series.&#xA;This release includes 127 fixes and minor improvements for Flink 1.13.2. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.13.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>How to identify the source of backpressure?</title>
      <link>https://flink.apache.org/2021/07/07/how-to-identify-the-source-of-backpressure/</link>
      <pubDate>Wed, 07 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/07/07/how-to-identify-the-source-of-backpressure/</guid>
      <description>Backpressure monitoring in the web UI&#xA;The backpressure topic was tackled from different angles over the last couple of years. However, when it comes to identifying and analyzing sources of backpressure, things have changed quite a bit in the recent Flink releases (especially with new additions to metrics and the web UI in Flink 1.13). This post will try to clarify some of these changes and go into more detail about how to track down the source of backpressure, but first&amp;hellip;</description>
    </item>
    <item>
      <title>Apache Flink 1.13.1 Released</title>
      <link>https://flink.apache.org/2021/05/28/apache-flink-1.13.1-released/</link>
      <pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/05/28/apache-flink-1.13.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.13 series.&#xA;This release includes 82 fixes and minor improvements for Flink 1.13.1. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.&#xA;We highly recommend all users to upgrade to Flink 1.13.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.13.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.4 Released</title>
      <link>https://flink.apache.org/2021/05/21/apache-flink-1.12.4-released/</link>
      <pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/05/21/apache-flink-1.12.4-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.&#xA;This release includes 21 fixes and minor improvements for Flink 1.12.3. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.12.4.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Scaling Flink automatically with Reactive Mode</title>
      <link>https://flink.apache.org/2021/05/06/scaling-flink-automatically-with-reactive-mode/</link>
      <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/05/06/scaling-flink-automatically-with-reactive-mode/</guid>
      <description>Introduction # Streaming jobs which run for several days or longer usually experience variations in workload during their lifetime. These variations can originate from seasonal spikes, such as day vs. night, weekdays vs. weekend or holidays vs. non-holidays, sudden events or simply the growing popularity of your product. Although some of these variations are more predictable than others, in all cases there is a change in job resource demand that needs to be addressed if you want to ensure the same quality of service for your customers.</description>
    </item>
    <item>
      <title>Apache Flink 1.13.0 Release Announcement</title>
      <link>https://flink.apache.org/2021/05/03/apache-flink-1.13.0-release-announcement/</link>
      <pubDate>Mon, 03 May 2021 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/05/03/apache-flink-1.13.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink 1.13.0! More than 200 contributors worked on over 1,000 issues for this new version.&#xA;The release brings us a big step forward in one of our major efforts: Making Stream Processing Applications as natural and as simple to manage as any other application. The new reactive scaling mode means that scaling streaming applications in and out now works like in any other application by just changing the number of parallel processes.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.3 Released</title>
      <link>https://flink.apache.org/2021/04/29/apache-flink-1.12.3-released/</link>
      <pubDate>Thu, 29 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/04/29/apache-flink-1.12.3-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.&#xA;This release includes 73 fixes and minor improvements for Flink 1.12.2. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.12.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Stateful Functions 3.0.0: Remote Functions Front and Center</title>
      <link>https://flink.apache.org/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/</link>
      <pubDate>Thu, 15 Apr 2021 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/</guid>
      <description>The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 3.0.0! Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications.&#xA;This new release brings remote functions to the front and center of StateFun, making the disaggregated setup that separates the application logic from the StateFun cluster the default. It is now easier, more efficient, and more ergonomic to write applications that live in their own processes or containers.</description>
    </item>
    <item>
      <title>A Rundown of Batch Execution Mode in the DataStream API</title>
      <link>https://flink.apache.org/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/</link>
      <pubDate>Thu, 11 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/</guid>
      <description>Flink has been following the mantra that Batch is a Special Case of Streaming since the very early days. As the project evolved to address specific uses cases, different core APIs ended up being implemented for batch (DataSet API) and streaming execution (DataStream API), but the higher-level Table API/SQL was subsequently designed following this mantra of unification. With Flink 1.12, the community worked on bringing a similarly unified behaviour to the DataStream API, and took the first steps towards enabling efficient batch execution in the DataStream API.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.2 Released</title>
      <link>https://flink.apache.org/2021/03/03/apache-flink-1.12.2-released/</link>
      <pubDate>Wed, 03 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/03/03/apache-flink-1.12.2-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.&#xA;This release includes 83 fixes and minor improvements for Flink 1.12.1. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.12.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.12.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>How to natively deploy Flink on Kubernetes with High-Availability (HA)</title>
      <link>https://flink.apache.org/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/</link>
      <pubDate>Wed, 10 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/</guid>
      <description>Flink has supported resource management systems like YARN and Mesos since the early days; however, these were not designed for the fast-moving cloud-native architectures that are increasingly gaining popularity these days, or the growing need to support complex, mixed workloads (e.g. batch, streaming, deep learning, web services). For these reasons, more and more users are using Kubernetes to automate the deployment, scaling and management of their Flink applications.&#xA;From release to release, the Flink community has made significant progress in integrating natively with Kubernetes, from active resource management to “Zookeeperless” High Availability (HA).</description>
    </item>
    <item>
      <title>Apache Flink 1.10.3 Released</title>
      <link>https://flink.apache.org/2021/01/29/apache-flink-1.10.3-released/</link>
      <pubDate>Fri, 29 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/29/apache-flink-1.10.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.&#xA;This release includes 36 fixes and minor improvements for Flink 1.10.2. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.10.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.10.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.10.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.10.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.1 Released</title>
      <link>https://flink.apache.org/2021/01/19/apache-flink-1.12.1-released/</link>
      <pubDate>Tue, 19 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/19/apache-flink-1.12.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.12 series.&#xA;This release includes 79 fixes and minor improvements for Flink 1.12.0. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.12.1.&#xA;Attention: Using unaligned checkpoints in Flink 1.12.0 combined with two/multiple inputs tasks or with union inputs for single input tasks can result in corrupted state.</description>
    </item>
    <item>
      <title>Using RocksDB State Backend in Apache Flink: When and How</title>
      <link>https://flink.apache.org/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/</link>
      <pubDate>Mon, 18 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/</guid>
      <description>Stream processing applications are often stateful, “remembering” information from processed events and using it to influence further event processing. In Flink, the remembered information, i.e., state, is stored locally in the configured state backend. To prevent data loss in case of failures, the state backend periodically persists a snapshot of its contents to a pre-configured durable storage. The RocksDB state backend (i.e., RocksDBStateBackend) is one of the three built-in state backends in Flink.</description>
    </item>
    <item>
      <title>Exploring fine-grained recovery of bounded data sets on Flink</title>
      <link>https://flink.apache.org/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/</link>
      <pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/</guid>
      <description>Apache Flink is a very versatile tool for all kinds of data processing workloads. It can process incoming data within a few milliseconds or crunch through petabytes of bounded datasets (also known as batch processing).&#xA;Processing efficiency is not the only parameter users of data processing systems care about. In the real world, system outages due to hardware or software failure are expected to happen all the time. For unbounded (or streaming) workloads, Flink is using periodic checkpoints to allow for reliable and correct recovery.</description>
    </item>
    <item>
      <title>What&#39;s New in the Pulsar Flink Connector 2.7.0</title>
      <link>https://flink.apache.org/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/</link>
      <pubDate>Thu, 07 Jan 2021 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/</guid>
      <description>About the Pulsar Flink Connector # In order for companies to access real-time data insights, they need unified batch and streaming capabilities. Apache Flink unifies batch and stream processing into one single computing engine with “streams” as the unified data representation. Although developers have done extensive work at the computing and API layers, very little work has been done at the data messaging and storage layers. In reality, data is segregated into data silos, created by various storage and messaging technologies.</description>
    </item>
    <item>
      <title>Stateful Functions 2.2.2 Release Announcement</title>
      <link>https://flink.apache.org/2021/01/02/stateful-functions-2.2.2-release-announcement/</link>
      <pubDate>Sat, 02 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2021/01/02/stateful-functions-2.2.2-release-announcement/</guid>
      <description>The Apache Flink community released the second bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.2.&#xA;The most important change of this bugfix release is upgrading Apache Flink to version 1.11.3. In addition to many stability fixes to the Flink runtime itself, this also allows StateFun applications to safely use savepoints to upgrade from older versions earlier than StateFun 2.2.1. Previously, restoring from savepoints could have failed under certain conditions.</description>
    </item>
    <item>
      <title>Apache Flink 1.11.3 Released</title>
      <link>https://flink.apache.org/2020/12/18/apache-flink-1.11.3-released/</link>
      <pubDate>Fri, 18 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/12/18/apache-flink-1.11.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.11 series.&#xA;This release includes 151 fixes and minor improvements for Flink 1.11.2. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.11.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.12.0 Release Announcement</title>
      <link>https://flink.apache.org/2020/12/10/apache-flink-1.12.0-release-announcement/</link>
      <pubDate>Thu, 10 Dec 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/12/10/apache-flink-1.12.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to announce the release of Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring significant improvements to usability as well as new features that simplify (and unify) Flink handling across the API stack.&#xA;Release Highlights&#xA;The community has added support for efficient batch execution in the DataStream API. This is the next major milestone towards achieving a truly unified runtime for both batch and stream processing.</description>
    </item>
    <item>
      <title>Improvements in task scheduling for batch workloads in Apache Flink 1.12</title>
      <link>https://flink.apache.org/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/</link>
      <pubDate>Wed, 02 Dec 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/</guid>
      <description>The Flink community has been working for some time on making Flink a truly unified batch and stream processing system. Achieving this involves touching a lot of different components of the Flink stack, from the user-facing APIs all the way to low-level operator processes such as task scheduling. In this blogpost, we’ll take a closer look at how far the community has come in improving scheduling for batch workloads, why this matters and what you can expect in the Flink 1.</description>
    </item>
    <item>
      <title>Stateful Functions 2.2.1 Release Announcement</title>
      <link>https://flink.apache.org/2020/11/11/stateful-functions-2.2.1-release-announcement/</link>
      <pubDate>Wed, 11 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/11/11/stateful-functions-2.2.1-release-announcement/</guid>
      <description>The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.&#xA;This release fixes a critical bug that causes restoring the Stateful Functions cluster from snapshots (checkpoints or savepoints) to fail under certain conditions. Starting from this release, StateFun now creates snapshots with a more robust format that allows it to be restored safely going forward.&#xA;We strongly recommend all users to upgrade to 2.</description>
    </item>
    <item>
      <title>From Aligned to Unaligned Checkpoints - Part 1: Checkpoints, Alignment, and Backpressure</title>
      <link>https://flink.apache.org/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/</link>
      <pubDate>Thu, 15 Oct 2020 03:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/</guid>
      <description>Apache Flink’s checkpoint-based fault tolerance mechanism is one of its defining features. Because of that design, Flink unifies batch and stream processing, can easily scale to both very small and extremely large scenarios and provides support for many operational features like stateful upgrades with state evolution or roll-backs and time-travel.&#xA;Despite all these great properties, Flink&amp;rsquo;s checkpointing method has an Achilles Heel: the speed of a completed checkpoint is determined by the speed at which data flows through the application.</description>
    </item>
    <item>
      <title>Stateful Functions Internals: Behind the scenes of Stateful Serverless</title>
      <link>https://flink.apache.org/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/</link>
      <pubDate>Tue, 13 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/</guid>
      <description>Stateful Functions (StateFun) simplifies the building of distributed stateful applications by combining the best of two worlds: the strong messaging and state consistency guarantees of stateful stream processing, and the elasticity and serverless experience of today&amp;rsquo;s cloud-native architectures and popular event-driven FaaS platforms. Typical StateFun applications consist of functions deployed behind simple services using these modern platforms, with a separate StateFun cluster playing the role of an “event-driven database” that provides consistency and fault-tolerance for the functions&amp;rsquo; state and messaging.</description>
    </item>
    <item>
      <title>Stateful Functions 2.2.0 Release Announcement</title>
      <link>https://flink.apache.org/2020/09/28/stateful-functions-2.2.0-release-announcement/</link>
      <pubDate>Mon, 28 Sep 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/09/28/stateful-functions-2.2.0-release-announcement/</guid>
      <description>The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.2.0! This release introduces major features that extend the SDKs, such as support for asynchronous functions in the Python SDK, new persisted state constructs, and a new SDK that allows embedding StateFun functions within a Flink DataStream job. Moreover, we&amp;rsquo;ve also included important changes that improve out-of-the-box stability for common workloads, as well as increased observability for operational purposes.</description>
    </item>
    <item>
      <title>Apache Flink 1.11.2 Released</title>
      <link>https://flink.apache.org/2020/09/17/apache-flink-1.11.2-released/</link>
      <pubDate>Thu, 17 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/09/17/apache-flink-1.11.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.&#xA;This release includes 96 fixes and minor improvements for Flink 1.11.1. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.11.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Flink Community Update - August&#39;20</title>
      <link>https://flink.apache.org/2020/09/04/flink-community-update-august20/</link>
      <pubDate>Fri, 04 Sep 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/09/04/flink-community-update-august20/</guid>
      <description>Ah, so much for a quiet August month. This time around, we bring you some new Flink Improvement Proposals (FLIPs), a preview of the upcoming Flink Stateful Functions 2.2 release and a look into how far Flink has come in comparison to 2019.&#xA;The Past Month in Flink # Flink Releases # Getting Ready for Flink Stateful Functions 2.2 # The details of the next release of Stateful Functions are under discussion in this @dev mailing list thread, and the feature freeze is set for September 10th — so, you can expect Stateful Functions 2.</description>
    </item>
    <item>
      <title>Memory Management improvements for Flink’s JobManager in Apache Flink 1.11</title>
      <link>https://flink.apache.org/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/</link>
      <pubDate>Tue, 01 Sep 2020 15:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/</guid>
      <description>Apache Flink 1.11 comes with significant changes to the memory model of Flink’s JobManager and configuration options for your Flink clusters. These recently-introduced changes make Flink adaptable to all kinds of deployment environments (e.g. Kubernetes, Yarn, Mesos), providing better control over its memory consumption.&#xA;The previous blog post focused on the memory model of the TaskManagers and how it was improved in Flink 1.10. This post addresses the same topic but for the JobManager instead.</description>
    </item>
    <item>
      <title>Apache Flink 1.10.2 Released</title>
      <link>https://flink.apache.org/2020/08/25/apache-flink-1.10.2-released/</link>
      <pubDate>Tue, 25 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/08/25/apache-flink-1.10.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.10 series.&#xA;This release includes 73 fixes and minor improvements for Flink 1.10.1. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.10.2.&#xA;Note After FLINK-18242, the deprecated `OptionsFactory` and `ConfigurableOptionsFactory` classes are removed (not applicable for release-1.10), please use `RocksDBOptionsFactory` and `ConfigurableRocksDBOptionsFactory` instead. Please also recompile your application codes if any class extending `DefaultConfigurableOptionsFactory` Note After FLINK-17800 by default we will set `setTotalOrderSeek` to true for RocksDB&#39;s `ReadOptions`, to prevent user from miss using `optimizeForPointLookup`.</description>
    </item>
    <item>
      <title>The State of Flink on Docker</title>
      <link>https://flink.apache.org/2020/08/20/the-state-of-flink-on-docker/</link>
      <pubDate>Thu, 20 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/08/20/the-state-of-flink-on-docker/</guid>
      <description>With over 50 million downloads from Docker Hub, the Flink docker images are a very popular deployment option.&#xA;The Flink community recently put some effort into improving the Docker experience for our users with the goal to reduce confusion and improve usability.&#xA;Let&amp;rsquo;s quickly break down the recent improvements:&#xA;Reduce confusion: Flink used to have 2 Dockerfiles and a 3rd file maintained outside of the official repository — all with different features and varying stability.</description>
    </item>
    <item>
      <title>Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions</title>
      <link>https://flink.apache.org/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/</link>
      <pubDate>Tue, 18 Aug 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/</guid>
      <description>In this blog post, we&amp;rsquo;ll take a look at a class of use cases that is a natural fit for Flink Stateful Functions: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).&#xA;IoT networks are composed of many individual, but interconnected components, which makes getting some kind of high-level insight into the status, problems, or optimization opportunities in these networks not trivial. Each individual device “sees” only its own state, which means that the status of groups of devices, or even the network as a whole, is often a complex aggregation of the individual devices’ state.</description>
    </item>
    <item>
      <title>Accelerating your workload with GPU and other external resources</title>
      <link>https://flink.apache.org/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/</link>
      <pubDate>Thu, 06 Aug 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/</guid>
      <description>Apache Flink 1.11 introduces a new External Resource Framework, which allows you to request external resources from the underlying resource management systems (e.g., Kubernetes) and accelerate your workload with those resources. As Flink provides a first-party GPU plugin at the moment, we will take GPU as an example and show how it affects Flink applications in the AI field. Other external resources (e.g. RDMA and SSD) can also be supported in a pluggable manner.</description>
    </item>
    <item>
      <title>PyFlink: The integration of Pandas into PyFlink</title>
      <link>https://flink.apache.org/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/</link>
      <pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/</guid>
      <description>Python has evolved into one of the most important programming languages for many fields of data processing. So big has been Python’s popularity, that it has pretty much become the default data processing language for data scientists. On top of that, there is a plethora of Python-based data processing tools such as NumPy, Pandas, and Scikit-learn that have gained additional popularity due to their flexibility or powerful functionalities.&#xA;Pic source: VanderPlas 2017, slide 52.</description>
    </item>
    <item>
      <title>Advanced Flink Application Patterns Vol.3: Custom Window Processing</title>
      <link>https://flink.apache.org/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/</link>
      <pubDate>Thu, 30 Jul 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/</guid>
      <description>Introduction # In the previous articles of the series, we described how you can achieve flexible stream partitioning based on dynamically-updated configurations (a set of fraud-detection rules) and how you can utilize Flink&#39;s Broadcast mechanism to distribute processing configuration at runtime among the relevant operators. Following up directly where we left the discussion of the end-to-end solution last time, in this article we will describe how you can use the &amp;quot;Swiss knife&amp;quot; of Flink - the Process Function to create an implementation that is tailor-made to match your streaming business logic requirements.</description>
    </item>
    <item>
      <title>Flink Community Update - July&#39;20</title>
      <link>https://flink.apache.org/2020/07/29/flink-community-update-july20/</link>
      <pubDate>Wed, 29 Jul 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/29/flink-community-update-july20/</guid>
      <description>As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project.&#xA;Also, events are starting to pick up again, so we&amp;rsquo;ve put together a list of some great ones you can (virtually) attend in August!&#xA;The Past Month in Flink # Flink Releases # Flink 1.11 # A couple of weeks ago, Flink 1.</description>
    </item>
    <item>
      <title>Flink SQL Demo: Building an End-to-End Streaming Application</title>
      <link>https://flink.apache.org/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/</link>
      <pubDate>Tue, 28 Jul 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/</guid>
      <description>Apache Flink 1.11 has released many exciting new features, including many developments in Flink SQL which is evolving at a fast pace. This article takes a closer look at how to quickly build streaming applications with Flink SQL from a practical point of view.&#xA;In the following sections, we describe how to integrate Kafka, MySQL, Elasticsearch, and Kibana with Flink SQL to analyze e-commerce user behavior in real-time. All exercises in this blogpost are performed in the Flink SQL CLI, and the entire process uses standard SQL syntax, without a single line of Java/Scala code or IDE installation.</description>
    </item>
    <item>
      <title>Sharing is caring - Catalogs in Flink SQL</title>
      <link>https://flink.apache.org/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/</link>
      <pubDate>Thu, 23 Jul 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/</guid>
      <description>With an ever-growing number of people working with data, it&amp;rsquo;s a common practice for companies to build self-service platforms with the goal of democratizing their access across different teams and — especially — to enable users from any background to be independent in their data needs. In such environments, metadata management becomes a crucial aspect. Without it, users often work blindly, spending too much time searching for datasets and their location, figuring out data formats and similar cumbersome tasks.</description>
    </item>
    <item>
      <title>Apache Flink 1.11.1 Released</title>
      <link>https://flink.apache.org/2020/07/21/apache-flink-1.11.1-released/</link>
      <pubDate>Tue, 21 Jul 2020 18:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/21/apache-flink-1.11.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.11 series.&#xA;This release includes 44 fixes and minor improvements for Flink 1.11.0. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.11.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.11.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Application Deployment in Flink: Current State and the new Application Mode</title>
      <link>https://flink.apache.org/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/</link>
      <pubDate>Tue, 14 Jul 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/</guid>
      <description>With the rise of stream processing and real-time analytics as a critical tool for modern businesses, an increasing number of organizations build platforms with Apache Flink at their core and offer it internally as a service. Many talks with related topics from companies like Uber, Netflix and Alibaba in the latest editions of Flink Forward further illustrate this trend.&#xA;These platforms aim at simplifying application submission internally by lifting all the operational burden from the end user.</description>
    </item>
    <item>
      <title>Apache Flink 1.11.0 Release Announcement</title>
      <link>https://flink.apache.org/2020/07/06/apache-flink-1.11.0-release-announcement/</link>
      <pubDate>Mon, 06 Jul 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/07/06/apache-flink-1.11.0-release-announcement/</guid>
      <description>The Apache Flink community is proud to announce the release of Flink 1.11.0! More than 200 contributors worked on over 1.3k issues to bring significant improvements to usability as well as new features to Flink users across the whole API stack. Some highlights that we&amp;rsquo;re particularly excited about are:&#xA;The core engine is introducing unaligned checkpoints, a major change to Flink&amp;rsquo;s fault tolerance mechanism that improves checkpointing performance under heavy backpressure.</description>
    </item>
    <item>
      <title>Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2</title>
      <link>https://flink.apache.org/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/</link>
      <pubDate>Tue, 23 Jun 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/</guid>
      <description>In a previous post, we introduced the basics of Flink on Zeppelin and how to do Streaming ETL. In this second part of the &amp;ldquo;Flink on Zeppelin&amp;rdquo; series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs in Zeppelin.&#xA;Streaming Data Visualization # With Zeppelin, you can build a real time streaming dashboard without writing any line of javascript/html/css code.</description>
    </item>
    <item>
      <title>Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1</title>
      <link>https://flink.apache.org/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/</link>
      <pubDate>Mon, 15 Jun 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/</guid>
      <description>The latest release of Apache Zeppelin comes with a redesigned interpreter for Apache Flink (version Flink 1.10+ is only supported moving forward) that allows developers to use Flink directly on Zeppelin notebooks for interactive data analysis. I wrote 2 posts about how to use Flink in Zeppelin. This is part-1 where I explain how the Flink interpreter in Zeppelin works, and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</description>
    </item>
    <item>
      <title>Flink Community Update - June&#39;20</title>
      <link>https://flink.apache.org/2020/06/10/flink-community-update-june20/</link>
      <pubDate>Wed, 10 Jun 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/06/10/flink-community-update-june20/</guid>
      <description>And suddenly it’s June. The previous month has been calm on the surface, but quite hectic underneath — the final testing phase for Flink 1.11 is moving at full speed, Stateful Functions 2.1 is out in the wild and Flink has made it into Google Season of Docs 2020.&#xA;To top it off, a piece of good news: Flink Forward is back on October 19-22 as a free virtual event!</description>
    </item>
    <item>
      <title>Stateful Functions 2.1.0 Release Announcement</title>
      <link>https://flink.apache.org/2020/06/09/stateful-functions-2.1.0-release-announcement/</link>
      <pubDate>Tue, 09 Jun 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/06/09/stateful-functions-2.1.0-release-announcement/</guid>
      <description>The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.1.0! This release introduces new features around state expiration and performance improvements for co-located deployments, as well as other important changes that improve the stability and testability of the project. As the community around StateFun grows, the release cycle will follow this pattern of smaller and more frequent releases to incorporate user feedback and allow for faster iteration.</description>
    </item>
    <item>
      <title>Apache Flink 1.10.1 Released</title>
      <link>https://flink.apache.org/2020/05/12/apache-flink-1.10.1-released/</link>
      <pubDate>Tue, 12 May 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/05/12/apache-flink-1.10.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.10 series.&#xA;This release includes 158 fixes and minor improvements for Flink 1.10.0. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.10.1.&#xA;Note FLINK-16684 changed the builders of the StreamingFileSink to make them compilable in Scala. This change is source compatible but binary incompatible. If using the StreamingFileSink, please recompile your user code against 1.</description>
    </item>
    <item>
      <title>Flink Community Update - May&#39;20</title>
      <link>https://flink.apache.org/2020/05/06/flink-community-update-may20/</link>
      <pubDate>Wed, 06 May 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/05/06/flink-community-update-may20/</guid>
      <description>Can you smell it? It’s release month! It took a while, but now that we’re all caught up with the past, the Community Update is here to stay. This time around, we’re warming up for Flink 1.11 and peeping back to the month of April in the Flink community — with the release of Stateful Functions 2.0, a new self-paced Flink training and some efforts to improve the Flink documentation experience.</description>
    </item>
    <item>
      <title>Applying to Google Season of Docs 2020</title>
      <link>https://flink.apache.org/2020/05/04/applying-to-google-season-of-docs-2020/</link>
      <pubDate>Mon, 04 May 2020 06:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/05/04/applying-to-google-season-of-docs-2020/</guid>
      <description>The Flink community is thrilled to share that the project is applying again to Google Season of Docs (GSoD) this year! If you’re unfamiliar with the program, GSoD is a great initiative organized by Google Open Source to pair technical writers with mentors to work on documentation for open source projects. The first edition supported over 40 projects, including some other cool Apache Software Foundation (ASF) members like Apache Airflow and Apache Cassandra.</description>
    </item>
    <item>
      <title>Apache Flink 1.9.3 Released</title>
      <link>https://flink.apache.org/2020/04/24/apache-flink-1.9.3-released/</link>
      <pubDate>Fri, 24 Apr 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/04/24/apache-flink-1.9.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.9 series.&#xA;This release includes 38 fixes and minor improvements for Flink 1.9.2. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.9.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Memory Management Improvements with Apache Flink 1.10</title>
      <link>https://flink.apache.org/2020/04/21/memory-management-improvements-with-apache-flink-1.10/</link>
      <pubDate>Tue, 21 Apr 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/04/21/memory-management-improvements-with-apache-flink-1.10/</guid>
      <description>Apache Flink 1.10 comes with significant changes to the memory model of the Task Managers and configuration options for your Flink applications. These recently-introduced changes make Flink more adaptable to all kinds of deployment environments (e.g. Kubernetes, Yarn, Mesos), providing strict control over its memory consumption. In this post, we describe Flink’s memory model, as it stands in Flink 1.10, how to set up and manage memory consumption of your Flink applications and the recent changes the community implemented in the latest Apache Flink release.</description>
    </item>
    <item>
      <title>Flink Serialization Tuning Vol. 1: Choosing your Serializer — if you can</title>
      <link>https://flink.apache.org/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/</link>
      <pubDate>Wed, 15 Apr 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/</guid>
      <description>Almost every Flink job has to exchange data between its operators and since these records may not only be sent to another instance in the same JVM but instead to a separate process, records need to be serialized to bytes first. Similarly, Flink’s off-heap state-backend is based on a local embedded RocksDB instance which is implemented in native C++ code and thus also needs transformation into bytes on every state access.</description>
    </item>
    <item>
      <title>PyFlink: Introducing Python Support for UDFs in Flink&#39;s Table API</title>
      <link>https://flink.apache.org/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/</link>
      <pubDate>Thu, 09 Apr 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/</guid>
      <description>Flink 1.9 introduced the Python Table API, allowing developers and data engineers to write Python Table API jobs for Table transformations and analysis, such as Python ETL or aggregate jobs. However, Python users faced some limitations when it came to support for Python UDFs in Flink 1.9, preventing them from extending the system’s built-in functionality.&#xA;In Flink 1.10, the community further extended the support for Python by adding Python UDFs in PyFlink.</description>
    </item>
    <item>
      <title>Stateful Functions 2.0 - An Event-driven Database on Apache Flink</title>
      <link>https://flink.apache.org/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/</link>
      <pubDate>Tue, 07 Apr 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/</guid>
      <description>Today, we are announcing the release of Stateful Functions (StateFun) 2.0 — the first release of Stateful Functions as part of the Apache Flink project. This release marks a big milestone: Stateful Functions 2.0 is not only an API update, but the first version of an event-driven database that is built on Apache Flink.&#xA;Stateful Functions 2.0 makes it possible to combine StateFun’s powerful approach to state and composition with the elasticity, rapid scaling/scale-to-zero and rolling upgrade capabilities of FaaS implementations like AWS Lambda and modern resource orchestration frameworks like Kubernetes.</description>
    </item>
    <item>
      <title>Flink Community Update - April&#39;20</title>
      <link>https://flink.apache.org/2020/03/30/flink-community-update-april20/</link>
      <pubDate>Mon, 30 Mar 2020 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/03/30/flink-community-update-april20/</guid>
      <description>While things slow down around us, the Apache Flink community is privileged to remain as active as ever. This blogpost combs through the past few months to give you an update on the state of things in Flink — from core releases to Stateful Functions; from some good old community stats to a new development blog.&#xA;And since now it&amp;rsquo;s more important than ever to keep up the spirits, we’d like to invite you to join the Flink Forward Virtual Conference, on April 22-24 (see Upcoming Events).</description>
    </item>
    <item>
      <title>Flink as Unified Engine for Modern Data Warehousing: Production-Ready Hive Integration</title>
      <link>https://flink.apache.org/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/</link>
      <pubDate>Fri, 27 Mar 2020 02:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/</guid>
      <description>In this blog post, you will learn our motivation behind the Flink-Hive integration, and how Flink 1.10 can help modernize your data warehouse.&#xA;Introduction # What are some of the latest requirements for your data warehouse and data infrastructure in 2020?&#xA;We’ve came up with some for you.&#xA;Firstly, today’s business is shifting to a more real-time fashion, and thus demands abilities to process online streaming data with low latency for near-real-time or even real-time analytics.</description>
    </item>
    <item>
      <title>Advanced Flink Application Patterns Vol.2: Dynamic Updates of Application Logic</title>
      <link>https://flink.apache.org/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/</link>
      <pubDate>Tue, 24 Mar 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/</guid>
      <description>In the first article of the series, we gave a high-level description of the objectives and required functionality of a Fraud Detection engine. We also described how to make data partitioning in Apache Flink customizable based on modifiable rules instead of using a hardcoded KeysExtractor implementation.&#xA;We intentionally omitted details of how the applied rules are initialized and what possibilities exist for updating them at runtime. In this post, we will address exactly these details.</description>
    </item>
    <item>
      <title>Apache Beam: How Beam Runs on Top of Flink</title>
      <link>https://flink.apache.org/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/</link>
      <pubDate>Sat, 22 Feb 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/</guid>
      <description>Note: This blog post is based on the talk &amp;ldquo;Beam on Flink: How Does It Actually Work?&amp;rdquo;.&#xA;Apache Flink and Apache Beam are open-source frameworks for parallel, distributed data processing at scale. Unlike Flink, Beam does not come with a full-blown execution engine of its own but plugs into other execution engines, such as Apache Flink, Apache Spark, or Google Cloud Dataflow. In this blog post we discuss the reasons to use Flink together with Beam for your batch and stream processing needs.</description>
    </item>
    <item>
      <title>No Java Required: Configuring Sources and Sinks in SQL</title>
      <link>https://flink.apache.org/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/</link>
      <pubDate>Thu, 20 Feb 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/</guid>
      <description>Introduction # The recent Apache Flink 1.10 release includes many exciting features. In particular, it marks the end of the community&amp;rsquo;s year-long effort to merge in the Blink SQL contribution from Alibaba. The reason the community chose to spend so much time on the contribution is that SQL works. It allows Flink to offer a truly unified interface over batch and streaming and makes stream processing accessible to a broad audience of developers and analysts.</description>
    </item>
    <item>
      <title>Apache Flink 1.10.0 Release Announcement</title>
      <link>https://flink.apache.org/2020/02/11/apache-flink-1.10.0-release-announcement/</link>
      <pubDate>Tue, 11 Feb 2020 02:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/02/11/apache-flink-1.10.0-release-announcement/</guid>
      <description>The Apache Flink community is excited to hit the double digits and announce the release of Flink 1.10.0! As a result of the biggest community effort to date, with over 1.2k issues implemented and more than 200 contributors, this release introduces significant improvements to the overall performance and stability of Flink jobs, a preview of native Kubernetes integration and great advances in Python support (PyFlink).&#xA;Flink 1.10 also marks the completion of the Blink integration, hardening streaming SQL and bringing mature batch processing to Flink with production-ready Hive integration and TPC-DS coverage.</description>
    </item>
    <item>
      <title>A Guide for Unit Testing in Apache Flink</title>
      <link>https://flink.apache.org/2020/02/03/a-guide-for-unit-testing-in-apache-flink/</link>
      <pubDate>Mon, 03 Feb 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/02/03/a-guide-for-unit-testing-in-apache-flink/</guid>
      <description>Writing unit tests is one of the essential tasks of designing a production-grade application. Without tests, a single change in code can result in cascades of failure in production. Thus unit tests should be written for all types of applications, be it a simple job cleaning data and training a model or a complex multi-tenant, real-time data processing system. In the following sections, we provide a guide for unit testing of Apache Flink applications.</description>
    </item>
    <item>
      <title>Apache Flink 1.9.2 Released</title>
      <link>https://flink.apache.org/2020/01/30/apache-flink-1.9.2-released/</link>
      <pubDate>Thu, 30 Jan 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/01/30/apache-flink-1.9.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.9 series.&#xA;This release includes 117 fixes and minor improvements for Flink 1.9.1. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.9.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>State Unlocked: Interacting with State in Apache Flink</title>
      <link>https://flink.apache.org/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/</link>
      <pubDate>Wed, 29 Jan 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/</guid>
      <description>Introduction # With stateful stream-processing becoming the norm for complex event-driven applications and real-time analytics, Apache Flink is often the backbone for running business logic and managing an organization’s most valuable asset — its data — as application state in Flink.&#xA;In order to provide a state-of-the-art experience to Flink developers, the Apache Flink community makes significant efforts to provide the safety and future-proof guarantees organizations need while managing state in Flink.</description>
    </item>
    <item>
      <title>Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System</title>
      <link>https://flink.apache.org/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/</link>
      <pubDate>Wed, 15 Jan 2020 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/</guid>
      <description>In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications:&#xA;Dynamic updates of application logic Dynamic data partitioning (shuffle), controlled at runtime Low latency alerting based on custom windowing logic (without using the window API) These patterns expand the possibilities of what is achievable with statically defined data flows and provide the building blocks to fulfill complex business requirements.&#xA;Dynamic updates of application logic allow Flink jobs to change at runtime, without downtime from stopping and resubmitting the code.</description>
    </item>
    <item>
      <title>Apache Flink 1.8.3 Released</title>
      <link>https://flink.apache.org/2019/12/11/apache-flink-1.8.3-released/</link>
      <pubDate>Wed, 11 Dec 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/12/11/apache-flink-1.8.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.8 series.&#xA;This release includes 45 fixes and minor improvements for Flink 1.8.2. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.8.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>How to query Pulsar Streams using Apache Flink</title>
      <link>https://flink.apache.org/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/</link>
      <pubDate>Mon, 25 Nov 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/</guid>
      <description>In a previous story on the Flink blog, we explained the different ways that Apache Flink and Apache Pulsar can integrate to provide elastic data processing at large scale. This blog post discusses the new developments and integrations between the two frameworks and showcases how you can leverage Pulsar’s built-in schema to query Pulsar streams in real time using Apache Flink.&#xA;A short intro to Apache Pulsar # Apache Pulsar is a flexible pub/sub messaging system, backed by durable log storage.</description>
    </item>
    <item>
      <title>Running Apache Flink on Kubernetes with KUDO</title>
      <link>https://flink.apache.org/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/</link>
      <pubDate>Wed, 06 Nov 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/</guid>
      <description>A common use case for Apache Flink is streaming data analytics together with Apache Kafka, which provides a pub/sub model and durability for data streams. To achieve elastic scalability, both are typically deployed in clustered environments, and increasingly on top of container orchestration platforms like Kubernetes. The Operator pattern provides an extension mechanism to Kubernetes that captures human operator knowledge about an application, like Flink, in software to automate its operation.</description>
    </item>
    <item>
      <title>Apache Flink 1.9.1 Released</title>
      <link>https://flink.apache.org/2019/10/18/apache-flink-1.9.1-released/</link>
      <pubDate>Fri, 18 Oct 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/10/18/apache-flink-1.9.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.&#xA;This release includes 96 fixes and minor improvements for Flink 1.9.0. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.9.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>The State Processor API: How to Read, write and modify the state of Flink applications</title>
      <link>https://flink.apache.org/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/</link>
      <pubDate>Fri, 13 Sep 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/</guid>
      <description>Whether you are running Apache FlinkⓇ in production or evaluated Flink as a computation framework in the past, you&amp;rsquo;ve probably found yourself asking the question: How can I access, write or update state in a Flink savepoint? Ask no more! Apache Flink 1.9.0 introduces the State Processor API, a powerful extension of the DataSet API that allows reading, writing and modifying state in Flink&amp;rsquo;s savepoints and checkpoints.&#xA;In this post, we explain why this feature is a big step for Flink, what you can use it for, and how to use it.</description>
    </item>
    <item>
      <title>Apache Flink 1.8.2 Released</title>
      <link>https://flink.apache.org/2019/09/11/apache-flink-1.8.2-released/</link>
      <pubDate>Wed, 11 Sep 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/09/11/apache-flink-1.8.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.8 series.&#xA;This release includes 23 fixes and minor improvements for Flink 1.8.1. The list below includes a detailed list of all fixes and improvements.&#xA;We highly recommend all users to upgrade to Flink 1.8.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Flink Community Update - September&#39;19</title>
      <link>https://flink.apache.org/2019/09/05/flink-community-update-september19/</link>
      <pubDate>Thu, 05 Sep 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/09/05/flink-community-update-september19/</guid>
      <description>This has been an exciting, fast-paced year for the Apache Flink community. But with over 10k messages across the mailing lists, 3k Jira tickets and 2k pull requests, it is not easy to keep up with the latest state of the project. Plus everything happening around it. With that in mind, we want to bring back regular community updates to the Flink blog.&#xA;The first post in the series takes you on an little detour across the year, to freshen up and make sure you&amp;rsquo;re all up to date.</description>
    </item>
    <item>
      <title>Apache Flink 1.9.0 Release Announcement</title>
      <link>https://flink.apache.org/2019/08/22/apache-flink-1.9.0-release-announcement/</link>
      <pubDate>Thu, 22 Aug 2019 02:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/08/22/apache-flink-1.9.0-release-announcement/</guid>
      <description>The Apache Flink community is proud to announce the release of Apache Flink 1.9.0.&#xA;The Apache Flink project&amp;rsquo;s goal is to develop a stream processing system to unify and power many forms of real-time and offline data processing applications as well as event-driven applications. In this release, we have made a huge step forward in that effort, by integrating Flink’s stream and batch processing capabilities under a single, unified runtime.</description>
    </item>
    <item>
      <title>Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing</title>
      <link>https://flink.apache.org/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/</link>
      <pubDate>Tue, 23 Jul 2019 15:30:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/</guid>
      <description>In a previous blog post, we presented how Flink’s network stack works from the high-level abstractions to the low-level details. This second blog post in the series of network stack posts extends on this knowledge and discusses monitoring network-related metrics to identify effects such as backpressure or bottlenecks in throughput and latency. Although this post briefly covers what to do with backpressure, the topic of tuning the network stack will be further examined in a future post.</description>
    </item>
    <item>
      <title>Apache Flink 1.8.1 Released</title>
      <link>https://flink.apache.org/2019/07/02/apache-flink-1.8.1-released/</link>
      <pubDate>Tue, 02 Jul 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/07/02/apache-flink-1.8.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.&#xA;This release includes more than 40 fixes and minor improvements for Flink 1.8.1. The list below includes a detailed list of all improvements, sub-tasks and bug fixes.&#xA;We highly recommend all users to upgrade to Flink 1.8.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.8.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>A Practical Guide to Broadcast State in Apache Flink</title>
      <link>https://flink.apache.org/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/</link>
      <pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/</guid>
      <description>Since version 1.5.0, Apache Flink features a new type of state which is called Broadcast State. In this post, we explain what Broadcast State is, and show an example of how it can be applied to an application that evaluates dynamic patterns on an event stream. We walk you through the processing steps and the source code to implement this application in practice.&#xA;What is Broadcast State? # The Broadcast State can be used to combine and jointly process two streams of events in a specific way.</description>
    </item>
    <item>
      <title>A Deep-Dive into Flink&#39;s Network Stack</title>
      <link>https://flink.apache.org/2019/06/05/a-deep-dive-into-flinks-network-stack/</link>
      <pubDate>Wed, 05 Jun 2019 08:45:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/06/05/a-deep-dive-into-flinks-network-stack/</guid>
      <description>Flink’s network stack is one of the core components that make up the flink-runtime module and sit at the heart of every Flink job. It connects individual work units (subtasks) from all TaskManagers. This is where your streamed-in data flows through and it is therefore crucial to the performance of your Flink job for both the throughput as well as latency you observe. In contrast to the coordination channels between TaskManagers and JobManagers which are using RPCs via Akka, the network stack between TaskManagers relies on a much lower-level API using Netty.</description>
    </item>
    <item>
      <title>State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink</title>
      <link>https://flink.apache.org/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/</link>
      <pubDate>Fri, 17 May 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/</guid>
      <description>A common requirement for many stateful streaming applications is to automatically cleanup application state for effective management of your state size, or to control how long the application state can be accessed (e.g. due to legal regulations like the GDPR). The state time-to-live (TTL) feature was initiated in Flink 1.6.0 and enabled application state cleanup and efficient state size management in Apache Flink.&#xA;In this post, we motivate the State TTL feature and discuss its use cases.</description>
    </item>
    <item>
      <title>Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL</title>
      <link>https://flink.apache.org/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/</link>
      <pubDate>Tue, 14 May 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/</guid>
      <description>Figuring out how to manage and model temporal data for effective point-in-time analysis was a longstanding battle, dating as far back as the early 80’s, that culminated with the introduction of temporal tables in the SQL standard in 2011. Up to that point, users were doomed to implement this as part of the application logic, often hurting the length of the development lifecycle as well as the maintainability of the code.</description>
    </item>
    <item>
      <title>When Flink &amp; Pulsar Come Together</title>
      <link>https://flink.apache.org/2019/05/03/when-flink-pulsar-come-together/</link>
      <pubDate>Fri, 03 May 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/05/03/when-flink-pulsar-come-together/</guid>
      <description>The open source data technology frameworks Apache Flink and Apache Pulsar can integrate in different ways to provide elastic data processing at large scale. I recently gave a talk at Flink Forward San Francisco 2019 and presented some of the integrations between the two frameworks for batch and streaming applications. In this post, I will give a short introduction to Apache Pulsar and its differentiating elements from other messaging systems and describe the ways that Pulsar and Flink can work together to provide a seamless developer experience for elastic data processing at scale.</description>
    </item>
    <item>
      <title>Apache Flink&#39;s Application to Season of Docs</title>
      <link>https://flink.apache.org/2019/04/17/apache-flinks-application-to-season-of-docs/</link>
      <pubDate>Wed, 17 Apr 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/04/17/apache-flinks-application-to-season-of-docs/</guid>
      <description>The Apache Flink community is happy to announce its application to the first edition of Season of Docs by Google. The program is bringing together Open Source projects and technical writers to raise awareness for and improve documentation of Open Source projects. While the community is continuously looking for new contributors to collaborate on our documentation, we would like to take this chance to work with one or two technical writers to extend and restructure parts of our documentation (details below).</description>
    </item>
    <item>
      <title>Apache Flink 1.8.0 Release Announcement</title>
      <link>https://flink.apache.org/2019/04/09/apache-flink-1.8.0-release-announcement/</link>
      <pubDate>Tue, 09 Apr 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/04/09/apache-flink-1.8.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce Apache Flink 1.8.0. The latest release includes more than 420 resolved issues and some exciting additions to Flink that we describe in the following sections of this post. Please check the complete changelog for more details.&#xA;Flink 1.8.0 is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation. The release is available now and we encourage everyone to download the release and check out the updated documentation.</description>
    </item>
    <item>
      <title>Flink and Prometheus: Cloud-native monitoring of streaming applications</title>
      <link>https://flink.apache.org/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/</link>
      <pubDate>Mon, 11 Mar 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/</guid>
      <description>This blog post describes how developers can leverage Apache Flink&amp;rsquo;s built-in metrics system together with Prometheus to observe and monitor streaming applications in an effective way. This is a follow-up post from my Flink Forward Berlin 2018 talk (slides, video). We will cover some basic Prometheus concepts and why it is a great fit for monitoring Apache Flink stream processing jobs. There is also an example to showcase how you can utilize Prometheus with Flink to gain insights into your applications and be alerted on potential degradations of your Flink jobs.</description>
    </item>
    <item>
      <title>What to expect from Flink Forward San Francisco 2019</title>
      <link>https://flink.apache.org/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/</link>
      <pubDate>Wed, 06 Mar 2019 11:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/</guid>
      <description>The third annual Flink Forward San Francisco is just a few weeks away! As always, Flink Forward will be the right place to meet and mingle with experienced Flink users, contributors, and committers. Attendees will hear and chat about the latest developments around Flink and learn from technical deep-dive sessions and exciting use cases that were put into production with Flink. The event will take place on April 1-2, 2019 at Hotel Nikko in San Francisco.</description>
    </item>
    <item>
      <title>Apache Flink 1.6.4 Released</title>
      <link>https://flink.apache.org/2019/02/25/apache-flink-1.6.4-released/</link>
      <pubDate>Mon, 25 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/02/25/apache-flink-1.6.4-released/</guid>
      <description>The Apache Flink community released the fourth bugfix version of the Apache Flink 1.6 series.&#xA;This release includes more than 25 fixes and minor improvements for Flink 1.6.3. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.6.4.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Monitoring Apache Flink Applications 101</title>
      <link>https://flink.apache.org/2019/02/21/monitoring-apache-flink-applications-101/</link>
      <pubDate>Thu, 21 Feb 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/02/21/monitoring-apache-flink-applications-101/</guid>
      <description>This blog post provides an introduction to Apache Flink’s built-in monitoring and metrics system, that allows developers to effectively monitor their Flink jobs. Oftentimes, the task of picking the relevant metrics to monitor a Flink application can be overwhelming for a DevOps team that is just starting with stream processing and Apache Flink. Having worked with many organizations that deploy Flink at scale, I would like to share my experience and some best practice with the community.</description>
    </item>
    <item>
      <title>Apache Flink 1.7.2 Released</title>
      <link>https://flink.apache.org/2019/02/15/apache-flink-1.7.2-released/</link>
      <pubDate>Fri, 15 Feb 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/02/15/apache-flink-1.7.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.7 series.&#xA;This release includes more than 40 fixes and minor improvements for Flink 1.7.1, covering several critical recovery issues as well as problems in the Flink streaming connectors.&#xA;The list below includes a detailed list of all fixes. We highly recommend all users to upgrade to Flink 1.7.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.7.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.</description>
    </item>
    <item>
      <title>Batch as a Special Case of Streaming and Alibaba&#39;s contribution of Blink</title>
      <link>https://flink.apache.org/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/</link>
      <pubDate>Wed, 13 Feb 2019 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/</guid>
      <description>Last week, we broke the news that Alibaba decided to contribute its Flink-fork, called Blink, back to the Apache Flink project. Why is that a big thing for Flink, what will it mean for users and the community, and how does it fit into Flink’s overall vision? Let&amp;rsquo;s take a step back to understand this better&amp;hellip;&#xA;A Unified Approach to Batch and Streaming # Since its early days, Apache Flink has followed the philosophy of taking a unified approach to batch and streaming data processing.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.6 Released</title>
      <link>https://flink.apache.org/2018/12/26/apache-flink-1.5.6-released/</link>
      <pubDate>Wed, 26 Dec 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/12/26/apache-flink-1.5.6-released/</guid>
      <description>The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 47 fixes and minor improvements for Flink 1.5.5. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.6.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.6&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.6&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.6&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.6.3 Released</title>
      <link>https://flink.apache.org/2018/12/22/apache-flink-1.6.3-released/</link>
      <pubDate>Sat, 22 Dec 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/12/22/apache-flink-1.6.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.6 series.&#xA;This release includes more than 80 fixes and minor improvements for Flink 1.6.2. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.6.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.7.1 Released</title>
      <link>https://flink.apache.org/2018/12/21/apache-flink-1.7.1-released/</link>
      <pubDate>Fri, 21 Dec 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/12/21/apache-flink-1.7.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.7 series.&#xA;This release includes 27 fixes and minor improvements for Flink 1.7.0. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.7.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.7.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.7.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.7.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.7.0 Release Announcement</title>
      <link>https://flink.apache.org/2018/11/30/apache-flink-1.7.0-release-announcement/</link>
      <pubDate>Fri, 30 Nov 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/11/30/apache-flink-1.7.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce Apache Flink 1.7.0. The latest release includes more than 420 resolved issues and some exciting additions to Flink that we describe in the following sections of this post. Please check the complete changelog for more details.&#xA;Flink 1.7.0 is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation. The release is available now and we encourage everyone to download the release and check out the updated documentation.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.5 Released</title>
      <link>https://flink.apache.org/2018/10/29/apache-flink-1.5.5-released/</link>
      <pubDate>Mon, 29 Oct 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/10/29/apache-flink-1.5.5-released/</guid>
      <description>The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 20 fixes and minor improvements for Flink 1.5.4. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.5.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.6.2 Released</title>
      <link>https://flink.apache.org/2018/10/29/apache-flink-1.6.2-released/</link>
      <pubDate>Mon, 29 Oct 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/10/29/apache-flink-1.6.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.6 series.&#xA;This release includes more than 30 fixes and minor improvements for Flink 1.6.1. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.6.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.4 Released</title>
      <link>https://flink.apache.org/2018/09/20/apache-flink-1.5.4-released/</link>
      <pubDate>Thu, 20 Sep 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/09/20/apache-flink-1.5.4-released/</guid>
      <description>The Apache Flink community released the fourth bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 20 fixes and minor improvements for Flink 1.5.4. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.4.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.6.1 Released</title>
      <link>https://flink.apache.org/2018/09/20/apache-flink-1.6.1-released/</link>
      <pubDate>Thu, 20 Sep 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/09/20/apache-flink-1.6.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.6 series.&#xA;This release includes 60 fixes and minor improvements for Flink 1.6.1. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.6.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.6.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.3 Released</title>
      <link>https://flink.apache.org/2018/08/21/apache-flink-1.5.3-released/</link>
      <pubDate>Tue, 21 Aug 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/08/21/apache-flink-1.5.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 20 fixes and minor improvements for Flink 1.5.3. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.6.0 Release Announcement</title>
      <link>https://flink.apache.org/2018/08/09/apache-flink-1.6.0-release-announcement/</link>
      <pubDate>Thu, 09 Aug 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/08/09/apache-flink-1.6.0-release-announcement/</guid>
      <description>The Apache Flink community is proud to announce the 1.6.0 release. Over the past 2 months, the Flink community has worked hard to resolve more than 360 issues. Please check the complete changelog for more details.&#xA;Flink 1.6.0 is the seventh major release in the 1.x.y series. It is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation.&#xA;We encourage everyone to download the release and check out the documentation.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.2 Released</title>
      <link>https://flink.apache.org/2018/07/31/apache-flink-1.5.2-released/</link>
      <pubDate>Tue, 31 Jul 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/07/31/apache-flink-1.5.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 20 fixes and minor improvements for Flink 1.5.1. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.1 Released</title>
      <link>https://flink.apache.org/2018/07/12/apache-flink-1.5.1-released/</link>
      <pubDate>Thu, 12 Jul 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/07/12/apache-flink-1.5.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.5 series.&#xA;This release includes more than 60 fixes and minor improvements for Flink 1.5.0. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.5.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.5.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.5.0 Release Announcement</title>
      <link>https://flink.apache.org/2018/05/18/apache-flink-1.5.0-release-announcement/</link>
      <pubDate>Fri, 18 May 2018 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/05/18/apache-flink-1.5.0-release-announcement/</guid>
      <description>The Apache Flink community is thrilled to announce the 1.5.0 release. Over the past 5 months, the Flink community has been working hard to resolve more than 780 issues. Please check the complete changelog for more detail.&#xA;Flink 1.5.0 is the sixth major release in the 1.x.y series. As usual, it is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation.&#xA;We encourage everyone to download the release and check out the documentation.</description>
    </item>
    <item>
      <title>Apache Flink 1.3.3 Released</title>
      <link>https://flink.apache.org/2018/03/15/apache-flink-1.3.3-released/</link>
      <pubDate>Thu, 15 Mar 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/03/15/apache-flink-1.3.3-released/</guid>
      <description>The Apache Flink community released the third bugfix version of the Apache Flink 1.3 series.&#xA;This release includes 4 critical fixes related to checkpointing and recovery. The list below includes a detailed list of all fixes.&#xA;We highly recommend all Flink 1.3 series users to upgrade to Flink 1.3.3.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.4.2 Released</title>
      <link>https://flink.apache.org/2018/03/08/apache-flink-1.4.2-released/</link>
      <pubDate>Thu, 08 Mar 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/03/08/apache-flink-1.4.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.4 series.&#xA;This release includes more than 10 fixes and minor improvements for Flink 1.4.1. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.4.2.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)</title>
      <link>https://flink.apache.org/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/</link>
      <pubDate>Wed, 28 Feb 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/</guid>
      <description>This post is an adaptation of Piotr Nowojski&amp;rsquo;s presentation from Flink Forward Berlin 2017. You can find the slides and a recording of the presentation on the Flink Forward Berlin website.&#xA;Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called TwoPhaseCommitSinkFunction (relevant Jira here) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a selection of data sources and sinks, including Apache Kafka versions 0.</description>
    </item>
    <item>
      <title>Apache Flink 1.4.1 Released</title>
      <link>https://flink.apache.org/2018/02/15/apache-flink-1.4.1-released/</link>
      <pubDate>Thu, 15 Feb 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/02/15/apache-flink-1.4.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.&#xA;This release includes more than 60 fixes and minor improvements for Flink 1.4.0. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.4.1.&#xA;Updated Maven dependencies:&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.11&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Managing Large State in Apache Flink: An Intro to Incremental Checkpointing</title>
      <link>https://flink.apache.org/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/</link>
      <pubDate>Tue, 30 Jan 2018 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/</guid>
      <description>Apache Flink was purpose-built for stateful stream processing. However, what is state in a stream processing application? I defined state and stateful stream processing in a previous blog post, and in case you need a refresher, state is defined as memory in an application&amp;rsquo;s operators that stores information about previously-seen events that you can use to influence the processing of future events.&#xA;State is a fundamental, enabling concept in stream processing required for a majority of complex use cases.</description>
    </item>
    <item>
      <title>Apache Flink in 2017: Year in Review</title>
      <link>https://flink.apache.org/2017/12/21/apache-flink-in-2017-year-in-review/</link>
      <pubDate>Thu, 21 Dec 2017 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/12/21/apache-flink-in-2017-year-in-review/</guid>
      <description>2017 was another exciting year for the Apache Flink® community, with 3 major version releases (Flink 1.2.0 in February, Flink 1.3.0 in June, and Flink 1.4.0 in December) and the first-ever Flink Forward in San Francisco, giving Flink community members in another corner of the globe an opportunity to connect. Users shared details about their innovative production deployments, redefining what is possible with a modern stream processing framework like Flink.</description>
    </item>
    <item>
      <title>Apache Flink 1.4.0 Release Announcement</title>
      <link>https://flink.apache.org/2017/12/12/apache-flink-1.4.0-release-announcement/</link>
      <pubDate>Tue, 12 Dec 2017 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/12/12/apache-flink-1.4.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce the 1.4.0 release. Over the past 5 months, the Flink community has been working hard to resolve more than 900 issues. See the complete changelog for more detail.&#xA;This is the fifth major release in the 1.x.y series. It is API-compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.&#xA;We encourage everyone to download the release and check out the documentation.</description>
    </item>
    <item>
      <title>Looking Ahead to Apache Flink 1.4.0 and 1.5.0</title>
      <link>https://flink.apache.org/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/</link>
      <pubDate>Tue, 21 Nov 2017 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/</guid>
      <description>The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the readers out there who haven’t been following the release discussion on Flink’s developer mailing list, we’d like to provide some details on what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will save for 1.5.0.&#xA;Both releases include ambitious features that we believe will move Flink to an entirely new level in terms of the types of problems it can solve and applications it can support.</description>
    </item>
    <item>
      <title>Apache Flink 1.3.2 Released</title>
      <link>https://flink.apache.org/2017/08/05/apache-flink-1.3.2-released/</link>
      <pubDate>Sat, 05 Aug 2017 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/08/05/apache-flink-1.3.2-released/</guid>
      <description>The Apache Flink community released the second bugfix version of the Apache Flink 1.3 series.&#xA;This release includes more than 60 fixes and minor improvements for Flink 1.3.1. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.3.2.&#xA;Important Notice: A user reported a bug in the FlinkKafkaConsumer (FLINK-7143) that is causing incorrect partition assignment in large Kafka deployments in the presence of inconsistent broker metadata.</description>
    </item>
    <item>
      <title>A Deep Dive into Rescalable State in Apache Flink</title>
      <link>https://flink.apache.org/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/</link>
      <pubDate>Tue, 04 Jul 2017 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/</guid>
      <description>Apache Flink 1.2.0, released in February 2017, introduced support for rescalable state. This post provides a detailed overview of stateful stream processing and rescalable state in Flink. An Intro to Stateful Stream Processing # At a high level, we can consider state in stream processing as memory in operators that remembers information about past input and can be used to influence the processing of future input.&#xA;In contrast, operators in stateless stream processing only consider their current inputs, without further context and knowledge about the past.</description>
    </item>
    <item>
      <title>Apache Flink 1.3.1 Released</title>
      <link>https://flink.apache.org/2017/06/23/apache-flink-1.3.1-released/</link>
      <pubDate>Fri, 23 Jun 2017 16:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/06/23/apache-flink-1.3.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.3 series.&#xA;This release includes 50 fixes and minor improvements for Flink 1.3.0. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.3.1.&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3.1&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Apache Flink 1.3.0 Release Announcement</title>
      <link>https://flink.apache.org/2017/06/01/apache-flink-1.3.0-release-announcement/</link>
      <pubDate>Thu, 01 Jun 2017 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/06/01/apache-flink-1.3.0-release-announcement/</guid>
      <description>The Apache Flink community is pleased to announce the 1.3.0 release. Over the past 4 months, the Flink community has been working hard to resolve more than 680 issues. See the complete changelog for more detail.&#xA;This is the fourth major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.&#xA;Users can expect Flink releases now in a 4 month cycle.</description>
    </item>
    <item>
      <title>Introducing Docker Images for Apache Flink</title>
      <link>https://flink.apache.org/2017/05/16/introducing-docker-images-for-apache-flink/</link>
      <pubDate>Tue, 16 May 2017 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/05/16/introducing-docker-images-for-apache-flink/</guid>
      <description>For some time, the Apache Flink community has provided scripts to build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will have a Docker image on the Docker Hub. This image is maintained by the Flink community and curated by the Docker team to ensure it meets the quality standards for container images of the Docker community.&#xA;A community-maintained way to run Apache Flink on Docker and other container runtimes and orchestrators is part of the ongoing effort by the Flink community to make Flink a first-class citizen of the container world.</description>
    </item>
    <item>
      <title>Apache Flink 1.2.1 Released</title>
      <link>https://flink.apache.org/2017/04/26/apache-flink-1.2.1-released/</link>
      <pubDate>Wed, 26 Apr 2017 18:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/04/26/apache-flink-1.2.1-released/</guid>
      <description>The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.&#xA;This release includes many critical fixes for Flink 1.2.0. The list below includes a detailed list of all fixes.&#xA;We highly recommend all users to upgrade to Flink 1.2.1.&#xA;Please note that there are two unresolved major issues in Flink 1.2.1 and 1.2.0:&#xA;FLINK-6353 Restoring using CheckpointedRestoring does not work from 1.2 to 1.2 FLINK-6188 Some setParallelism() methods can&amp;rsquo;t cope with default parallelism &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.</description>
    </item>
    <item>
      <title>Continuous Queries on Dynamic Tables</title>
      <link>https://flink.apache.org/2017/03/30/continuous-queries-on-dynamic-tables/</link>
      <pubDate>Thu, 30 Mar 2017 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/03/30/continuous-queries-on-dynamic-tables/</guid>
      <description>Analyzing Data Streams with SQL # More and more companies are adopting stream processing and are migrating existing batch applications to streaming or implementing streaming solutions for new use cases. Many of those applications focus on analyzing streaming data. The data streams that are analyzed come from a wide variety of sources such as database transactions, clicks, sensor measurements, or IoT devices.&#xA;Apache Flink is very well suited to power streaming analytics applications because it provides support for event-time semantics, stateful exactly-once processing, and achieves high throughput and low latency at the same time.</description>
    </item>
    <item>
      <title>From Streams to Tables and Back Again: An Update on Flink&#39;s Table &amp; SQL API</title>
      <link>https://flink.apache.org/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/</link>
      <pubDate>Wed, 29 Mar 2017 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/</guid>
      <description>Stream processing can deliver a lot of value. Many organizations have recognized the benefit of managing large volumes of data in real-time, reacting quickly to trends, and providing customers with live services at scale. Streaming applications with well-defined business logic can deliver a competitive advantage.&#xA;Flink&amp;rsquo;s DataStream abstraction is a powerful API which lets you flexibly define both basic and complex streaming pipelines. Additionally, it offers low-level operations such as Async IO and ProcessFunctions.</description>
    </item>
    <item>
      <title>Apache Flink 1.1.5 Released</title>
      <link>https://flink.apache.org/2017/03/23/apache-flink-1.1.5-released/</link>
      <pubDate>Thu, 23 Mar 2017 18:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/03/23/apache-flink-1.1.5-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.&#xA;This release includes critical fixes for HA recovery robustness, fault tolerance guarantees of the Flink Kafka Connector, as well as classloading issues with the Kryo serializer. We highly recommend all users to upgrade to Flink 1.1.5.&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.5&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.</description>
    </item>
    <item>
      <title>Announcing Apache Flink 1.2.0</title>
      <link>https://flink.apache.org/2017/02/06/announcing-apache-flink-1.2.0/</link>
      <pubDate>Mon, 06 Feb 2017 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2017/02/06/announcing-apache-flink-1.2.0/</guid>
      <description>The Apache Flink community is pleased to announce the 1.2.0 release. Over the past months, the Flink community has been working hard to resolve 650 issues. See the complete changelog for more detail.&#xA;This is the third major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.&#xA;We encourage everyone to download the release and check out the documentation.</description>
    </item>
    <item>
      <title>Apache Flink 1.1.4 Released</title>
      <link>https://flink.apache.org/2016/12/21/apache-flink-1.1.4-released/</link>
      <pubDate>Wed, 21 Dec 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/12/21/apache-flink-1.1.4-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.&#xA;This release includes major robustness improvements for checkpoint cleanup on failures and consumption of intermediate streams. We highly recommend all users to upgrade to Flink 1.1.4.&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.&#xA;Note for RocksDB Backend Users # We updated Flink&amp;rsquo;s RocksDB dependency version from 4.</description>
    </item>
    <item>
      <title>Apache Flink in 2016: Year in Review</title>
      <link>https://flink.apache.org/2016/12/19/apache-flink-in-2016-year-in-review/</link>
      <pubDate>Mon, 19 Dec 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/12/19/apache-flink-in-2016-year-in-review/</guid>
      <description>2016 was an exciting year for the Apache Flink® community, and the release of Flink 1.0 in March marked the first time in Flink’s history that the community guaranteed API backward compatibility for all versions in a series. This step forward for Flink was followed by many new and exciting production deployments in organizations of all shapes and sizes, all around the globe.&#xA;In this post, we’ll look back on the project’s progress over the course of 2016, and we’ll also preview what 2017 has in store.</description>
    </item>
    <item>
      <title>Apache Flink 1.1.3 Released</title>
      <link>https://flink.apache.org/2016/10/12/apache-flink-1.1.3-released/</link>
      <pubDate>Wed, 12 Oct 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/10/12/apache-flink-1.1.3-released/</guid>
      <description>The Apache Flink community released the next bugfix version of the Apache Flink 1.1. series.&#xA;We recommend all users to upgrade to Flink 1.1.3.&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.3&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.&#xA;Note for RocksDB Backend Users # It is highly recommended to use the &amp;ldquo;fully async&amp;rdquo; mode for the RocksDB state backend. The &amp;ldquo;fully async&amp;rdquo; mode will most likely allow you to easily upgrade to Flink 1.</description>
    </item>
    <item>
      <title>Apache Flink 1.1.2 Released</title>
      <link>https://flink.apache.org/2016/09/05/apache-flink-1.1.2-released/</link>
      <pubDate>Mon, 05 Sep 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/09/05/apache-flink-1.1.2-released/</guid>
      <description>The Apache Flink community released another bugfix version of the Apache Flink 1.1. series.&#xA;We recommend all users to upgrade to Flink 1.1.2.&#xA;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-streaming-java_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.flink&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;flink-clients_2.10&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.1.2&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; You can find the binaries on the updated Downloads page.&#xA;Release Notes - Flink - Version 1.1.2 [FLINK-4236] - Flink Dashboard stops showing list of uploaded jars if main method cannot be looked up [FLINK-4309] - Potential null pointer dereference in DelegatingConfiguration#keySet() [FLINK-4334] - Shaded Hadoop1 jar not fully excluded in Quickstart [FLINK-4341] - Kinesis connector does not emit maximum watermark properly [FLINK-4402] - Wrong metrics parameter names in documentation [FLINK-4409] - class conflict between jsr305-1.</description>
    </item>
    <item>
      <title>Flink Forward 2016: Announcing Schedule, Keynotes, and Panel Discussion</title>
      <link>https://flink.apache.org/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/</link>
      <pubDate>Wed, 24 Aug 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/</guid>
      <description>An update for the Flink community: the Flink Forward 2016 schedule is now available online. This year&#39;s event will include 2 days of talks from stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and more. Following the talks is a full day of hands-on Flink training.&#xA;Ted Dunning has been announced as a keynote speaker at the event. Ted is the VP of Incubator at Apache Software Foundation, the Chief Application Architect at MapR Technologies, and a mentor on many recent projects.</description>
    </item>
    <item>
      <title>Announcing Apache Flink 1.1.0</title>
      <link>https://flink.apache.org/2016/08/04/announcing-apache-flink-1.1.0/</link>
      <pubDate>Thu, 04 Aug 2016 13:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/08/04/announcing-apache-flink-1.1.0/</guid>
      <description>Important: The Maven artifacts published with version 1.1.0 on Maven central have a Hadoop dependency issue. It is highly recommended to use 1.1.1 or 1.1.1-hadoop1 as the Flink version. The Apache Flink community is pleased to announce the availability of Flink 1.1.0.&#xA;This release is the first major release in the 1.X.X series of releases, which maintains API compatibility with 1.0.0. This means that your applications written against stable APIs of Flink 1.</description>
    </item>
    <item>
      <title>Flink 1.1.1 Released</title>
      <link>https://flink.apache.org/2016/08/04/flink-1.1.1-released/</link>
      <pubDate>Thu, 04 Aug 2016 09:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/08/04/flink-1.1.1-released/</guid>
      <description>Today, the Flink community released Flink version 1.1.1.&#xA;The Maven artifacts published on Maven central for 1.1.0 had a Hadoop dependency issue: No Hadoop 1 specific version (with version 1.1.0-hadoop1) was deployed and 1.1.0 artifacts have a dependency on Hadoop 1 instead of Hadoop 2.&#xA;This was fixed with this release and we highly recommend all users to use this version of Flink by bumping your Flink dependencies to version 1.</description>
    </item>
    <item>
      <title>Stream Processing for Everyone with SQL and Apache Flink</title>
      <link>https://flink.apache.org/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/</link>
      <pubDate>Tue, 24 May 2016 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/</guid>
      <description>The capabilities of open source systems for distributed stream processing have evolved significantly over the last years. Initially, the first systems in the field (notably Apache Storm) provided low latency processing, but were limited to at-least-once guarantees, processing-time semantics, and rather low-level APIs. Since then, several new systems emerged and pushed the state of the art of open source stream processing in several dimensions. Today, users of Apache Flink or Apache Beam can use fluent Scala and Java APIs to implement stream processing jobs that operate in event-time with exactly-once semantics at high throughput and low latency.</description>
    </item>
    <item>
      <title>Flink 1.0.3 Released</title>
      <link>https://flink.apache.org/2016/05/11/flink-1.0.3-released/</link>
      <pubDate>Wed, 11 May 2016 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/05/11/flink-1.0.3-released/</guid>
      <description>Today, the Flink community released Flink version 1.0.3, the third bugfix release of the 1.0 series.&#xA;We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.3 and updating the binaries on the server. You can find the binaries on the updated Downloads page.&#xA;Fixed Issues # Bug # [FLINK-3790] [streaming] Use proper hadoop config in rolling sink [FLINK-3840] Remove Testing Files in RocksDB Backend [FLINK-3835] [optimizer] Add input id to JSON plan to resolve ambiguous input names [hotfix] OptionSerializer.</description>
    </item>
    <item>
      <title>Flink 1.0.2 Released</title>
      <link>https://flink.apache.org/2016/04/22/flink-1.0.2-released/</link>
      <pubDate>Fri, 22 Apr 2016 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/04/22/flink-1.0.2-released/</guid>
      <description>Today, the Flink community released Flink version 1.0.2, the second bugfix release of the 1.0 series.&#xA;We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.2 and updating the binaries on the server. You can find the binaries on the updated Downloads page.&#xA;Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countElements() to &amp;lsquo;public&amp;rsquo; [FLINK-3762] [core] Enable Kryo reference tracking [FLINK-3732] [core] Fix potential null deference in ExecutionConfig#equals() [FLINK-3760] Fix StateDescriptor.</description>
    </item>
    <item>
      <title>Flink Forward 2016 Call for Submissions Is Now Open</title>
      <link>https://flink.apache.org/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/</link>
      <pubDate>Thu, 14 Apr 2016 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/</guid>
      <description>We are happy to announce that the call for submissions for Flink Forward 2016 is now open! The conference will take place September 12-14, 2016 in Berlin, Germany, bringing together the open source stream processing community. Most Apache Flink committers will attend the conference, making it the ideal venue to learn more about the project and its roadmap and connect with the community.&#xA;The conference welcomes submissions on everything Flink-related, including experiences with using Flink, products based on Flink, technical talks on extending Flink, as well as connecting Flink with other open source or proprietary software.</description>
    </item>
    <item>
      <title>Introducing Complex Event Processing (CEP) with Apache Flink</title>
      <link>https://flink.apache.org/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/</link>
      <pubDate>Wed, 06 Apr 2016 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/</guid>
      <description>With the ubiquity of sensor networks and smart devices continuously collecting more and more data, we face the challenge to analyze an ever growing stream of data in near real-time. Being able to react quickly to changing trends or to deliver up to date business intelligence can be a decisive factor for a company’s success or failure. A key problem in real time processing is the detection of event patterns in data streams.</description>
    </item>
    <item>
      <title>Flink 1.0.1 Released</title>
      <link>https://flink.apache.org/2016/04/06/flink-1.0.1-released/</link>
      <pubDate>Wed, 06 Apr 2016 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/04/06/flink-1.0.1-released/</guid>
      <description>Today, the Flink community released Flink version 1.0.1, the first bugfix release of the 1.0 series.&#xA;We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.1 and updating the binaries on the server. You can find the binaries on the updated Downloads page.&#xA;Fixed Issues # Bug [FLINK-3179] - Combiner is not injected if Reduce or GroupReduce input is explicitly partitioned [FLINK-3472] - JDBCInputFormat.</description>
    </item>
    <item>
      <title>Announcing Apache Flink 1.0.0</title>
      <link>https://flink.apache.org/2016/03/08/announcing-apache-flink-1.0.0/</link>
      <pubDate>Tue, 08 Mar 2016 13:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/03/08/announcing-apache-flink-1.0.0/</guid>
      <description>The Apache Flink community is pleased to announce the availability of the 1.0.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on improving the experience of writing and executing data stream processing pipelines in production.&#xA;Flink version 1.0.0 marks the beginning of the 1.X.X series of releases, which will maintain backwards compatibility with 1.0.0. This means that applications written against stable APIs of Flink 1.</description>
    </item>
    <item>
      <title>Flink 0.10.2 Released</title>
      <link>https://flink.apache.org/2016/02/11/flink-0.10.2-released/</link>
      <pubDate>Thu, 11 Feb 2016 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2016/02/11/flink-0.10.2-released/</guid>
      <description>Today, the Flink community released Flink version 0.10.2, the second bugfix release of the 0.10 series.&#xA;We recommend all users updating to this release by bumping the version of your Flink dependencies to 0.10.2 and updating the binaries on the server.&#xA;Issues fixed # FLINK-3242: Adjust StateBackendITCase for 0.10 signatures of state backends FLINK-3236: Flink user code classloader as parent classloader from Flink core classes FLINK-2962: Cluster startup script refers to unused variable FLINK-3151: Downgrade to Netty version 4.</description>
    </item>
    <item>
      <title>Flink 2015: A year in review, and a lookout to 2016</title>
      <link>https://flink.apache.org/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/</link>
      <pubDate>Fri, 18 Dec 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/</guid>
      <description>With 2015 ending, we thought that this would be good time to reflect on the amazing work done by the Flink community over this past year, and how much this community has grown.&#xA;Overall, we have seen Flink grow in terms of functionality from an engine to one of the most complete open-source stream processing frameworks available. The community grew from a relatively small and geographically focused team, to a truly global, and one of the largest big data communities in the the Apache Software Foundation.</description>
    </item>
    <item>
      <title>Storm Compatibility in Apache Flink: How to run existing Storm topologies on Flink</title>
      <link>https://flink.apache.org/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/</link>
      <pubDate>Fri, 11 Dec 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/</guid>
      <description>Apache Storm was one of the first distributed and scalable stream processing systems available in the open source space offering (near) real-time tuple-by-tuple processing semantics. Initially released by the developers at Backtype in 2011 under the Eclipse open-source license, it became popular very quickly. Only shortly afterwards, Twitter acquired Backtype. Since then, Storm has been growing in popularity, is used in production at many big companies, and is the de-facto industry standard for big data stream processing.</description>
    </item>
    <item>
      <title>Introducing Stream Windows in Apache Flink</title>
      <link>https://flink.apache.org/2015/12/04/introducing-stream-windows-in-apache-flink/</link>
      <pubDate>Fri, 04 Dec 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/12/04/introducing-stream-windows-in-apache-flink/</guid>
      <description>The data analysis space is witnessing an evolution from batch to stream processing for many use cases. Although batch can be handled as a special case of stream processing, analyzing never-ending streaming data often requires a shift in the mindset and comes with its own terminology (for example, “windowing” and “at-least-once”/”exactly-once” processing). This shift and the new terminology can be quite confusing for people being new to the space of stream processing.</description>
    </item>
    <item>
      <title>Flink 0.10.1 released</title>
      <link>https://flink.apache.org/2015/11/27/flink-0.10.1-released/</link>
      <pubDate>Fri, 27 Nov 2015 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/11/27/flink-0.10.1-released/</guid>
      <description>Today, the Flink community released the first bugfix release of the 0.10 series of Flink.&#xA;We recommend all users updating to this release, by bumping the version of your Flink dependencies and updating the binaries on the server.&#xA;Issues fixed # [FLINK-2879] - Links in documentation are broken [FLINK-2938] - Streaming docs not in sync with latest state changes [FLINK-2942] - Dangling operators in web UI&amp;#39;s program visualization (non-deterministic) [FLINK-2967] - TM address detection might not always detect the right interface on slow networks / overloaded JMs [FLINK-2977] - Cannot access HBase in a Kerberos secured Yarn cluster [FLINK-2987] - Flink 0.</description>
    </item>
    <item>
      <title>Announcing Apache Flink 0.10.0</title>
      <link>https://flink.apache.org/2015/11/16/announcing-apache-flink-0.10.0/</link>
      <pubDate>Mon, 16 Nov 2015 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/11/16/announcing-apache-flink-0.10.0/</guid>
      <description>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.&#xA;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.</description>
    </item>
    <item>
      <title>Off-heap Memory in Apache Flink and the curious JIT compiler</title>
      <link>https://flink.apache.org/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/</link>
      <pubDate>Wed, 16 Sep 2015 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/</guid>
      <description>Running data-intensive code in the JVM and making it well-behaved is tricky. Systems that put billions of data objects naively onto the JVM heap face unpredictable OutOfMemoryErrors and Garbage Collection stalls. Of course, you still want to to keep your data in memory as much as possible, for speed and responsiveness of the processing applications. In that context, &amp;ldquo;off-heap&amp;rdquo; has become almost something like a magic word to solve these problems.</description>
    </item>
    <item>
      <title>Announcing Flink Forward 2015</title>
      <link>https://flink.apache.org/2015/09/03/announcing-flink-forward-2015/</link>
      <pubDate>Thu, 03 Sep 2015 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/09/03/announcing-flink-forward-2015/</guid>
      <description>Flink Forward 2015 is the first conference with Flink at its center that aims to bring together the Apache Flink community in a single place. The organizers are starting this conference in October 12 and 13 from Berlin, the place where Apache Flink started.&#xA;The conference program has been announced by the organizers and a program committee consisting of Flink PMC members. The agenda contains talks from industry and academia as well as a dedicated session on hands-on Flink training.</description>
    </item>
    <item>
      <title>Apache Flink 0.9.1 available</title>
      <link>https://flink.apache.org/2015/09/01/apache-flink-0.9.1-available/</link>
      <pubDate>Tue, 01 Sep 2015 08:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/09/01/apache-flink-0.9.1-available/</guid>
      <description>The Flink community is happy to announce that Flink 0.9.1 is now available.&#xA;0.9.1 is a maintenance release, which includes a lot of minor fixes across several parts of the system. We suggest all users of Flink to work with this latest stable version.&#xA;Download the release and [check out the documentation]({{ site.docs-stable }}). Feedback through the Flink mailing lists is, as always, very welcome!&#xA;The following issues were fixed for this release:</description>
    </item>
    <item>
      <title>Introducing Gelly: Graph Processing with Apache Flink</title>
      <link>https://flink.apache.org/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/</link>
      <pubDate>Mon, 24 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/</guid>
      <description>This blog post introduces Gelly, Apache Flink&amp;rsquo;s graph-processing API and library. Flink&amp;rsquo;s native support for iterations makes it a suitable platform for large-scale graph analytics. By leveraging delta iterations, Gelly is able to map various graph processing models such as vertex-centric or gather-sum-apply to Flink dataflows.&#xA;Gelly allows Flink users to perform end-to-end data analysis in a single system. Gelly can be seamlessly used with Flink&amp;rsquo;s DataSet API, which means that pre-processing, graph creation, analysis, and post-processing can be done in the same application.</description>
    </item>
    <item>
      <title>Announcing Apache Flink 0.9.0</title>
      <link>https://flink.apache.org/2015/06/24/announcing-apache-flink-0.9.0/</link>
      <pubDate>Wed, 24 Jun 2015 14:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/06/24/announcing-apache-flink-0.9.0/</guid>
      <description>The Apache Flink community is pleased to announce the availability of the 0.9.0 release. The release is the result of many months of hard work within the Flink community. It contains many new features and improvements which were previewed in the 0.9.0-milestone1 release and have been polished since then. This is the largest Flink release so far.&#xA;Download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, very welcome!</description>
    </item>
    <item>
      <title>April 2015 in the Flink community</title>
      <link>https://flink.apache.org/2015/05/14/april-2015-in-the-flink-community/</link>
      <pubDate>Thu, 14 May 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/05/14/april-2015-in-the-flink-community/</guid>
      <description>April was an packed month for Apache Flink.&#xA;Flink runner for Google Cloud Dataflow # A Flink runner for Google Cloud Dataflow was announced. See the blog posts by data Artisans and the Google Cloud Platform Blog. Google Cloud Dataflow programs can be written using and open-source SDK and run in multiple backends, either as a managed service inside Google&amp;rsquo;s infrastructure, or leveraging open source runners, including Apache Flink.&#xA;Flink 0.</description>
    </item>
    <item>
      <title>Juggling with Bits and Bytes</title>
      <link>https://flink.apache.org/2015/05/11/juggling-with-bits-and-bytes/</link>
      <pubDate>Mon, 11 May 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/05/11/juggling-with-bits-and-bytes/</guid>
      <description>How Apache Flink operates on binary data # Nowadays, a lot of open-source systems for analyzing large data sets are implemented in Java or other JVM-based programming languages. The most well-known example is Apache Hadoop, but also newer frameworks such as Apache Spark, Apache Drill, and also Apache Flink run on JVMs. A common challenge that JVM-based data analysis engines face is to store large amounts of data in memory - both for caching and for efficient processing such as sorting and joining of data.</description>
    </item>
    <item>
      <title>Announcing Flink 0.9.0-milestone1 preview release</title>
      <link>https://flink.apache.org/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/</link>
      <pubDate>Mon, 13 Apr 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/</guid>
      <description>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.&#xA;You can download the release here and check out the latest documentation here.</description>
    </item>
    <item>
      <title>March 2015 in the Flink community</title>
      <link>https://flink.apache.org/2015/04/07/march-2015-in-the-flink-community/</link>
      <pubDate>Tue, 07 Apr 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/04/07/march-2015-in-the-flink-community/</guid>
      <description>March has been a busy month in the Flink community.&#xA;Scaling ALS # Flink committers employed at data Artisans published a blog post on how they scaled matrix factorization with Flink and Google Compute Engine to matrices with 28 billion elements.&#xA;Learn about the internals of Flink # The community has started an effort to better document the internals of Flink. Check out the first articles on the Flink wiki on how Flink manages memory, how tasks in Flink exchange data, type extraction and serialization in Flink, as well as how Flink builds on Akka for distributed coordination.</description>
    </item>
    <item>
      <title>Peeking into Apache Flink&#39;s Engine Room</title>
      <link>https://flink.apache.org/2015/03/13/peeking-into-apache-flinks-engine-room/</link>
      <pubDate>Fri, 13 Mar 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/03/13/peeking-into-apache-flinks-engine-room/</guid>
      <description>Join Processing in Apache Flink # Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. Therefore, join processing serves as a good example to discuss the salient design points and implementation details of a data processing system.</description>
    </item>
    <item>
      <title>February 2015 in the Flink community</title>
      <link>https://flink.apache.org/2015/03/02/february-2015-in-the-flink-community/</link>
      <pubDate>Mon, 02 Mar 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/03/02/february-2015-in-the-flink-community/</guid>
      <description>February might be the shortest month of the year, but this does not mean that the Flink community has not been busy adding features to the system and fixing bugs. Here’s a rundown of the activity in the Flink community last month.&#xA;0.8.1 release # Flink 0.8.1 was released. This bugfixing release resolves a total of 22 issues.&#xA;New committer # Max Michels has been voted a committer by the Flink PMC.</description>
    </item>
    <item>
      <title>Introducing Flink Streaming</title>
      <link>https://flink.apache.org/2015/02/09/introducing-flink-streaming/</link>
      <pubDate>Mon, 09 Feb 2015 12:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/02/09/introducing-flink-streaming/</guid>
      <description>This post is the first of a series of blog posts on Flink Streaming, the recent addition to Apache Flink that makes it possible to analyze continuous data sources in addition to static files. Flink Streaming uses the pipelined Flink engine to process data streams in real time and offers a new API including definition of flexible windows.&#xA;In this post, we go through an example that uses the Flink Streaming API to compute statistics on stock market data that arrive continuously and combine the stock market data with Twitter streams.</description>
    </item>
    <item>
      <title>January 2015 in the Flink community</title>
      <link>https://flink.apache.org/2015/02/04/january-2015-in-the-flink-community/</link>
      <pubDate>Wed, 04 Feb 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/02/04/january-2015-in-the-flink-community/</guid>
      <description>Happy 2015! Here is a (hopefully digestible) summary of what happened last month in the Flink community.&#xA;0.8.0 release # Flink 0.8.0 was released. See here for the release notes.&#xA;Flink roadmap # The community has published a roadmap for 2015 on the Flink wiki. Check it out to see what is coming up in Flink, and pick up an issue to contribute!&#xA;Articles in the press # The Apache Software Foundation announced Flink as a Top-Level Project.</description>
    </item>
    <item>
      <title>Apache Flink 0.8.0 available</title>
      <link>https://flink.apache.org/2015/01/21/apache-flink-0.8.0-available/</link>
      <pubDate>Wed, 21 Jan 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/01/21/apache-flink-0.8.0-available/</guid>
      <description>We are pleased to announce the availability of Flink 0.8.0. This release includes new user-facing features as well as performance and bug fixes, extends the support for filesystems and introduces the Scala API and flexible windowing semantics for Flink Streaming. A total of 33 people have contributed to this release, a big thanks to all of them!&#xA;Download Flink 0.8.0&#xA;See the release changelog&#xA;Overview of major new features # Extended filesystem support: The former DistributedFileSystem interface has been generalized to HadoopFileSystem now supporting all sub classes of org.</description>
    </item>
    <item>
      <title>December 2014 in the Flink community</title>
      <link>https://flink.apache.org/2015/01/06/december-2014-in-the-flink-community/</link>
      <pubDate>Tue, 06 Jan 2015 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2015/01/06/december-2014-in-the-flink-community/</guid>
      <description>This is the first blog post of a “newsletter” like series where we give a summary of the monthly activity in the Flink community. As the Flink project grows, this can serve as a &amp;ldquo;tl;dr&amp;rdquo; for people that are not following the Flink dev and user mailing lists, or those that are simply overwhelmed by the traffic.&#xA;Flink graduation # The biggest news is that the Apache board approved Flink as a top-level Apache project!</description>
    </item>
    <item>
      <title>Hadoop Compatibility in Flink</title>
      <link>https://flink.apache.org/2014/11/18/hadoop-compatibility-in-flink/</link>
      <pubDate>Tue, 18 Nov 2014 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2014/11/18/hadoop-compatibility-in-flink/</guid>
      <description>Apache Hadoop is an industry standard for scalable analytical data processing. Many data analysis applications have been implemented as Hadoop MapReduce jobs and run in clusters around the world. Apache Flink can be an alternative to MapReduce and improves it in many dimensions. Among other features, Flink provides much better performance and offers APIs in Java and Scala, which are very easy to use. Similar to Hadoop, Flink’s APIs provide interfaces for Mapper and Reducer functions, as well as Input- and OutputFormats along with many more operators.</description>
    </item>
    <item>
      <title>Apache Flink 0.7.0 available</title>
      <link>https://flink.apache.org/2014/11/04/apache-flink-0.7.0-available/</link>
      <pubDate>Tue, 04 Nov 2014 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2014/11/04/apache-flink-0.7.0-available/</guid>
      <description>We are pleased to announce the availability of Flink 0.7.0. This release includes new user-facing features as well as performance and bug fixes, brings the Scala and Java APIs in sync, and introduces Flink Streaming. A total of 34 people have contributed to this release, a big thanks to all of them!&#xA;Download Flink 0.7.0 here&#xA;See the release changelog here&#xA;Overview of major new features # Flink Streaming: The gem of the 0.</description>
    </item>
    <item>
      <title>Upcoming Events</title>
      <link>https://flink.apache.org/2014/10/03/upcoming-events/</link>
      <pubDate>Fri, 03 Oct 2014 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2014/10/03/upcoming-events/</guid>
      <description>We are happy to announce several upcoming Flink events both in Europe and the US. Starting with a Flink hackathon in Stockholm (Oct 8-9) and a talk about Flink at the Stockholm Hadoop User Group (Oct 8). This is followed by the very first Flink Meetup in Berlin (Oct 15). In the US, there will be two Flink Meetup talks: the first one at the Pasadena Big Data User Group (Oct 29) and the second one at Silicon Valley Hands On Programming Events (Nov 4).</description>
    </item>
    <item>
      <title>Apache Flink 0.6.1 available</title>
      <link>https://flink.apache.org/2014/09/26/apache-flink-0.6.1-available/</link>
      <pubDate>Fri, 26 Sep 2014 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2014/09/26/apache-flink-0.6.1-available/</guid>
      <description>We are happy to announce the availability of Flink 0.6.1.&#xA;0.6.1 is a maintenance release, which includes minor fixes across several parts of the system. We suggest all users of Flink to work with this newest version.&#xA;Download the release today.</description>
    </item>
    <item>
      <title>Apache Flink 0.6 available</title>
      <link>https://flink.apache.org/2014/08/26/apache-flink-0.6-available/</link>
      <pubDate>Tue, 26 Aug 2014 10:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/2014/08/26/apache-flink-0.6-available/</guid>
      <description>We are happy to announce the availability of Flink 0.6. This is the first release of the system inside the Apache Incubator and under the name Flink. Releases up to 0.5 were under the name Stratosphere, the academic and open source project that Flink originates from.&#xA;What is Flink? # Apache Flink is a general-purpose data processing engine for clusters. It runs on YARN clusters on top of data stored in Hadoop, as well as stand-alone.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Common Rules</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-common/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-common/</guid>
      <description>Code Style and Quality Guide — Common Rules # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # 1. Copyright # Each file must include the Apache license information as a header.&#xA;/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Components Guide</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-components/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-components/</guid>
      <description>Code Style and Quality Guide — Components Guide # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Component Specific Guidelines # Additional guidelines about changes in specific components.&#xA;Configuration Changes # Where should the config option go?&#xA;‘flink-conf.yaml’: All configuration that pertains to execution behavior that one may want to standardize across jobs.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Formatting Guide</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-formatting/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-formatting/</guid>
      <description>Code Style and Quality Guide — Formatting Guide # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Java Code Formatting Style # We recommend to set up the IDE to automatically check the code style. Please follow the IDE Setup Guide to set up spotless and checkstyle .&#xA;License # Apache license headers.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Java</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-java/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-java/</guid>
      <description>Code Style and Quality Guide — Java # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Java Language Features and Libraries # Preconditions and Log Statements # Never concatenate strings in the parameters Don’t: Preconditions.checkState(value &amp;lt;= threshold, &amp;quot;value must be below &amp;quot; + threshold) Don’t: LOG.debug(&amp;quot;value is &amp;quot; + value) Do: Preconditions.checkState(value &amp;lt;= threshold, &amp;quot;value must be below %s&amp;quot;, threshold) Do: LOG.</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Pull Requests &amp; Changes</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-pull-requests/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-pull-requests/</guid>
      <description>Code Style and Quality Guide — Pull Requests &amp;amp; Changes # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Rationale: We ask contributors to put in a little bit of extra effort to bring pull requests into a state that they can be more easily and more thoroughly reviewed. This helps the community in many ways:</description>
    </item>
    <item>
      <title>Code Style and Quality Guide — Scala</title>
      <link>https://flink.apache.org/how-to-contribute/code-style-and-quality-scala/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/how-to-contribute/code-style-and-quality-scala/</guid>
      <description>Code Style and Quality Guide — Scala # Preamble # Pull Requests &amp;amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Scala Language Features # Where to use (and not use) Scala # We use Scala for Scala APIs or pure Scala Libraries.&#xA;We do not use Scala in the core APIs and runtime components. We aim to remove existing Scala use (code and dependencies) from those components.</description>
    </item>
    <item>
      <title>flink-packages.org</title>
      <link>https://flink.apache.org/flink-packages/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/flink-packages/</guid>
      <description>What is the Flink Kubernetes Operator? # All information on the flink-packages can be found on the flink-packages website.</description>
    </item>
    <item>
      <title>Material</title>
      <link>https://flink.apache.org/material/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/material/</guid>
      <description>Material # Apache Flink Logos # We provide the Apache Flink logo in different sizes and formats. You can download all variants (7.4 MB) or just pick the one you need from this page.&#xA;Portable Network Graphics (PNG) # Colored logo White filled logo Black outline logo Sizes (px) 50x50, 100x100, 200x200, 500x500, 1000x1000 Sizes (px): 50x50, 100x100, 200x200, 500x500, 1000x1000&#xA;Sizes (px): 50x50, 100x100, 200x200, 500x500, 1000x1000 You can find more variants of the logo in this directory or download all variants (7.</description>
    </item>
    <item>
      <title>What is Flink ML?</title>
      <link>https://flink.apache.org/what-is-flink-ml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink-ml/</guid>
      <description>What is Stateful Functions? # All information on Flink ML can be found on the Flink ML website.</description>
    </item>
    <item>
      <title>What is Paimon(incubating) (formerly Flink Table Store)?</title>
      <link>https://flink.apache.org/what-is-flink-table-store/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-flink-table-store/</guid>
      <description>What is Apache Paimon (formerly Flink Table Store)? # The Flink Table Store had joined Apache Incubator as Apache Paimon(incubating). All information on the Apache Paimon(incubating) can be found on the Paimon website.</description>
    </item>
    <item>
      <title>What is Stateful Functions?</title>
      <link>https://flink.apache.org/what-is-stateful-functions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-stateful-functions/</guid>
      <description>What is Stateful Functions? # All information on Stateful Functions can be found on the Stateful Functions project website.</description>
    </item>
    <item>
      <title>What is the Flink Kubernetes Operator?</title>
      <link>https://flink.apache.org/what-is-the-flink-kubernetes-operator/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flink.apache.org/what-is-the-flink-kubernetes-operator/</guid>
      <description>What is the Flink Kubernetes Operator? # All information on the Flink Kubernetes Operator can be found on the Flink Kubernetes Operator website.</description>
    </item>
  </channel>
</rss>
