官方劇透:1.11 發版前我們偷看了 Flink 中文社區發起人的聊天記錄

大數據文摘出品

作者:魏子敏、笪潔瓊

Flink 1.11 即將 Release 啦!

作爲備受矚目的新一代開源大數據計算引擎,Flink 無疑已成爲 Apache 基金會和 GitHub 最爲活躍的項目之一。

自 2014 年正式開源, Flink 發展非常迅速,在 GitHub 上其訪問量在 Apache 項目中位居前三。去年年底 Flink Forward Asia 2019 大會公佈,僅僅 2019 年一年的時間,Flink 在 GitHub 上的 star 數量就翻了一倍,Contributor 數量也呈現出持續增長的態勢。

GitHub 地址指路:

https://github.com/apache/flink

越來越多的企業和開發者正在不斷地加入 Flink 社區,中國開發者也爲 Flink 開發做出了巨大的貢獻。最近,Flink 終於要迎來1.11版本的更新,不僅對 SQL 和 PyFlink 的支持進行了優化,還有 Hive 的兼容性,以及增強了拓展資源(GPU)的調度支持。

將在6月下旬發版的的 Flink 1.11 重要功能特性更新如下:(目前已在官方文檔更新)

  • 增強 Web UI 功能

  • 全新 Source API

  • DataStream API 支持 Kafka 載體實現子圖 Failover

  • 提升 DDL 易用性(動態 Table 屬性,Primary Key支持)

  • 增強 Hive 流批一體化(Hive Streaming sink,Filesystem Connector)

  • 支持被 Zeppelin 集成,所有發佈功能可用

  • 增強 PyFlink(Pandas支持,SQL DDL/Client集成),提升 Python UDF 性能

  • 支持 Application 運行模式、增強 K8s 功能以及 Docker 鏡像統一

  • 統一 Job Master 內存配置

  • 支持 GPU 調度

  • 調整 Savepoint 文件路徑方便移動

  • Runtime 實現 Unalinged 模式提速反壓場景下 Checkpoint

Flink 1.11 版本更新之際,大數據文摘跟阿里巴巴資深技術專家,實時計算負責人,也是 Flink 中文社區發起人王峯 (莫問)聊了聊,關於 Flink 此次新版的重點,以及未來社區的發展規劃,莫問老師都給了我們一波官方劇透。

Flink 版本更新:上百萬行代碼

1.11版本是 Flink 在版本上的重要更迭,更新代碼就有上百萬行。

總的來說,這次的新版本有以下幾個重要更新:

增加支持 Python 的 UDF

PyFlink 在 Flink 的生態中非常重要,因爲 Flink 的開發者也大多會使用Java、SQL、Python 語言。在最新版本1.11中,增加了支持 Python 的 UDF,這樣當  Python 開發者用 Flink 去開發一個完整的流計算項目時,就可以方便地處理數據。

同時,在 AI 項目開發中,有些工程師也喜歡用 Python 處理數據,所以計算團隊必須要爲 Flink 的使用者考慮,讓所有開發者都能更好地使用 Flink。

進一步改進 SQL 的易用性

在1.9版本之前,Flink 社區用戶使用最多的還是基於 Java 的 DataStream API,而 Table 和 SQL 還處於早期探索的階段。在過去的兩個大版本(1.9和1.10),Flink 社區花了非常大的代價將 Table 和 SQL 做了完整的重構,加入了在阿里集團服務多年的 Blink planner,讓 Table 和 SQL 做到了真正的生產可用

從1.11版本開始,Blink planner 將會變成 SQL 的默認優化器。同時,社區也收集了過去幾個版本中用戶對 SQL 功能和易用性的反饋,做了大量的改進工作。比如呼聲非常高的讓 Flink SQL 能夠直接解析數據庫的 Binlog 日誌(如 Debezium、Canal),以及更簡潔的 DDL 寫法,在查詢語句中動態修改 table 參數等等。通過社區不斷完善,相信 Flink SQL 除了在覈心能力一直保持優越之外,也能夠讓廣大用戶覺得越來越好用,做到真正降低流計算業務的門檻。

加強 AI 方向的場景應用

Flink 社區一直在加強 AI 場景應用的功能。AI 這些年一直是一個非常流行的領域,包括大家熟知的 TensorFlow 還有 PyTorch,都是用戶經常使用的平臺。AI 未來會應用在各種場景中,比如數據分析、監控模型等。莫問稱,新版本會積極爲 AI 各種場景提供更強大的批流融合的數據處理能力,讓用戶能更好地進行數據清洗、特徵提取、樣本生成,以及預測模型的框架構建。

此外,Flink 可以提供傳統機器學習模型的訓練,比如貝葉斯、SVM、隨機森林這類的模型計算,以及 Alink 提供的其它種類機器學習模型。未來,Flink 社區會繼續提供關於 Flink 流式計算框架的迭代,不斷提升傳統機器學習算法的能力,增加算法種類。

目前 AI 行業缺少一整套工具鏈,來實現從數據處理、訓練模型再到整體上線的完整流程。即之前提及的 Flink AI Flow,Flink 將聯合 TensorFlow、Kubernetes,和 AirFlow 這些開源技術,進行整合形成一套完整的工具。當用戶想要使用深度學習模型訓練時可以使用 TensorFlow,想用傳統學習算法時可以用 Flink ML Lib 或 Alink,Flink AI 會通過開源技術使用戶都能獲得這樣的體驗,減少切換工具的不便。

與離線大數據系統的集成

雖然大數據實時化是大家公認的趨勢,但同時不可否認的是,還是有非常多的公司還處在離線大數據系統的建設之中。如何幫助這部分用戶順暢的將離線數據鏈路進行實時化升級改造,也是 Flink 社區一直在追求的目標。

Flink 1.11 版本在之前兼容 Hive Meta、數據格式、自定義函數的基礎之上,還新加入了實時讀寫 Hive 數據,支持將 Hive 數據作爲維表,以及 Hive 部分 DDL 和 DML 的兼容性。這樣一來,用戶可以在 Flink SQL CLI 上直接使用 Hive 方言的 DDL 和 DML 語句,同時還可以使用 Flink 將數據實時的寫入 Hive。在此基礎之上,Flink 還可以自動監聽 Hive 數據表,當有新的 partition 和數據出現的時候,能夠自動進行讀取並處理。所有的這一切操作,都不影響原來的離線鏈路。有了這些功能之後,用戶可以完全在一個 Hive 的基礎設施之上,搭建出適合自己業務需求的準實時鏈路,將原來天級或者小時級的端到端延遲,縮短到比如10分鐘的量級。

除了 Hive 之外,現在市面上也有許多新興的存儲(如 Delta、Iceberg、Hudi)可以做到類似的效果。比如像數據湖架構,這種新的數據湖存儲的架構都是流批一體的存儲架構,增量視圖可以看到數據的變化,可以用不同的增量視圖來處理數據,也可以全量視圖來處理數據,還可以把雲計算的存儲中心或者 HDFS 中的所有數據都共享到數據湖,用戶就可以使用計算引擎實時處理數據,也可以去批量的處理數據,還能準實時的處理數據。

Flink 提供流批一體的計算能力,未來和這些流批一體的存儲進行有機的結合之後,將進一步幫助用戶簡化系統架構,提升業務支持的效率。

“選擇往往比努力更重要”:Flink 在阿里的成長史

“選擇往往比努力更重要。”回憶起阿里選擇 Flink 的過程,莫問到現在依然感慨萬千。

2015年,阿里搜索算法團隊遇到了一個問題:整個淘寶和天貓的商品都需要實時更新到在線的搜索和推薦引擎中,以及要根據用戶在線行爲進行實時個性化的搜索排序和推薦,這麼大規模的計算量,應該如何解決?

在面臨巨大挑戰的業務需求大背景下,阿里搜索團隊迫切需要找到一個能承受巨大計算量並且實時化的計算引擎。當時的他們有三個方向可以選擇:Apache Storm,Apache Spark,以及 Apache Flink。通過綜合多方面因素的權衡和判斷,莫問的團隊最終選擇了 Flink 作爲實時計算引擎。作爲一個14年才進入 Apache 的年輕項目,當時的 Flink 是如何吸引了阿里搜索團隊的注意?

莫問告訴我們,團隊首先看中的是 Flink 的架構設計,尤其是作爲一個純流式思想來做大數據處理,不僅可以基於 Kappa 結構來做流式數據處理,還可以以流爲核心做批流融合的計算能力。

花了一年的時間,阿里團隊對 Flink 早期版本做了不少優化和增強,2016 年雙11就在阿里搜索和推薦場景上線了。由於是第一次在雙十一場景裏嘗試新框架,搜索團隊也不太確定這個 Flink 究竟能否承受住阿里的大規模計算量。讓莫問都沒想到的是,16年雙11,Flink 的表現非常穩定,這一點已經超過了搜索團隊的預期,甚至比當時阿里在用的幾款流計算引擎方案表現的還要好,潛力十足。

也正是通過這次穩定的表現,整個阿里集團也對 Flink 的性能有了一定的信心,希望在這個框架的基礎上,統一所有的流式實時計算技術方案。之後也正如我們所見,阿里集團頂住了包括雙十一、618 等全年不斷的大大小小促銷活動。

有了這些成功的經驗,阿里也對 Flink 有了更大信心,不僅支持整個阿里集團的實時計算,還在阿里雲上開始對外提供基於 Flink 的實時計算產品服務。發展至今,該產品已經持續爲 500 多家知名企業提供實時計算的保障。

“希望 Flink 社區更繁榮,更多元化”

“希望 Flink 社區更繁榮,更多元化。“

莫問告訴我們,阿里一直強調團隊的初衷不是希望阿里來控制 Flink 社區,而是希望阿里爲 Flink 社區作出更多貢獻,帶動Flink社區的快速發展,同時吸引更多的公司和開發者加入到 Flink 社區中來,實現社區的多元化,讓 Flink 技術能夠服務到更多行業和場景。

“所以我們會把阿里內部對 Flink 一些比較合適的改進和優化都貢獻到社區中,讓更多公司能夠受益,也非常希望看到其他公司也能夠將 Flink 在自己的場景進行大規模的應用,並將各自的需求和改進都貢獻給 Flink 社區,通過社區共建相互受益。”

2019年阿里巴巴收購 Flink 商業公司 Ververica 後,投入了大量的精力發展社區:在來自阿里的 PMC(項目管理委員會)成員提議和推動下,Apache Flink 社區建立了中文郵件列表、組織萬人羣熱烈討論 Flink 問題、聯合 30 餘家公司共同舉辦 Flink Meetup 20+場、引入 Flink 國際盛會 Flink Forward 、持續輸出免費的 Flink 學習教程以降低 Flink 入門門檻。

截止2020年5月,共有674位開發者加入 Apache Flink 社區成爲 Contributor。Contributor 的名單裏不乏來自阿里巴巴、騰訊、字節跳動、奇虎360、網易、OPPO、小米、快手、小紅書、亞信科技、唯品會等國內知名企業的工程師們。不僅有越來越多來自企業的開發者,也有更多高校學生、IC 成爲 Apache Flink Contributor。在 Committer 方面,除了阿里之外,Flink 社區也不乏來自騰訊和頭條的資深開發者受邀成爲項目的 Committer。他們也非常積極的在社區分享各自公司內部的使用場景,並對 Flink 內核代碼進行持續的完善和改進。

Flink 社區需要更多的資源去推動社區的進步,阿里也希望能看到社區生態的繁榮和生態化。

Flink 的未來:做什麼?

提到未來 Flink 社區的研發方向,莫問告訴我們,社區目前正在專注以下三個方向:

首先,推進實時和準實時數據處理的進一步融合。使得 Flink 不僅能夠毫秒級的處理流式數據,同時也能夠對有限數據集進行快速分析、處理和更新,爲用戶提供端到端的實時化數據分析體驗。

其次,提供大數據和 AI 全鏈路流程端到端的完整體驗,AI 場景離不開大數據計算和處理能力。例如經典的 AI 包括數據的預處理、特徵、樣本計算和模型訓練等,Flink 可以結合 Tensorflow,Airflow,Kubeflow 等技術,提供一套完整流程管理方案去串聯這其中的各個環節。

第三,Stateful Function,利用 Flink 在 Event Driven 和 Stateful Computing 上的優勢,使得 Flink 成爲一款在線函數計算框架,讓 Flink 從實時向在線計算演進。

未來已來,將成熟穩定的技術貢獻給社區,共建良好社區生態才能真正的讓用戶放心使用,從用戶角度出發,爲用戶的需求考慮,才能最終獲得一個用戶喜歡的 Flink 計算引擎。攜手夥伴持續發展 Flink 社區,讓所有的用戶用上最好的技術,這就是阿里一直想做的事情。

提前瞭解 Flink 1.11 Table & SQL 新版詳情,可點擊「閱讀原文」可查看 Apache Flink Committer 分享的《Flink 1.11 Table & SQL 深度解讀》


關注 Flink 中文社區,獲取更多技術乾貨

你也「在看」嗎?????

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