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 <[email protected]> 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 <[email protected]> Co-authored-by: Daisy T <[email protected]> --- _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\",
