大數據文摘出品
作者:魏子敏、笪潔瓊
Flink框架上!新!啦!
作為備受矚目的新一代開源大數據計算引擎,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)的調度支持。
Flink框架將在6月下旬上線的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方向的場景應用
就像在1.9版本更新中提到的,Flink最新版本也會加強對AI場景應用的功能。
AI這些年一直是一個非常流行的領域,包括大家熟知的TensorFlow還有PyTorch,基本上都是用戶經常使用的平台。AI的未來會應用在各種場景中,比如數據分析,監控模型。
莫問稱,新版本會積極為AI各種場景提供更好的批流融合的數據處理系統,讓用戶能更好地進行數據清洗、特徵提取、樣本生成,以及預測模型的框架構建。
此外,Flink可以提供傳統式機器學習模型的訓練,比如貝葉斯、SVM、隨機森林這類的模型計算,還有Alink提供的其它種類機器學習模型,未來會繼續提供關於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就在阿里搜索和推薦場景上線了。
由於是第一次在雙十一場景里嘗試新框架,搜索團隊也不太確定這個新框架,能不能承受住阿里的大規模計算量。讓莫問都沒想到的是,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社區,讓所有的用戶用上最好的技術。
文章來源: https://twgreatdaily.com/zh-sg/DfpZonIBnkjnB-0z53Tv.html