This is an automated email from the ASF dual-hosted git repository.

dwysakowicz pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git

commit 672b57a73162fe69277eb08977e3d5f7868affe8
Author: Stephan Ewen <se...@apache.org>
AuthorDate: Fri Sep 10 09:02:07 2021 +0200

    Add Apache Flink release 1.14.0 Blog post and update links and scripts.
    
    This closes #468
    
    Co-authored-by: Joe Moser <j...@ververica.com>
    Co-authored-by: Daisy T <dais...@gmx.com>
---
 _config.yml                                        |  61 ++--
 _posts/2021-09-29-release-1.14.0.md                | 359 +++++++++++++++++++++
 .../buffer_debloating.png                          | Bin 0 -> 141847 bytes
 .../fine_grained_resource_management.png           | Bin 0 -> 94168 bytes
 .../fine_grained_resource_management.svg           | 261 +++++++++++++++
 .../2021-09-25-release-1.14.0/hybrid_source.png    | Bin 0 -> 61706 bytes
 q/gradle-quickstart.sh                             |   2 +-
 q/quickstart-SNAPSHOT.sh                           |   2 +-
 q/quickstart-scala-SNAPSHOT.sh                     |   2 +-
 q/quickstart-scala.sh                              |   2 +-
 q/quickstart.sh                                    |   2 +-
 q/sbt-quickstart.sh                                |   4 +-
 12 files changed, 655 insertions(+), 40 deletions(-)

diff --git a/_config.yml b/_config.yml
index d2f9029..254f0a7 100644
--- a/_config.yml
+++ b/_config.yml
@@ -56,6 +56,27 @@ FLINK_STATEFUN_GITHUB_REPO_NAME: flink-statefun
 
 flink_releases:
   -
+    version_short: "1.14"
+    binary_release:
+      name: "Apache Flink 1.14.0"
+      scala_211:
+        id: "1140-download_211"
+        url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.11.tgz";
+        asc_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.11.tgz.asc";
+        sha512_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.11.tgz.sha512";
+      scala_212:
+        id: "1132-download_212"
+        url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.12.tgz";
+        asc_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.12.tgz.asc";
+        sha512_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-bin-scala_2.12.tgz.sha512";
+    source_release:
+      name: "Apache Flink 1.14.0"
+      id: "1132-download-source"
+      url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.14.0/flink-1.14.0-src.tgz";
+      asc_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-src.tgz.asc";
+      sha512_url: 
"https://downloads.apache.org/flink/flink-1.14.0/flink-1.14.0-src.tgz.sha512";
+    release_notes_url: 
"https://nightlies.apache.org/flink/flink-docs-release-1.14/release-notes/flink-1.14";
+  -
     version_short: "1.13"
     binary_release:
       name: "Apache Flink 1.13.2"
@@ -106,36 +127,6 @@ flink_releases:
         url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.12.5/flink-avro-1.12.5.jar
         asc_url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.12.5/flink-avro-1.12.5.jar.asc
         sha_url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.12.5/flink-avro-1.12.5.jar.sha1
-  -
-    version_short: "1.11"
-    binary_release:
-      name: "Apache Flink 1.11.4"
-      scala_211:
-        id: "1114-download_211"
-        url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.11.tgz";
-        asc_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.11.tgz.asc";
-        sha512_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.11.tgz.sha512";
-      scala_212:
-        id: "1114-download_212"
-        url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.12.tgz";
-        asc_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.12.tgz.asc";
-        sha512_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-bin-scala_2.12.tgz.sha512";
-    source_release:
-      name: "Apache Flink 1.11.4"
-      id: "1114-download-source"
-      url: 
"https://www.apache.org/dyn/closer.lua/flink/flink-1.11.4/flink-1.11.4-src.tgz";
-      asc_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-src.tgz.asc";
-      sha512_url: 
"https://downloads.apache.org/flink/flink-1.11.4/flink-1.11.4-src.tgz.sha512";
-    release_notes_url: 
"https://nightlies.apache.org/flink/flink-docs-release-1.11/release-notes/flink-1.11.html";
-    optional_components:
-      -
-        name: "Avro SQL Format"
-        category: "SQL Formats"
-        scala_dependent: false
-        id: 1114-sql-format-avro
-        url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.11.4/flink-avro-1.11.4.jar
-        asc_url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.11.4/flink-avro-1.11.4.jar.asc
-        sha_url: 
https://repo.maven.apache.org/maven2/org/apache/flink/flink-avro/1.11.4/flink-avro-1.11.4.jar.sha1
 
 flink_statefun_releases:
   -
@@ -184,6 +175,10 @@ component_releases:
 release_archive:
     flink:
       -
+        version_short: "1.14"
+        version_long: 1.14.0
+        release_date: 2021-09-29
+      -
         version_short: "1.13"
         version_long: 1.13.2
         release_date: 2021-08-02
@@ -533,10 +528,10 @@ release_archive:
 
 # Version numbers used in the text for stable and snapshot versions,
 # e.g. "Documentation for {{ site.stable }".
-stable: "1.13"
-snapshot: "1.14"
+stable: "1.14"
+snapshot: "1.15"
 
-docs-stable: "https://nightlies.apache.org/flink/flink-docs-release-1.13";
+docs-stable: "https://nightlies.apache.org/flink/flink-docs-release-1.14";
 docs-snapshot: "https://nightlies.apache.org/flink/flink-docs-master";
 
 docs-statefun-stable: 
"https://nightlies.apache.org/flink/flink-statefun-docs-release-3.1";
diff --git a/_posts/2021-09-29-release-1.14.0.md 
b/_posts/2021-09-29-release-1.14.0.md
new file mode 100644
index 0000000..af93b52
--- /dev/null
+++ b/_posts/2021-09-29-release-1.14.0.md
@@ -0,0 +1,359 @@
+---
+layout: post 
+title:  "Apache Flink 1.14.0 Release Announcement"
+date: 2021-09-29T08:00:00.000Z 
+categories: news 
+authors:
+- stephan:
+  name: "Stephan Ewen"
+  twitter: "StephanEwen"
+- joemoe:
+  name: "Johannes Moser"
+
+excerpt: The Apache Flink community is excited to announce the release of 
Flink 1.14.0! More than 200 contributor worked on over 1,000 issues. The 
release brings exciting new features like a more seamless streaming/batch 
integration, automatic network memory tuning, a hybrid source to switch data 
streams between storgage systems (e.g., Kafka/S3), Fine-grained resource 
management, PyFlink performance and debugging enhancements, and a Pulsar 
connector. 
+
+---
+
+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.
+
+This release brings many new features and improvements in areas such as the 
SQL API, more connector support, checkpointing, and PyFlink.
+A major area of changes in this release is the integrated streaming & batch 
experience. We believe
+that, in practice, unbounded stream processing goes hand-in-hand with bounded- 
and batch processing tasks in practice,
+because many use cases require processing historic data from various sources 
alongside streaming data.
+Examples are data exploration when developing new applications, bootstrapping 
state for new applications, training
+models to be applied in a streaming application, re-processing data after 
fixes/upgrades, and .
+
+In Flink 1.14, we finally made it possible to **mix bounded and unbounded 
streams in an application**:
+Flink now supports taking checkpoints of applications that are partially 
running and partially finished (some
+operators reached the end of the bounded inputs). Additionally, **bounded 
streams now take a final checkpoint**
+when reaching their end to ensure smooth committing of results in sinks.
+
+The **batch execution mode now supports programs that use a mixture of the 
DataStream API and the SQL/Table API**
+(previously only pure Table/SQL or DataStream programs).
+
+The unified Source and Sink APIs have gotten an update, and we started 
**consolidating the connector ecosystem around the unified APIs**. We added a 
new **hybrid source** can bridge between multiple storage systems.
+You can now do things like read old data from Amazon S3 and then switch over 
to Apache Kafka.
+
+In addition, this release furthers our initiative in making Flink more 
self-tuning and
+easier to operate, without necessarily requiring a lot of 
Stream-Processor-specific knowledge.
+We started this initiative in the previous release with [reactive 
scaling](/news/2021/05/03/release-1.13.0.html#reactive-scaling)
+and are now adding **automatic network memory tuning** (*a.k.a. Buffer 
Debloating*).
+This feature speeds up checkpoints under high load while maintaining high 
throughput and without
+increasing checkpoint size. The mechanism continuously adjusts the network 
buffers to ensure the best
+throughput while having minimal in-flight data. See the [Buffer Debloating 
section](#buffer-debloating)
+for more details.
+
+There are many more improvements and new additions throughout various 
components, as we discuss below.
+We also had to say goodbye to some features that have been superceded by newer 
ones in recent releases,
+most prominently we are **removing the old SQL execution engine** and are
+**removing the active integration with Apache Mesos**.
+
+We hope you like the new release and we'd be eager to learn about your 
experience with it, which yet
+unsolved problems it solves, what new use-cases it unlocks for you.
+
+{% toc %}
+
+# The Unified Batch and Stream Processing Experience
+
+One of Flink's unique characteristics is how it integrates stream- and batch 
processing,
+using unified APIs and a runtime that supports multiple execution paradigms.
+
+As motivated in the introduction, we believe that stream- and batch processing 
always go hand in hand. This quote from
+a [report on Facebook's streaming 
infrastructure](https://research.fb.com/wp-content/uploads/2016/11/realtime_data_processing_at_facebook.pdf)
+echos this sentiment nicely.
+
+> Streaming versus batch processing is not an either/or decision. Originally, 
all data warehouse
+> processing at Facebook was batch processing. We began developing Puma and 
Swift about five years
+> ago. As we showed in Section [...], using a mix of streaming and batch 
processing can speed up
+> long pipelines by hours.
+
+Having both the real-time and the historic computations in the same engine 
also ensures consistency
+between semantics and makes results well comparable. Here is an [article by 
Alibaba](https://www.ververica.com/blog/apache-flinks-stream-batch-unification-powers-alibabas-11.11-in-2020)
+about unifying business reporting with Apache Flink and getting consistent 
reports that way.
+
+While unified streaming & batch are already possible in earlier versions, this 
release brings
+some features that unlock new use cases, as well as a series of 
quality-of-life improvements.
+
+## Checkpointing and Bounded Streams
+
+Flink's checkpointing mechanism could originally only create checkpoints when 
all tasks in an application's
+DAG were running. This meant that applications using both bounded and 
unbounded data sources were not really possible.
+In addition, applications on bounded inputs that were executed in a streaming 
way (not in a batch way)
+stopped checkpointing towards the end of the processing, when some tasks 
finished. Without checkpoints, the
+latest output data was not committed, resulting in lingering data for 
exactly-once sinks.
+
+With 
[FLIP-147](https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished)
+Flink now supports checkpoints after tasks are finished, and takes a final 
checkpoint at the end of a
+bounded stream, ensuring that all sink data is committed before the job ends 
(similar to how
+*stop-with-savepoint* behaves).
+
+To activate this feature, add 
`execution.checkpointing.checkpoints-after-tasks-finish.enabled: true`
+to your configuration. Keeping with the opt-in tradition for big and new 
features,
+this is not activated by default in Flink 1.14. We expect it to become the 
default mode in the next release.
+
+Background: While the batch execution mode is often the preferrable way to run 
applications over bounded streams,
+there are various reasons to use streaming execution mode over bounded 
streams. For example, the sink being used
+might only support streaming execution (i.e. Kafka sink) or you may want to 
exploit the streaming-inherent
+quasi-ordering-by-time in your application, such as motivated by the [Kappa+ 
Architecture](https://youtu.be/4qSlsYogALo?t=666).
+
+## Batch Execution for mixed DataStream and Table/SQL Applications
+
+SQL and the Table API are becoming the default starting points for new 
projects. The declarative
+nature and richness of built-in types and operations make it easy to develop 
applications fast.
+It is not uncommon, however, for developers to eventually hit the limit of 
SQL's expressiveness for
+certain types of event-driven business logic (or hit the point when it becomes 
grotesque to express
+that logic in SQL).
+
+At that point, the natural step is to blend in a piece of stateful DataStream 
API logic, before
+switching back to SQL again.
+
+In Flink 1.14, bounded batch-executed SQL/Table programs can convert their 
intermediate
+Tables to a DataStream, apply some DataSteam API operations, and convert it 
back to a Table.
+Under the hood, Flink builds a dataflow DAG mixing declarative optimized SQL 
execution with batch-executed DataStream logic.
+Check out the 
[documentation](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/dev/table/data_stream_api/#converting-between-datastream-and-table)
 for details.
+
+## Hybrid Source
+
+The new [Hybrid 
Source](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/datastream/hybridsource/)
+produces a combined stream from multiple sources, by reading those sources one 
after the other,
+seamlessly switching over from one source to the other.
+
+The motivating use case for the Hybrid Source was to read streams from tiered 
storage setups as if there was one
+stream that spans all tiers. For example, new data may land in Kafa and is 
eventually
+migrated to S3 (typically in compressed columnar format, for cost efficiency 
and performance).
+The Hybrid Source can read this as one contiguous logical stream, starting 
with the the historic data on S3
+and transitioning over to the more recent data in Kafka.
+
+<figure style="align-content: center">
+  <img src="{{ site.baseurl 
}}/img/blog/2021-09-25-release-1.14.0/hybrid_source.png" style="display: block; 
margin-left: auto; margin-right: auto; width: 600px"/>
+</figure>
+
+We believe that this is an exciting step in realizing the full promise of logs 
and the *Kappa Architecture.*
+Even if older parts of an event log are physically migrated to different 
storage
+(for reasons such as cost, better compression, faster reads) you can still 
treat and process it as one
+contiguous log.
+
+Flink 1.14 adds the core functionality of the Hybrid Source. Over the next 
releases, we expect to add more
+utilities and patterns for typical switching strategies.
+
+## Consolidating Sources and Sink
+
+With the new unified (streaming/batch) source and sink APIs now being stable, 
we started the
+big effort to consolidate all connectors around those APIs. At the same time, 
we are
+better aligning connectors between DataStream and SQL/Table API. First are the 
*Kafka* and
+*File* Soures and Sinks for the DataStream API.
+
+The result of this effort (that we expect to span at least 1-2 futher 
releases) will be a much
+smoother and more consistent experience for Flink users when connecting to 
external systems.
+
+
+# Improvements to Operations
+
+## Buffer debloating
+
+*Buffer Debloating* is a new technology in Flink that minimizes checkpoint 
latency and cost.
+It does so by automatically tuning the usage of network memory to ensure high 
throughput,
+while minimizing the amount of in-flight data. 
+
+Apache Flink buffers a certain amount of data in its network stack to be able 
to utilize the
+bandwidth of fast networks. A Flink application running with high throughput 
uses some (or
+all) of that memory. Aligned checkpoints flow with the data through the 
network buffers in milliseconds.
+
+When a Flink application becomes (temporarily) backpressured (for example when 
being backpressured
+by an external system, or when hitting skewed records), this typically results 
in a lot more data in
+the network buffers than is necessary utilize enough network bandwith for the 
application's current throughput
+(which is lowered due to backpressure). There is even an adverse effect: more 
buffered data means
+the checkpoints need to do more work. Aligned checkpoint barriers need to wait 
for more data to be
+processed, unaligned checkpoints need to persist more in-flight data.
+
+This is where *Buffer Debloating* comes into play: It changes the network 
stack from keeping up to X bytes of data
+to keeping data that is worth X milliseconds of receiver computing time. With 
the default setting
+of 1000 milliseconds, that means the network stack will buffer as much data as 
the receiving task can
+process in 1000 milliseconds. These values are constantly measured and 
adjusted, so the system keeps
+this characteristic even under varying conditions. As a result, Flink can now 
provide
+stable and predictable alignment times for aligned checkpoints under 
backpressure, and can vastly
+reduce the amount of in-flight data stored in unaliged checkpoints under 
backpressure.
+
+<figure style="align-content: center">
+  <img src="{{ site.baseurl 
}}/img/blog/2021-09-25-release-1.14.0/buffer_debloating.png" style="display: 
block; margin-left: auto; margin-right: auto; width: 600px"/>
+</figure>
+
+Buffer Deloating acts as a complementary feature, or even alternative, to 
unaligned checkpoints.
+Checkout the 
[documentation](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/memory/network_mem_tuning/#the-buffer-debloating-mechanism)
+to see how to activate this feature.
+
+## Fine-grained Resource Management
+
+*Fine-grained resource management* is an advanced new feature that increases 
the resource
+utilization of large shared clusters.
+
+Flink clusters execute various data processing workloads. Different data 
processing steps typically need
+different resources such as compute resources and memory. For example, most 
`map()` functions are fairly
+lightweight, but large windows with long retention can benefit from lots of 
memory.
+By default, Flink manages resources in coarse-grained units called *slots*, 
which are slices
+of a TaskManager's resources. Streaming pipelines fill a slot with one parallel
+subtask of each operator, so each slot holds a pipeline of subtasks.
+Through *'slot sharing groups'*, users can influence how subtasks are assigned 
to slots.
+
+With fine-grained resource management, TaskManager slots can now be 
dynamically sized.
+Transformations and operators specify what resource profiles they would like 
(CPU size,
+memory pools, disk space) and Flink's Resource Manager and TaskManagers slice 
off that specific
+part of a TaskManager's total resources. You can think of it as a minimal 
lightweight resource orchestration
+layer within Flink. The figure below illustrates the difference between the 
current default mode of shared
+fixed-size slots and the new fine-grained resource management feature.
+
+<figure style="align-content: center">
+  <img src="{{ site.baseurl 
}}/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.svg" 
style="display: block; margin-left: auto; margin-right: auto; width: 600px"/>
+</figure>
+
+You may be wondering why we implement such a feature in Flink, when we also 
integrate with full-fledged
+resource orchestration frameworks like Kubernetes or YARN. There are several 
situations where the additional
+resource management layer within Flink significantly increases the resource 
utilization:
+
+  - For many small slots, the overhead of dedicated TaskManagers is very high 
(JVM overhead, Flink control data structures).
+    Slot-sharing implicitly works around this by sharing the slots between all 
operator types, which means
+    sharing resources between lightweight operators (which need small slots) 
and heavyweight operators (which need large slots).
+    However, this only works well when all operators share the same 
parallelism, which is not aways optiomal.
+    Furthermore, certain operators work better when run in isolation (for 
example ML training operators
+    that need dedicated GPU resources).
+  - Kubernetes and YARN often take quite some time to fulfill requests, 
especially on loaded clusters.
+    For many batch jobs, efficiency gets lost while waiting for the requests 
to be fulfilled. 
+    
+So when should you use this feature? For most streaming and batch jobs the 
default resource management mechanism
+are perfectly suitable. Fine-grained resourced management can help you 
increase resource efficiency if you have either long-running
+streaming jobs, or fast batch jobs, where different stages have different 
resource requirements, and you may
+have already tuned the parallelism of different operators to different values. 
+
+Alibaba's internal Flink-based platform has used this mechanism for some time 
now and the resource utilization
+of the cluster has significantly increased.
+
+Please refer to the [Fine-grained Resource Management 
documentation](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/finegrained_resource/)
+for details on how to use this feature.
+
+
+# Connectors
+
+## Connector Metrics
+
+Metrics for connectors have been standardized in this release (see 
[FLIP-33](https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics)).
+The community will gradually pull metrics through all connectors, as we rework 
them
+onto the new unified APIs over the next releases. In Flink 1.14, we cover the 
Kafka connector
+and (partially) the FileSystem connectors.
+
+Connectors are the entry and exit points for data in a Flink job. If a job is 
not running as
+expected, the connector telemetry is among the first parts to be checked. We 
believe this will become
+a nice improvement when operating Flink applications in production.
+
+## Pulsar Connector
+
+In this release, Flink added the [Apache Pulsar](https://pulsar.apache.org/) 
connector.
+The Pulsar connector reads data from Pulsar topics and supports both streaming 
and batch execution modes.
+With the support of the transaction functionality (introduced in Pulsar 
2.8.0), the Pulsar connector provides
+exactly-once delivery semantic to ensure that a message is delivered exactly 
once to the consumer,
+even if a producer retries sending the message.
+
+To support the different message-ordering and scaling requirements of 
different use cases, the Pulsar
+source connector exposes four subscription types:
+  - 
[Exclusive](https://pulsar.apache.org/docs/en/concepts-messaging/#exclusive)
+  - [Shared](https://pulsar.apache.org/docs/en/concepts-messaging/#shared)
+  - [Failover](https://pulsar.apache.org/docs/en/concepts-messaging/#failover)
+  - 
[Key-Shared](https://pulsar.apache.org/docs/en/concepts-messaging/#key_shared)
+
+The connector currently supports the DataStream API. Table API/SQL bindings 
are expected to be
+contributed in a future release. For details about how to use the Pulsar 
connector, see
+[Apache Pulsar 
Connector](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/datastream/pulsar/#apache-pulsar-connector).
+
+
+# PyFlink
+
+## Performance Improvements through Chaining
+
+Similar to how the Java APIs chain transformation functions/operators within a 
task to avoid
+serialization overhead, PyFlink now chains Python functions. In PyFlink's 
case, the
+chaining not only eliminates serialization overhead, but also reduces RPC 
round trips
+between the Java and Python processes. This provides a significant
+boost to PyFlink's overall performance.
+
+Python function chaining was already available for Python UDFs used in the 
Table API & SQL.
+In Flink 1.14, chaining is also exploited for the cPython functions in Python 
DataStream API.
+
+## Loopback Mode for Debugging
+
+Python functions are normally executed in a separate Python process next to 
Flink's JVM.
+This architecture makes it difficult to debug Python code.
+
+PyFlink 1.14 introduces a *loopback mode*, which is activated by default for 
local deployments.
+In this mode, user-defined Python functions will be executed in the Python 
process of the client,
+which is the entry point process that starts the PyFlink program and contains 
the DataStream API and
+Table API code that builds the dataflow DAG. Users can now easily debug their 
Python functions
+by setting breakpoints in their IDEs when launching a PyFlink job locally.
+
+## Miscellaneous Improvements
+
+There are also many other improvements to PyFlink, such as support for 
executing
+jobs in YARN application mode and support for compressed tgz files as Python 
archives.
+Check out the [Python API 
documentation](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/dev/python/overview/)
 
+for more details.
+
+
+# Goodbye Legacy SQL Engine and Mesos Support
+
+Maintaining an open source project also means sometimes saying good-bye to 
some beloved features.
+
+When we added the Blink SQL Engine to Flink more than two years ago, it was 
clear that it would
+eventually replace the previous SQL engine. Blink was faster and more 
feature-complete.
+For a year now, Blink has been the default SQL engine. With Flink 1.14 we 
finally remove all
+code from the previous SQL engine. This allowed us to drop many outdated 
interfaces and reduce
+confusion for users about which interfaces to use when implementing custom 
connectors or functions.
+It will also help us in the future to make faster changes to the SQL engine.
+
+The active integration with Apache Mesos was also removed, because we saw 
little interest by
+users in this feature and we could not gather enough contributors willing to 
help maintaining this
+part of the system. Flink 1.14 can no longer run on Mesos without the help of 
projects like Marathon,
+and the Flink Resource Manager can no longer request and release resources 
from Mesos for workloads
+with changing changing resource requirements.
+
+
+# Upgrade Notes
+
+While we aim to make upgrades as smooth as possible, some of the changes 
require users
+to adjust some parts of the program when upgrading to Apache Flink 1.14.
+Please take a look at the [release 
notes](https://nightlies.apache.org/flink/flink-docs-release-1.14/release-notes/flink-1.14/)
+for a list of adjustemnts to make and issues to check during upgrades.
+
+
+# List of Contributors
+
+The Apache Flink community would like to thank each one of the contributors 
that have made this
+release possible:
+
+adavis9592, Ada Wong, aidenma, Aitozi, Ankush Khanna, anton, Anton 
Kalashnikov, Arvid Heise, Ashwin
+Kolhatkar, Authuir, bgeng777, Brian Zhou, camile.sing, caoyingjie, Cemre 
Mengu, chennuo, Chesnay
+Schepler, chuixue, CodeCooker17, comsir, Daisy T, Danny Cranmer, David 
Anderson, David Moravek,
+Dawid Wysakowicz, dbgp2021, Dian Fu, Dong Lin, Edmondsky, Elphas Toringepi, 
Emre Kartoglu, ericliuk,
+Eron Wright, est08zw, Etienne Chauchot, Fabian Paul, fangliang, fangyue1, 
fengli, Francesco
+Guardiani, FuyaoLi2017, fuyli, Gabor Somogyi, gaoyajun02, Gen Luo, 
gentlewangyu, GitHub, godfrey he,
+godfreyhe, gongzhongqiang, Guokuai Huang, GuoWei Ma, Gyula Fora, hackergin, 
hameizi, Hang Ruan, Han
+Wei, hapihu, hehuiyuan, hstdream, Huachao Mao, HuangXiao, huangxingbo, 
huxixiang, Ingo Bürk,
+Jacklee, Jan Brusch, Jane, Jane Chan, Jark Wu, JasonLee, Jiajie Zhong, 
Jiangjie (Becket) Qin,
+Jianzhang Chen, Jiayi Liao, Jing, Jingsong Lee, JingsongLi, Jing Zhang, 
jinxing64, junfan.zhang, Jun
+Qin, Jun Zhang, kanata163, Kevin Bohinski, kevin.cyj, Kevin Fan, Kurt Young, 
kylewang, Lars
+Bachmann, lbb, LB Yu, LB-Yu, LeeJiangchuan, Leeviiii, leiyanfei, Leonard Xu, 
LightGHLi, Lijie Wang,
+liliwei, lincoln lee, Linyu, liuyanpunk, lixiaobao14, luoyuxia, Lyn Zhang, 
lys0716, MaChengLong,
+mans2singh, Marios Trivyzas, martijnvisser, Matthias Pohl, Mayi, mayue.fight, 
Michael Li, Michal
+Ciesielczyk, Mika, Mika Naylor, MikuSugar, movesan, Mulan, Nico Kruber, 
Nicolas Raga, Nicolaus
+Weidner, paul8263, Paul Lin, pierre xiong, Piotr Nowojski, Qingsheng Ren, 
Rainie Li, Robert Metzger,
+Roc Marshal, Roman, Roman Khachatryan, Rui Li, sammieliu, sasukerui, Senbin 
Lin, Senhong Liu, Serhat
+Soydan, Seth Wiesman, sharkdtu, Shengkai, Shen Zhu, shizhengchao, Shuo Cheng, 
shuo.cs, simenliuxing,
+sjwiesman, Srinivasulu Punuru, Stefan Gloutnikov, SteNicholas, Stephan Ewen, 
sujun, sv3ndk, Svend
+Vanderveken, syhily, Tartarus0zm, Terry Wang, Thesharing, Thomas Weise, 
tiegen, Till Rohrmann, Timo
+Walther, tison, Tony Wei, trushev, tsreaper, TsReaper, Tzu-Li (Gordon) Tai, 
wangfeifan, wangwei1025,
+wangxianghu, wangyang0918, weizheng92, Wenhao Ji, Wenlong Lyu, wenqiao, 
WilliamSong11, wuren,
+wysstartgo, Xintong Song, yanchenyun, yangminghua, yangqu, Yang Wang, Yangyang 
ZHANG, Yangze Guo,
+Yao Zhang, yfhanfei, yiksanchan, Yik San Chan, Yi Tang, yljee, Youngwoo Kim, 
Yuan Mei, Yubin Li,
+Yufan Sheng, yulei0824, Yun Gao, Yun Tang, yuxia Luo, Zakelly, zhang chaoming, 
zhangjunfan,
+zhangmang, zhangzhengqi3, zhao_wei_nan, zhaown, zhaoxing, ZhiJie Yang, Zhilong 
Hong, Zhiwen Sun, Zhu
+Zhu, zlzhang0122, zoran, Zor X. LIU, zoucao, Zsombor Chikan, 子扬, 莫辞
\ No newline at end of file
diff --git a/img/blog/2021-09-25-release-1.14.0/buffer_debloating.png 
b/img/blog/2021-09-25-release-1.14.0/buffer_debloating.png
new file mode 100644
index 0000000..e4fd4b4
Binary files /dev/null and 
b/img/blog/2021-09-25-release-1.14.0/buffer_debloating.png differ
diff --git 
a/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.png 
b/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.png
new file mode 100644
index 0000000..4e6f3c1
Binary files /dev/null and 
b/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.png differ
diff --git 
a/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.svg 
b/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.svg
new file mode 100644
index 0000000..5c7b953
--- /dev/null
+++ b/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.svg
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg xmlns="http://www.w3.org/2000/svg"; 
xmlns:xl="http://www.w3.org/1999/xlink"; version="1.1" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; viewBox="443 733 707 410" 
width="707" height="410">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 
0 0 2 0 4" units-per-em="1000" underline-position="-100" 
underline-thickness="50" slope="0" x-height="517" cap-height="714" 
ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" 
id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" 
viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
+      <g>
+        <path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" 
stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.18.5\n2021-09-28 01:41:17 
+0000</metadata>
+  <g id="Fine_Grained_Dynamic_Slot_1" stroke="none" fill-opacity="1" 
stroke-dasharray="none" stroke-opacity="1" fill="none">
+    <title>Fine Grained Dynamic Slot 1</title>
+    <g id="Fine_Grained_Dynamic_Slot_1_图层_1">
+      <title>图层 1</title>
+      <g id="Graphic_33">
+        <rect x="617.09355" y="933.8964" width="161.5748" height="170.07874" 
fill="white"/>
+        <rect x="617.09355" y="933.8964" width="161.5748" height="170.07874" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(622.09355 938.8964)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="0" y="15">TaskManager</tspan>
+        </text>
+      </g>
+      <g id="Group_30">
+        <g id="Graphic_32">
+          <rect x="630.91245" y="963.6602" width="60.94488" height="127.73389" 
fill="#ccc"/>
+          <rect x="630.91245" y="963.6602" width="60.94488" height="127.73389" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+        <g id="Graphic_31">
+          <rect x="703.9046" y="963.6602" width="60.94488" height="127.73389" 
fill="#ccc"/>
+          <rect x="703.9046" y="963.6602" width="60.94488" height="127.73389" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+      </g>
+      <g id="Graphic_29">
+        <ellipse cx="661.03056" cy="1023.2196" rx="19.8425515714737" 
ry="46.8035941656163" fill="#ffffc0"/>
+        <ellipse cx="661.03056" cy="1023.2196" rx="19.8425515714737" 
ry="46.8035941656163" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(650.15654 1013.9956)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <ellipse cx="734.0227" cy="1023.2196" rx="19.8425515714738" 
ry="46.8035941656163" fill="#ffffc0"/>
+        <ellipse cx="734.0227" cy="1023.2196" rx="19.8425515714738" 
ry="46.8035941656163" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(723.1487 1013.9956)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_35">
+        <circle cx="700.1575" cy="754.01575" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="700.1575" cy="754.01575" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(689.2835 744.7918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_40">
+        <ellipse cx="750.8268" cy="847.0276" rx="19.8425515714737" 
ry="37.7362811136059" fill="#ffffc0"/>
+        <ellipse cx="750.8268" cy="847.0276" rx="19.8425515714737" 
ry="37.7362811136059" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(739.9528 837.8036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_39">
+        <circle cx="765.3543" cy="754.01575" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="765.3543" cy="754.01575" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(754.4803 744.7918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Line_43">
+        <line x1="758.0057" y1="801.0652" x2="762.292" y2="773.6219" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_44">
+        <line x1="731.814" y1="812.1265" x2="709.6523" y2="771.445" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_70">
+        <ellipse cx="845.0787" cy="847.0276" rx="19.8425515714737" 
ry="37.7362811136059" fill="#ffffc0"/>
+        <ellipse cx="845.0787" cy="847.0276" rx="19.8425515714737" 
ry="37.7362811136059" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(834.2047 837.8036)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_69">
+        <circle cx="830.5512" cy="754.01575" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="830.5512" cy="754.01575" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(819.6772 744.7918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_67">
+        <circle cx="895.748" cy="754.01575" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="895.748" cy="754.01575" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(884.874 744.7918)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Line_66">
+        <line x1="864.0915" y1="812.1265" x2="886.2532" y2="771.445" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_65">
+        <line x1="837.8999" y1="801.0652" x2="833.6135" y2="773.6219" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_73">
+        <line x1="774.187" y1="819.7739" x2="817.6372" y2="769.082" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_74">
+        <line x1="777.96335" y1="829.6111" x2="879.0455" y2="764.7356" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_75">
+        <line x1="817.9422" y1="829.6111" x2="716.86" y2="764.7356" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_76">
+        <line x1="821.7185" y1="819.7739" x2="778.2683" y2="769.082" 
marker-start="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_84">
+        <rect x="444.18016" y="933.8964" width="161.5748" height="170.07874" 
fill="white"/>
+        <rect x="444.18016" y="933.8964" width="161.5748" height="170.07874" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(449.18016 938.8964)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="0" y="15">TaskManager</tspan>
+        </text>
+      </g>
+      <g id="Group_81">
+        <g id="Graphic_83">
+          <rect x="457.99906" y="963.6602" width="60.94488" height="59.1095" 
fill="#ccc"/>
+          <rect x="457.99906" y="963.6602" width="60.94488" height="59.1095" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+        <g id="Graphic_82">
+          <rect x="530.9912" y="963.6602" width="60.94488" height="59.1095" 
fill="#ccc"/>
+          <rect x="530.9912" y="963.6602" width="60.94488" height="59.1095" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+      </g>
+      <g id="Graphic_80">
+        <circle cx="488.11717" cy="993.2586" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="488.11717" cy="993.2586" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(477.24315 984.0346)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_79">
+        <circle cx="561.1093" cy="993.2586" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="561.1093" cy="993.2586" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(550.2353 984.0346)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Group_102">
+        <g id="Graphic_104">
+          <rect x="457.99906" y="1033.4113" width="60.94488" height="59.1095" 
fill="#ccc"/>
+          <rect x="457.99906" y="1033.4113" width="60.94488" height="59.1095" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+        <g id="Graphic_103">
+          <rect x="530.9912" y="1033.4113" width="60.94488" height="59.1095" 
fill="#ccc"/>
+          <rect x="530.9912" y="1033.4113" width="60.94488" height="59.1095" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+      </g>
+      <g id="Graphic_101">
+        <circle cx="488.11717" cy="1063.0097" r="19.8425515714736" 
fill="#ffffc0"/>
+        <circle cx="488.11717" cy="1063.0097" r="19.8425515714736" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(477.24315 1053.7857)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_100">
+        <circle cx="561.1093" cy="1063.0097" r="19.8425515714736" 
fill="#ffffc0"/>
+        <circle cx="561.1093" cy="1063.0097" r="19.8425515714736" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(550.2353 1053.7857)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_168">
+        <rect x="814.1014" y="933.8964" width="161.5748" height="207.77474" 
fill="white"/>
+        <rect x="814.1014" y="933.8964" width="161.5748" height="207.77474" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(819.1014 938.8964)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="0" y="15">TaskManager</tspan>
+        </text>
+      </g>
+      <g id="Group_165">
+        <g id="Graphic_167">
+          <rect x="827.9203" y="964.3689" width="60.94488" height="165.96371" 
fill="#ccc"/>
+          <rect x="827.9203" y="964.3689" width="60.94488" height="165.96371" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+        <g id="Graphic_166">
+          <rect x="900.9124" y="964.3689" width="60.94488" height="165.96371" 
fill="#ccc"/>
+          <rect x="900.9124" y="964.3689" width="60.94488" height="165.96371" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+      </g>
+      <g id="Graphic_158">
+        <circle cx="858.0384" cy="996.9673" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="858.0384" cy="996.9673" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(847.1644 987.7433)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_157">
+        <circle cx="932.4479" cy="996.9673" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="932.4479" cy="996.9673" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(921.5739 987.7433)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_173">
+        <ellipse cx="858.7471" cy="1072.4196" rx="19.8425515714737" 
ry="46.8035941656166" fill="#ffffc0"/>
+        <ellipse cx="858.7471" cy="1072.4196" rx="19.8425515714737" 
ry="46.8035941656166" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(847.8731 1063.1956)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_174">
+        <ellipse cx="931.0306" cy="1072.4196" rx="19.8425515714737" 
ry="46.8035941656166" fill="#ffffc0"/>
+        <ellipse cx="931.0306" cy="1072.4196" rx="19.8425515714737" 
ry="46.8035941656166" stroke="black" stroke-linecap="round" 
stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(920.1565 1063.1956)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.394016" y="15">B</tspan>
+        </text>
+      </g>
+      <g id="Graphic_182">
+        <rect x="987.0148" y="933.8964" width="161.5748" height="207.77474" 
fill="white"/>
+        <rect x="987.0148" y="933.8964" width="161.5748" height="207.77474" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(992.0148 938.8964)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="0" y="15">TaskManager</tspan>
+        </text>
+      </g>
+      <g id="Group_179">
+        <g id="Graphic_181">
+          <rect x="1000.8337" y="964.3689" width="60.94488" height="165.96371" 
fill="#ccc"/>
+          <rect x="1000.8337" y="964.3689" width="60.94488" height="165.96371" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+        <g id="Graphic_180">
+          <rect x="1073.8258" y="964.3689" width="60.94488" height="165.96371" 
fill="#ccc"/>
+          <rect x="1073.8258" y="964.3689" width="60.94488" height="165.96371" 
stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        </g>
+      </g>
+      <g id="Graphic_178">
+        <circle cx="1030.9518" cy="996.9673" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="1030.9518" cy="996.9673" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(1020.0778 987.7433)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_177">
+        <circle cx="1105.3613" cy="996.9673" r="19.8425515714737" 
fill="#ffffc0"/>
+        <circle cx="1105.3613" cy="996.9673" r="19.8425515714737" 
stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+        <text transform="translate(1094.4873 987.7433)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5.690016" y="15">A</tspan>
+        </text>
+      </g>
+      <g id="Graphic_183">
+        <text transform="translate(880.0463 910.4484)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="5115908e-19" y="15">Coarse-Grained (Share Slot)</tspan>
+        </text>
+      </g>
+      <g id="Graphic_185">
+        <text transform="translate(564.90426 910.4484)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="16" font-weight="400" 
fill="black" x="4405365e-19" y="15">Fine-Grained</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/img/blog/2021-09-25-release-1.14.0/hybrid_source.png 
b/img/blog/2021-09-25-release-1.14.0/hybrid_source.png
new file mode 100644
index 0000000..c395e5f
Binary files /dev/null and 
b/img/blog/2021-09-25-release-1.14.0/hybrid_source.png differ
diff --git a/q/gradle-quickstart.sh b/q/gradle-quickstart.sh
index efbb33a..d3eba9a 100755
--- a/q/gradle-quickstart.sh
+++ b/q/gradle-quickstart.sh
@@ -41,7 +41,7 @@ function mkPackage() {
 defaultProjectName="quickstart"
 defaultOrganization="org.myorg.quickstart"
 defaultVersion="0.1-SNAPSHOT"
-defaultFlinkVersion="${1:-1.13.2}"
+defaultFlinkVersion="${1:-1.14.0}"
 defaultScalaBinaryVersion="${2:-2.11}"
 
 echo "This script creates a Flink project using Java and Gradle."
diff --git a/q/quickstart-SNAPSHOT.sh b/q/quickstart-SNAPSHOT.sh
index e1fb2e2..5701d77 100755
--- a/q/quickstart-SNAPSHOT.sh
+++ b/q/quickstart-SNAPSHOT.sh
@@ -24,7 +24,7 @@ PACKAGE=quickstart
 mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate       \
   -DarchetypeGroupId=org.apache.flink                                          
                \
   -DarchetypeArtifactId=flink-quickstart-java                                  
        \
-  -DarchetypeVersion=${1:-1.14-SNAPSHOT}                                       
                                \
+  -DarchetypeVersion=${1:-1.15-SNAPSHOT}                                       
                                \
   -DgroupId=org.myorg.quickstart                                               
                        \
   -DartifactId=$PACKAGE                                                        
                                        \
   -Dversion=0.1                                                                
                                                \
diff --git a/q/quickstart-scala-SNAPSHOT.sh b/q/quickstart-scala-SNAPSHOT.sh
index f751811..eba658c 100755
--- a/q/quickstart-scala-SNAPSHOT.sh
+++ b/q/quickstart-scala-SNAPSHOT.sh
@@ -24,7 +24,7 @@ PACKAGE=quickstart
 mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate       \
   -DarchetypeGroupId=org.apache.flink                                          
                \
   -DarchetypeArtifactId=flink-quickstart-scala                                 
        \
-  -DarchetypeVersion=${1:-1.14-SNAPSHOT}                                       
                                \
+  -DarchetypeVersion=${1:-1.15-SNAPSHOT}                                       
                                \
   -DgroupId=org.myorg.quickstart                                               
                        \
   -DartifactId=$PACKAGE                                                        
                                        \
   -Dversion=0.1                                                                
                                                \
diff --git a/q/quickstart-scala.sh b/q/quickstart-scala.sh
index 2eea1b3..11a5dcd 100755
--- a/q/quickstart-scala.sh
+++ b/q/quickstart-scala.sh
@@ -24,7 +24,7 @@ PACKAGE=quickstart
 mvn archetype:generate                                                         
\
   -DarchetypeGroupId=org.apache.flink                          \
   -DarchetypeArtifactId=flink-quickstart-scala         \
-  -DarchetypeVersion=${1:-1.13.2}                                              
        \
+  -DarchetypeVersion=${1:-1.14.0}                                              
        \
   -DgroupId=org.myorg.quickstart                                       \
   -DartifactId=$PACKAGE                                                        
        \
   -Dversion=0.1                                                                
                \
diff --git a/q/quickstart.sh b/q/quickstart.sh
index 018a58f..0bf3c47 100755
--- a/q/quickstart.sh
+++ b/q/quickstart.sh
@@ -24,7 +24,7 @@ PACKAGE=quickstart
 mvn archetype:generate                                                         
\
   -DarchetypeGroupId=org.apache.flink                          \
   -DarchetypeArtifactId=flink-quickstart-java          \
-  -DarchetypeVersion=${1:-1.13.2}                                              
        \
+  -DarchetypeVersion=${1:-1.14.0}                                              
        \
   -DgroupId=org.myorg.quickstart                                       \
   -DartifactId=$PACKAGE                                                        
        \
   -Dversion=0.1                                                                
                \
diff --git a/q/sbt-quickstart.sh b/q/sbt-quickstart.sh
index cf03a60..78a4c24 100755
--- a/q/sbt-quickstart.sh
+++ b/q/sbt-quickstart.sh
@@ -42,7 +42,7 @@ defaultProjectName="Flink Project"
 defaultOrganization="org.example"
 defaultVersion="0.1-SNAPSHOT"
 defaultScalaVersion="2.12.7"
-defaultFlinkVersion="1.13.2"
+defaultFlinkVersion="1.14.0"
 
 echo "This script creates a Flink project using Scala and SBT."
 
@@ -105,7 +105,7 @@ organization := \"org.example\"
 
 ThisBuild / scalaVersion := \"2.11.12\"
 
-val flinkVersion = \"1.13.2\"
+val flinkVersion = \"1.14.0\"
 
 val flinkDependencies = Seq(
   \"org.apache.flink\" %% \"flink-scala\" % flinkVersion % \"provided\",

Reply via email to