天天看點

Flink Forward Asia 2020 -- Keynote 總結

作者:阿裡雲實時計算團隊

Flink Forward Asia 2020 -- Keynote 總結

剩喜漫天飛玉蝶,不嫌幽谷阻黃莺。2020 年是不尋常的一年,Flink 也在這一年迎來了新紀元。

12 月13 – 15 号,2020 Flink Forward Asia(FFA)在春雪的召喚下順利拉開帷幕。Flink Forward Asia 是由 Apache 官方授權,Apache Flink Community China 支援舉辦的會議。經過兩年的不斷更新和完善,Flink Forward Asia 已成為國内最大的 Apache 頂級項目會議,是 Flink 開發者和使用者的年度盛會!今年由于疫情的原因,Flink Forward Asia 首次采用線上線下雙線同步會議的形式,吸引了更多的參會者觀看讨論,三天實際總參與人數(UV)超過 9.2 萬,單日最高觀看人數(UV)超過 4 萬。

Flink Forward Asia 2020 -- Keynote 總結

FFA 大會從社群發展,業内影響力和 Flink 引擎生态這三方面總結了 Flink 過去一年内的成績。

社群方面,如上圖所示,根據 Apache 基金會财年報告公布的各項核心名額顯示,Flink 在 2020 年蟬聯 Apache 社群最活躍的項目。不僅如此,Flink Github 的星數(代表項目受歡迎程度)和 Flink 的社群代碼貢獻者(contributor)數量在過去數年中一直保持年均 30%+ 的增長。尤其值得一提的是 Flink 中文社群的繁榮發展:Flink 是目前 Apache 頂級項目中唯一一個開通了中文郵件清單([email protected])的項目,且中文郵件清單的活躍度已超過英文郵件清單;Flink 的官方公衆号訂閱數超過 3 萬人,全年推送超過 200 篇和 Flink 技術,生态以及實踐相關的最新資訊。此外,Flink 官方中文學習網站也已經正式開通:

https://flink-learning.org.cn/ ,收納了和 Flink 相關的學習資料,場景案例以及活動資訊,希望能對 Flink 感興趣的同學有所助益。
Flink Forward Asia 2020 -- Keynote 總結

在業界影響力方面,經過幾年的發展,Flink 已經成為事實上的國内外實時計算行業标準,大部分主流科技公司均已采用 Flink 作為實時計算的技術方案。本屆 Flink Forward Asia 邀請到 40 多家一線國内外公司參與分享 Flink 的技術探索和實踐經驗,上圖列出了其中部分公司的 Logo。從圖中的 Logo 來看,Flink 技術已經應用到各行各業,深入到我們的日常點滴生活中,從知識分享到線上教育;從金融服務到理财投資;從長短視訊到線上直播;從實時推薦搜尋到電商服務等等。

從 Flink 引擎生态來看,2020 年,Flink 在流計算引擎核心,流批一體,擁抱 AI,雲原生這四個主打方向上都取得了不錯的成績。特别對于流批一體,今年釋出的三個大版本(Flink-1.10 & 1.11 & 1.12)對流批一體進一步作了更新和完善,并首次在阿裡巴巴雙十一最核心的天貓營銷活動分析大屏場景中落地 [1]。經曆過雙十一洗禮的流批一體将成為在業界大規模推廣的起點,開創流批一體新紀元!

本文将對 Keynote 議題作一些簡單的歸納總結,抛磚引玉,感興趣的小夥伴們可以在官網找到相關主題視訊觀看直播回放。

主會場議題

Flink Forward Asia 2020 -- Keynote 總結

在主議題之前有兩個環節值得提一提。一是阿裡巴巴集團副總裁,阿裡雲智能計算平台負責人,人工智能計算架構 Caffe 之父賈揚清老師作為開場嘉賓,分享了他對開源與雲的思考。他指出,開源讓雲更标準化,而大資料和人工智能一體化則是必然趨勢。顯而易見地,作為頂級開源項目和實時計算标準的 Flink 在這個過程中承擔極其重要的角色。同時他也對 Flink 如何在未來做到計算普惠化和資料智能化提出更多期待,讓 Flink 的小松果在各行各業的資料和智能融合中生根發芽!二是由阿裡雲天池平台和 Intel 聯合舉辦的第二屆 Apache Flink 極客挑戰賽頒獎典禮。此次挑戰賽聚焦防疫主題,在 Apache Flink 平台上支援深度學習應用,吸引了來自 14 個國家和地區,705 所高校,1327 家企業的 3840 位選手,由揚清,李文和湘雯頒獎。

Flink Forward Asia 2020 -- Keynote 總結

言歸正傳,下面聊聊幾個主議題。

Flink as a Unified Engine –– Now and Next

主議題由 Apache Flink 中文社群發起人,阿裡雲智能實時計算和開放平台負責人莫問老師開啟,主要介紹 Flink 社群在 2020 年取得的成果以及未來的發展方向,主要包括:流計算引擎核心,流批一體,Flink + AI 融合,雲原生這四個方向。值得一題的是,他還特别分享了阿裡巴巴作為 Flink 最大的使用者和推動者,在流批一體雙十一核心業務場景落地的過程中的經驗和心得,相信對很多有類似需求的小夥伴們會有啟示。

技術創新是開源項目持續發展的核心,是以首先第一個部分是 Flink 社群在流計算引擎核心方面的創新分享:

1)Unaligned Checkpoint

我們知道 Flink 的一個最核心的部分是通過分布式全局輕量快照算法 [2, vldb17] 做 checkpoint 來保證強一緻性 exactly once 語義。這個算法通過 task 之間 barrier 的傳遞使得每一個 task 隻需要對自己的狀态進行快照;當 barrier 最終達到 sink 的時候,我們就會得到一個完整的全局快照(checkpoint)。但在資料反壓的情況下,barrier 無法流到 sink,會造成 checkpoint 始終無法完成。Unaligned Checkpoint 解決了反壓狀态下,checkpoint 無法完成的問題。在 unaligned checkpoint 的模式下,Flink 可以對每個 task 的 channel state 和 output buffer 也進行快照,這樣 barrier 可以快速傳遞到 sink,使得 checkpoint 不受反壓影響。Unaligned checkpoint 和 aligned checkpoint(現有的 checkpoint 模式)可以通過 alignment timeout 自動智能的切換,下圖給出了示意圖。

Flink Forward Asia 2020 -- Keynote 總結

2)Approximate Failover –– 更加靈活的容錯模式

流計算核心引擎部分的另一個提升是 Approximate 單點 Failover。在強一緻性 exactly once 語義下,單個節點的失敗會導緻全部節點的重新啟動和復原。但對某些場景,特别是 AI 訓練的場景,其實對語義一緻性的要求并沒有那麼高,反而對于可用性要求更高,是以社群引入了 Approximate Failover 的模式:單個節點的失敗隻會引起該失敗節點的重新開機和恢複,而整個資料流程是沒有中斷的。Approximate Failover 在 AI 訓練和推薦場景下是強需求,快手和位元組跳動的分享中都有提到。

3)Nexmark –– Streaming Benchmark

目前的實時流計算并沒有行業内公認的 benchmark,為了填補這項空白,基于 NEXMark[3],Flink 推出了第一版包含 16 個 SQL Query 的 benchmark 工具 Nexmark。Nexmark 一大特點是友善易用,沒有外部系統依賴, 同時支援标準的 ANSI SQL。Nexmark 目前業已開源:

https://github.com/nexmark/nexmark

,可以用來比對不同流計算引擎之間的差異。

第二個重要的部分是流批一體,開頭提到 2020 年是流批一體的新紀元,為什麼這麼說呢,莫問老師從流批一體架構演進,Flink 批處理性能,以及業界流批一體資料生态這三個方面給出了答案。

1)流批一體架構演進

Flink-1.10 & 1.11 兩個大版本實作了 SQL & Table 層的流批一體化和解決生産可用性問題;剛剛發版的 Flink-1.12 解決了 DataStream 層的流批一體化;從 1.13 版本開始,Flink 将逐漸淘汰 DataSet 這套 API。在全新的流批一體架構中,Flink 完成了統一的流批表達,統一的流批執行,以及統一可插拔的 runtime 支援。分會場中的《基于 Flink DataStream API 的流批一體處理》有對這個部分更為詳細的介紹。

Flink Forward Asia 2020 -- Keynote 總結

2)Batch 性能

大家比較關心的批的性能:經過三個版本的疊代,以 TPC-DS 為基準,Flink-1.12 比 Flink-1.9(去年的版本)提速 3 倍!資料量 10TB,20台 64Core 機器的配置下,TPC-DS 運作時間收斂到萬秒以内。這意味着 Flink Batch 的性能已經不亞于任何一個業界主流的 Batch 引擎了。

3)流批一體資料生态

莫問老師指出,流批一體不僅僅隻是一個技術問題,它也對業界資料生态的演化也起到了深遠的作用,比較典型的場景包括資料同步內建(資料庫裡的資料同步到數倉中)和基于 Flink 流批一體的數倉架構/資料湖架構。傳統的資料同步內建采用全量增量定時合并的模式,而 Flink 流批一體混合 connector 可以實作全量增量一體化資料內建(讀取資料庫全量資料後,可以自動切換到增量模式,通過 CDC 讀取 binlog 進行增量同步),全量和增量之間無縫自動切換,如下圖所示。

Flink Forward Asia 2020 -- Keynote 總結

傳統的數倉架構分别維護一套實時數倉和離線數倉鍊路,這樣會造成開發流程備援(實時離線兩套開發流程),資料鍊路備援(兩遍對資料的清洗補齊過濾),資料口徑不一緻(實時和離線計算結果不一緻)等問題。而 Flink 的流批一體數倉架構将實時離線鍊路合二為一,可以完全的解決上述這三個問題。不僅于此,Flink 的流批一體架構和資料湖所要解決的問題(流批一體存儲問題)也完美契合。現在比較主流的資料湖解決方案 Iceberg,Hudi 和 Flink 都有內建。其中,Flink + Iceberg 已有完整的內建方案;而 Flink + Hudi 的整合也在積極對接中。

第三個大的方向是與 AI 的融合。莫問老師從語言層,算法層和大資料與 AI 一體化流程管理這三個方面總結了 2020 年 Flink 在 AI 融合方面的進展。從語言層來講,Flink 對 AI 的主流開發語言 Python 的支援 PyFlink 逐漸走向成熟:Flink 的 DataStream API 和 Table API 都已 Python 化,使用者可以用純 Python 語言開發 Flink 程式;Flink SQL 中支援 Python UDF/UDTF;PyFlink 內建了常用的 Python 類庫如 Pandas,在 PyFlink 中可以直接調用 Pandas UDF/UDAF。從算法層面來看,去年開源的:Alink

https://github.com/alibaba/alink

(基于 Flink 的流批一體的傳統機器學習算法庫)新增了數十個開源算法,提供基于參數伺服器的大規模分布式訓練,訓練過程與預測服務的銜接更加順暢。

Flink Forward Asia 2020 -- Keynote 總結

大資料與 AI 一體化流程管理也是一個很值得深入探讨的問題,其背後的本質問題是在離線學習實時化的大背景下,如何設計離線線上機器學習一體化的流程管理架構,以及該架構如何與大資料工作流程相結合,實作大資料與機器學習全鍊路一體化的問題。這套完整的解決方案 Flink AI Extended 不僅支援深度學習引擎和 Flink 計算引擎的內建(TensorFlow / PyTorch on Flink),它的工作流(Flink AI Flow)也應用了上述的一體化設計思想。目前 Flink AI Extended 也已經開源:

https://github.com/alibaba/flink-ai-extended

。此外,在分會場議題中有對 Flink AI Extended 更詳細的讨論和全流程 demo《基于 Flink 的線上機器學習系統架構探讨》,感興趣的同學可以找來看看并試用一下。

此外還有一個重要的方向是 Flink 與雲原生生态 Kubernetes 的深度融合。Kubernetes 目前廣泛應用在各種線上業務上,其生态本身發展也很快,可以給 Flink 在生産中提供更好的運維能力。從 Flink-1.10 版本開始,Flink 經過三個版本的疊代,到 Flink-1.12,Flink 已經可以原生地運作在 Kubernetes 之上,對接 K8S 的 HA 方案,并不再依賴 ZooKeeper,達到生産可用級别。同時,Flink 的 JobManager 可以和 K8S Master 直接通信,實作動态擴縮容,并支援對 GPU 的資源排程。

Flink Forward Asia 2020 -- Keynote 總結

接下來,莫問老師分享了 Flink 在阿裡巴巴(Flink 最大的使用者和推動者)的前世,今生和未來。2016 年,Flink 在雙十一搜尋推薦場景中首次亮相,并用 Flink 實作搜尋推薦和線上學習全鍊路實時化。2017 年,Flink 成為阿裡巴巴集團内實時計算的标準解決方案。2018 年,Flink 正式上雲,使用 Flink 的實時資料解決方案更好的為中小企業服務。2019 年,阿裡巴巴收購了 Flink 的初創公司 Ververica,并将 Blink 回饋給社群,向國際化邁進一步。到 2020 年,Flink 已經成為事實上的全球實時計算标準。目前各大雲廠商(阿裡雲,AWS)和大資料廠商(Cloudera)等均已将 Flink 内置作為标準的雲産品。到今年雙十一,Flink 已包攬阿裡内部所有集團(包括螞蟻,釘釘,菜鳥等)的全鍊路實時化解決方案,規模達到百萬級 CPU Core。并且在資源沒有增長的情況下,提高了一倍業務能力。今年雙十一的實時資料處理峰值更是達到 40 億條記錄/秒的新高。

Flink Forward Asia 2020 -- Keynote 總結

莫問老師強調,“全資料鍊路實時化”并不是終點,阿裡巴巴的目标是“實時離線一體化”。2020 年,Flink 迎來了實時離線流批一體的新紀元 –– 首次在雙十一最核心場景天貓營銷活動分析大屏場景中落地,并帶來了巨大的收益:實時和離線邏輯業務的一體化使得資料結果天然保持一緻;同時使得業務開發效率提升了 4-10 倍;流批任務的錯峰排程使得資源成本節省了 1 倍,如上圖所示。在行業實踐分會場中的《流批一體技術在天貓雙 11 的應用》對此有更詳盡的介紹,感興趣的同學可以參考一下。在行業内,位元組跳動,美團,快手,知乎,小米,網易等都在探索 Flink 流批一體的落地。

Flink 助力美團數倉增量生産

第二場議題由美團實時計算負責人鞠大升老師帶來,主要分享了 Flink 在美團内部的應用。鞠大升老師首先分享了美團數倉的整體架構。如下圖所示。美團資料架構包括資料內建系統、資料處理系統、資料消費和資料應用四部分。Flink 主要應用在 Kafka2Hive、實時資料處理、Datalink 等(圖中紅圈的部分),而他本次分享也主要集中在這幾個部分。Flink 在美團的主要應用場景包括實時數倉,實時分析;推薦搜尋;風控監控;安全審計。這幾個應用場景其實也是 Flink 現在的幾個最主流的應用場景。在美團的應用場景中,Flink 每天的峰值資料達到 1.8 億條記錄/s。

Flink Forward Asia 2020 -- Keynote 總結

美團的分享有兩個比較有趣的部分,一是提出了“增量生産”這個概念。這其實和莫問老師提到的全量增量一體化資料內建異曲同工。但在這個概念裡,增加了資料時效性,資料品質和生産成本之間的權衡考量,也即如何在一個數倉業務中在滿足時效性的情況下能更有效的控制成本和提升資料品質。二是美團基于 Flink 架構解決了分布式異構資料源同步(Datalink)的問題。他們基于 Flink 的同步系統可以将同步任務通過 Task Manager 分散到叢集中,使得整體架構有很好的擴充性;另一方面,離線和實時的同步任務可以都統一到 Flink 架構中,是以離線和實時所有同步的元件都可以共用。

目前,美團在資料處理這一層還沒有實作完全的流批統一,是以鞠大升老師表示,未來的目标希望在資料處理以及資料存儲本身都能達到流批統一。

Apache Flink 在快手的過去、現在和未來

第三場議題由快手大資料架構團隊負責人趙健博老師帶來,主要分享了快手實時計算選型 Flink 的原因和 Flink 在快手内部應用的場景,以及快手在這些應用場景内的相關技術改進。快手選型 Flink 的原因其實回答了為什麼 Flink 能成為業界實時計算的标準:1)亞秒級的處理延遲,這對快手内部的實時應用是個硬性強需求;2)豐富的視窗計算模式,自帶的标準化狀态存儲以及 Exactly Once 的強一緻性保證能夠極大的簡化業務開發和調試的複雜度;3)流批一體架構的演進進一步簡化資料和業務架構的複雜性。快手表示非常看好 Flink 流批一體在資料全場景落地。

Flink Forward Asia 2020 -- Keynote 總結

快手使用 Flink 從 2017 年開始,從 0 到 1 今年已是第四個年頭,發展過程如上圖所示。快手使用 Flink 主要場景包括實時 ETL 資料內建,實時報表,實時監控,實時特征處理(AI),目前每天的峰值可以達到 6 億條記錄 /s。針對上述每一個場景快手都分享了很詳細的執行個體,特别是特征處理(Feature Processing/Engineering),在很多 AI 場景中還是很有代表性的。

快手還分享了自研的狀态存儲(SlimBase)在其内部的應用。SlimBase 主要分為三層,State Interface 層,KV Cache 層和 File System(Distributed)層;其中 KV Cache 是讀操作能加速的關鍵。當 SlimBase KV Cache 層都被命中時,SlimBase 相對于 RocksDB 有 3-9 倍的讀寫效率提升;而 Cache 層不能都被命中的情況下(需要通路檔案系統),讀性能有一些下降。除了 SlimBase,快手對 Flink 的穩定性(包括硬體故障,依賴服務異常,任務過載)和負載均衡方面都提出一些改進的解決方案。分會場議題《快手基于 Apache Flink 的持續優化實踐》對此有更詳細的介紹。

對于未來的規劃,趙健博老師老師表示會推動 Flink 的流批一體在快手内部落地,并結合 Flink 的流批一體推動 AI 資料流實時化以提升訓練模型的疊代速度。随着越來越多業務使用 Flink,快手對 Flink 的穩定性也提出更多的要求(比如快速 Failover 的能力),是以快手在這方面也會有更多的投入。

Stream is the New File

主議題的最後一場是由戴爾科技集團軟體開發總監滕昱老師帶來的流式存儲議題:Pravega。這個議題比較有趣的是讨論了流式存儲的抽象 Stream Abstraction。傳統的檔案系統對于流式存儲來說并不是一個好的抽象,原因 1)檔案的大小有限制,但是流式資料是持續注入的;2)在持續的資料注入中對存儲的并發度也需要動态調整,這就涉及到多個檔案的維護和操作;3)有序的流式資料的定位尋址問題在檔案系統接口中也無法很好的被支援;4)現在業界慣用的聯合使用消息隊列(Kafka)+ 檔案系統的混合抽象也仍然沒有減輕應用程式開發和維護的難度。

Flink Forward Asia 2020 -- Keynote 總結

根據上述需求,Dell 科技集團設計了基于 Stream Abstraction 的流式存儲系統 Pravega。Pravega 将流存儲動态 scaling,動态 scaling 以後如何保證流資料邏輯上有序,流資料定位和尋址以及 checkpointing 等等一系列問題都封裝在 Stream abstraction 之下。在這種抽象之下,流式存儲可以和流式計算引擎無縫銜接,也給流式計算屏蔽了很多流存儲端的複雜性,進而使整個端到端僅一次性處理(exactly once)的 pipeline 被極大的簡化(如上圖所示)。目前 Pravega 已經是一個 CNCF 開源項目,在 Pravega 最新一期官方 blog(

https://blog.pravega.io/

)中,Pravega 釋出了基于 OpenMessaging Benchmark 對比 Kafka 和 Pulsar 的各項性能名額。此外,Pravega 在分會場中有一場關于 Pravega Flink connector 的分享,《Pravega Flink connector 的過去,現在和未來》,感興趣的同學可以看一下。

除了主會場阿裡巴巴,美團,快手,Dell 科技集團的分享,分會場由行業實踐,核心技術,開源生态,金融行業,機器學習和實時數倉六個子議題超過 40 家企業機構參與分享,包括天貓,位元組跳動,亞馬遜,LinkedIn,愛奇藝,螞蟻,好未來,小米,微網誌,騰訊,知乎,京東,PingCAP,網易,360 等,後續會有更多的對分會場議題的專場分享文章,敬請期待!

總結和感想

沒有一個冬天不能逾越,沒有一個春天不會來臨。2020 年是不尋常的一年,雖然疫情肆虐,但是 Flink 社群在 2020 年持續繁榮,蟬聯最活躍的 Apache 項目;Flink 也成為了事實上的國内外實時計算标準。過去一年,Flink 在流計算引擎核心,流批一體,AI融合,雲原生這四個方向上都取得了不錯的成績,未來也會在這四個方向上繼續耕進。2020 年是 Flink 的新紀元,流批一體首次在阿裡巴巴雙十一最核心的業務場景中落地,這将是流批一體在業界大規模推廣的起點。未來可期,讓我們攜手共進,一起努力,把握好機遇共同迎接挑戰,共創美好的 Flink 2021!

[1]

40億條/秒!Flink流批一體在阿裡雙11首次落地的背後

[2, vldb17]

State Management in Apache Flink

[3]

NEXMark – A Benchmark for Queries over Data

▼ 活動推薦 ▼

12 月 13 日 -12 月 15 日,大資料領域頂級盛會 Flink Forward Asia 2020 圓滿落幕!六大專場解讀 Flink 流批一體生産環境落地實踐、Flink 核心技術、實時數倉應用、開源生态發展、機器學習及金融行業應用等,點選下方【

閱讀原文

】,下載下傳嘉賓分享 PDF 并觀看直播回放~👇

Flink Forward Asia 2020 -- Keynote 總結