1. 程式人生 > >Apache Flink 1.3.0正式發布及其新功能介紹

Apache Flink 1.3.0正式發布及其新功能介紹

space str either update sse ant 新功能 sid ask

下面文檔是今天早上翻譯的,因為要上班,時間比較倉促,有些部分沒有翻譯,請見諒。

2017年06月01日兒童節 Apache Flink 社區正式發布了 1.3.0 版本。此版本經歷了四個月的開發,共解決了680個issues。Apache Flink 1.3.0 是 1.x.y 版本線上的第四個主要版本,其 API 和其他 1.x.y 使用 @Public 註釋的API是兼容的。

此外,Apache Flink 社區目前制定了每四月發行一個主要版本(Apache Flink 1.2.0 是2017-02發行的,和 1.3.0正好隔了四個月),所以我們可以預期 Apache Flink 1.4.0 大約會在十月份發布。

主要的更新如下

Large State Handling/Recovery

  • RocksDB的增量檢查點(Incremental Checkpointing for RocksDB):現在支持僅保存與上一次成功checkpoint之後新增的數據,而不是保存所有的應用程序狀態。這將會加快checkpoint的時間,並且會相應地減少磁盤空間的消耗,因為每個checkpoint的大小會更小。詳情請參見FLINK-5053。

  • 基於堆狀態後端的異步快照(Asynchronous snapshotting):現在文件後端和內存後端(backends)使用寫時復制HashMap的實現,使得其支持異步快照。異步快照使得Flink堆緩慢的存儲系統和昂貴的序列化具有更大的彈性。詳情請參見FLINK-6048, FLINK-5715。

  • 允許升級狀態的Serializer:現在我們可以保存應用程序狀態的前提下升級狀態的Serializer。

  • 以算子的粒度恢復作業狀態:在Apache Flink 1.3.0之前,算子的狀態是綁定在task內部的,這使得很難在保持作業狀態的同時改變job的拓撲。而現在我們可以做很多關於拓撲的修改。詳情參見FLINK-5892。

  • 細粒度恢復(beta):在task出現故障的時候,我們可以僅僅重啟那些受影響的subgraph,而不需要重啟整個ExecutionGraph,這將大大減少恢復時間,詳情參見FLINK-4256。

如果想及時了解Spark、Hadoop或者Hbase相關的文章,歡迎關註微信公共帳號:iteblog_hadoop

DataStream API

  • Side Outputs:這個功能使得一個算子可以有多個output stream。算子的元數據、內部系統信息(調試,性能等)或者是拒絕\延遲的數據將會是這個功能的潛在用例。Window算子現在使用這個功能來處理延遲的數據。參見FLINK-4460。

  • Union Operator State:Flink 1.2.0引入了廣播狀態功能(broadcast state functionality),但是這個功能並沒有對外開放。Flink 1.3.0 提供了Union Operator State API來對外開放廣播狀態功能。詳情參見FLINK-5991。

  • 針對每個窗口的狀態:在此之前,WindowFunction或ProcessWindowFunction可以訪問的狀態被限定到窗口的key,而不是窗口本身。有了這個新功能,用戶可以保持窗口狀態並且與key無關。參見FLINK-5929。

Deployment and Tooling

  • Flink歷史服務器:Flink的HistoryServer現在允許您查詢JobManager歸檔的已完成作業的狀態和統計信息,詳情參見FLINK-1579。

  • 在WEB前端監控Watermark:為了更容易地診斷watermark相關問題,Flink JobManager前端現在提供了一個新的選項卡來跟蹤每個算子的watermark。詳情參見FLINK-3427。

  • Datadog HTTP Metrics Reporter: Datadog是使用非常廣泛的指標系統。Flink現在提供了一個Datadog reporter,直接與Datadog http端點聯系。詳情參見FLINK-6013。

  • 網絡緩存配置:我們終於擺脫了繁瑣的網絡緩沖區配置,並用更通用的方法替代了它。現在我們使用可用JVM 內存的部分(默認是10%),而不是定義絕對數量的網絡緩沖區。

Table API / SQL

  • Support for Retractions in Table API / SQL: As part of our endeavor to support continuous queries on Dynamic Tables, Retraction is an important building block that will enable a whole range of new applications which require updating previously-emitted results. Examples for such use cases are computation of early results for long-running windows, updates due to late arriving data, or maintaining constantly changing results similar to materialized views in relational database systems. Flink 1.3.0 supports retraction for non-windowed aggregates. Results with updates can be either converted into a DataStream or materialized to external data stores using TableSinks with upsert or retraction support.

  • Table API / SQL支持更多的聚合: Flink 1.3.0中Table API 和 SQL 支持更多類型的聚合, 包括

    • Batch 和 Streaming SQL 都支持GROUP BY window聚合操作(通過window函數TUMBLE, HOP, and SESSION windows

    • SQL OVER window aggregations (only for streaming)

    • Non-windowed aggregations (in streaming with retractions).

    • 用戶自定義的聚合函數

  • 支持外部的catalog: Table API 和 SQL 允許註冊外部的catalogs. Table API 和 SQL 可以通過外部的catalogs 查詢表及其模式相關的信息,而不需要對使用的表一一註冊。

目前Table API / SQL的文檔被重寫了,預計會在06月05日發布。

Connectors

  • 支持ElasticSearch 5.x: ElasticSearch connectors相關的代碼被重構,新的代碼結構更加清晰,所有與ElasticSearch相關的公用模塊被放到common base裏面,與ElasticSearch版本相關的代碼分別放到不同的模塊中,這與Kafka的代碼結構類似。 詳情請參見FLINK-4988。

  • Allow rescaling the Kinesis Consumer: Flink 1.2.0 introduced rescalable state for DataStream programs. With Flink 1.3, the Kinesis Consumer also makes use of that engine feature (FLINK-4821).

  • Transparent shard discovery for Kinesis Consumer: The Kinesis consumer can now discover new shards without failing / restarting jobs when a resharding is happening (FLINK-4577).

  • Allow setting custom start positions for the Kafka consumer: With this change, you can instruct Flink’s Kafka consumer to start reading messages from a specific offset (FLINK-3123) or earliest / latest offset (FLINK-4280) without respecting committed offsets in Kafka.

  • Allow out-opt from offset committing for the Kafka consumer: By default, Kafka commits the offsets to the Kafka broker once a checkpoint has been completed. This change allows users to disable this mechanism (FLINK-3398).

CEP Library

The CEP library has been greatly enhanced and is now able to accommodate more use-cases out-of-the-box (expressivity enhancements), make more efficient use of the available resources, adjust to changing runtime conditions–all without breaking backwards compatibility of operator state.

Please note that the API of the CEP library has been updated with this release.

Below are some of the main features of the revamped CEP library:

  • Make CEP operators rescalable: Flink 1.2.0 introduced rescalable state for DataStream programs. With Flink 1.3, the CEP library also makes use of that engine feature (FLINK-5420).

  • CEP library新引入的算子:

    • 模式API的量詞(*,+,?) (FLINK-3318)

    • 支持不同的連續性(continuity)需求 (FLINK-6208)

    • 支持叠代條件 (FLINK-6197)

Gelly Library

  • Unified driver for running Gelly examples FLINK-4949).

  • PageRank algorithm for directed graphs (FLINK-4896).

  • Add Circulant and Echo graph generators (FLINK-6393).

Known Issues

There are two known issues in Flink 1.3.0. Both will be addressed in the 1.3.1 release.

  • FLINK-6783: Wrongly extracted TypeInformations for WindowedStream::aggregate

  • FLINK-6783: StateDescriptor cannot be shared by multiple subtasks

Apache Flink 1.3.0正式發布及其新功能介紹