Flink1.9重大改進和新功能

Flink1.9重大改進和新功能

一、Flink1.9.0的里程碑意義

Flink1.9重大改進和新功能
Flink1.9重大改進和新功能

二、重構 Flink WebUI

Flink社區討論了現代化 Flink WebUI 的提案,決定採用 Angular 的最新穩定版來重構這個組件。從Angular 1.x 躍升到了 7.x 。重新設計的 UI 是 1.9.0 的默認UI,不過有一個按鈕可以切換到舊版的WebUI。
Flink1.9重大改進和新功能
點擊上圖所示按鈕可切換至舊版Web UI:
Flink1.9重大改進和新功能
新版更加漂亮,性能方面也表現更好。
注意:未來,新版UI不保證跟舊版 WebUI 的功能是對齊的,且待新版本穩定後將會完全移除舊版WebUI。

三、架構改動

Flink老架構及存在的問題

Flink設計理念與當前架構

Flink的設計理念如下圖:
Flink1.9重大改進和新功能
Flink1.9重大改進和新功能

存在的問題

(1)從Flink用戶角度

1)開發的時候需要在兩個底層API中進行選擇
2)不同的語義、不同的connector支持、不同的錯誤恢復策略…
3)Table API也會受不同的底層API、不同的connector等問題的影響

(2)從Flink開發者角度

1)不同的翻譯流程,不同的算子實現、不同的Task執行…
2)代碼難以複用
3)兩條獨立的技術棧需要更多人力功能開發變慢、性能提升變難,bug變多
Flink新架構
既然批是流的一個特例,是否可以。。。?一個大膽的想法(流批統一):
Flink1.9重大改進和新功能
Blink本身就在做去DataSet的工作,在 Blink 捐贈給 Apache Flink 之後,社區就致力於爲 Table API 和SQL 集成 Blink 的查詢優化器和 runtime。第一步,我們將 flink-table 單模塊重構成了多個小模塊(FLIP-32)。這對於 Java 和 Scala API 模塊、優化器、以及 runtime 模塊來說,有了一個更清晰的分層和定義明確的接口。
Flink1.9重大改進和新功能
緊接着,社區擴展了 Blink 的 planner 以實現新的優化器接口,所以現在有兩個插件化的查詢處理器來執行 Table API 和 SQL:1.9 以前的 Flink 處理器和新的基於 Blink 的處理器。基於 Blink 的查詢處理器提供了更好地 SQL 覆蓋率(1.9 完整支持 TPC-H,TPC-DS 的支持在下一個版本的計劃中)並通過更廣泛的查詢優化(基於成本的執行計劃選擇和更多的優化規則)、改進的代碼生成機制、和調優過的算子實現來提升批處理查詢的性能。除此之外,基於 Blink 的查詢處理器還提供了更強大的流處理能力,包括一些社區期待已久的新功能(如維表 Join,TopN,去重)和聚合場景緩解數據傾斜的優化,以及內置更多常用的函數。
因此,Flink1.9架構長成了這個樣子:
Flink1.9重大改進和新功能
不過, Blink 的查詢處理器的集成還沒有完全完成,暫時先不忙上生產。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章