Apache Flink,流計算?不僅僅是流計算!

作者:

王峰(花名:莫問)

阿里巴巴 資深技術專家

摘要:FlinkForwardChina 主要講了啥,看這一篇文章就夠了

2018年12月20日,由阿里巴巴集團主辦的FlinkForwardChina在北京國家會議中心舉行。Flink Forward是由Apache軟件基金會授權的全球范圍內的Flink技術大會,2015年開始在德國柏林舉辦,去年開始增加美國舊金山會場。今年第一次進入中國,就吸引超過1000人到達現(xiàn)場,近20000人在線觀看直播,可謂為一場大數(shù)據技術的饕餮盛宴,無不昭示ApacheFlink作為下一代大數(shù)據計算引擎的繁榮生態(tài)。

Apache Flink,流計算?不僅僅是流計算!

本次大會邀請到了來自阿里巴巴、騰訊、華為、滴滴、美團點評、字節(jié)跳動、愛奇藝、去哪兒、Uber、EMC、DA(Flink創(chuàng)始公司)等國內外知名企業(yè)以及Apache軟件基金會的嘉賓為大家分享了ApacheFlink的成長歷程、應用場景和發(fā)展趨勢。

  參與有道,如何更“好”地貢獻 Apache 項目

上午的Keynote由來自Apache軟件基金會的秘書長CraigRussell開場,Craig首先了分享了Apache開源之道,以及開源社區(qū)的精神和體制,然后以ApacheFlink項目的成長經歷為背景,向大家介紹了如何創(chuàng)建以及管理一個Apache開源項目,以及如何為Apache開源項目做貢獻,并跟隨開源項目一起成長和收獲。

Apache Flink,流計算?不僅僅是流計算!

通過Craig的分享,我們也更詳細的了解到了Apache Flink的發(fā)展經歷。Flink早期起源于德國柏林工業(yè)大學的一個研究項目Stratosphere,并于2014年4月捐獻給Apache軟件基金會,同時重新定位品牌為Flink,經過8個月孵化期,在2014年12月成功從Apache軟件基金會畢業(yè),成為Apache頂級項目,從此開始在大數(shù)據領域航行。經過最近4年的持續(xù)快速發(fā)展,ApacheFlink社區(qū)已經培養(yǎng)出了42名Committer和19名PMCMember,不斷加入的新鮮血液為ApacheFlink社區(qū)持續(xù)貢獻代碼,并推動社區(qū)健康快速的發(fā)展。

Apache Flink,流計算?不僅僅是流計算!

  云上計算普惠科技

Apache Flink,流計算?不僅僅是流計算!

在Craig分享后,阿里巴巴集團副總裁、搜索事業(yè)部與計算平臺事業(yè)部負責人周靖人進行了主題演講。靖人首先向大家介紹了阿里巴巴大數(shù)據云上計算的現(xiàn)狀和趨勢,讓大家看到了阿里巴巴大數(shù)據業(yè)務場景的超大規(guī)模,以及未來更大的挑戰(zhàn)。

Apache Flink,流計算?不僅僅是流計算!

為了更好地支持阿里巴巴未來大數(shù)據的發(fā)展,阿里大數(shù)據發(fā)展策略一方面要進一步提升計算力和智能化,增強企業(yè)級服務能力。同時也要加強技術的生態(tài)化建設,大力支持并推動開源技術社區(qū)的發(fā)展,兼容行業(yè)生態(tài)標準,發(fā)展生態(tài)伙伴聯(lián)盟,推動生態(tài)建設。

Apache Flink,流計算?不僅僅是流計算!

目前阿里巴巴已經參與貢獻230+開源項目,具備8000+合作伙伴和2000+ ISV,云上生態(tài)也已經突破1000,000開發(fā)人員。在大數(shù)據領域,阿里巴巴最近幾年對ApacheFlink社區(qū)進行了持續(xù)大力的投入,貢獻超過15w行代碼,主導建立了FlinkChina中文社區(qū),加速Flink在國內的生態(tài)建設,并于今年開始在北京、杭州、上海、深圳等地多次組織FlinkMeetup,促進國內Flink技術人員更方便的分享交流。

Apache Flink,流計算?不僅僅是流計算!

靖人在分享的最后宣布了阿里巴巴內部Flink版本(Blink)將于2019年1月正式開源,本次開源內部版本的目標主要是希望讓廣大Flink用戶能提前享受到阿里巴巴對Flink的改進和貢獻。阿里巴巴同時會盡快將Blink中對Flink的各項改進和優(yōu)化貢獻給Flink社區(qū),堅持對ApacheFlink一個社區(qū)的擁抱和支持。

Apache Flink,流計算?不僅僅是流計算!

  ApacheFlink,如何重新定義計算?

在靖人宣布阿里巴巴開源內部Flink版本(Blink)后,阿里巴巴集團研究員蔣曉偉分享了ApacheFlink在阿里巴巴內部的成長路線以及技術演進之路。

阿里巴巴從2015年開始調研Flink,并于2016年第一次在搜索場景中上線Flink,在經過搜索大數(shù)據場景的檢驗后,2017年Flink開始在阿里巴巴集團范圍內支持各項實時計算業(yè)務, 到目前為止阿里巴巴基于Flink打造的實時計算平臺,已經支持了包括淘寶、天貓、支付寶、高德、飛豬、優(yōu)酷、菜鳥、餓了么等所有阿里巴巴集團下的所有子公司的數(shù)據業(yè)務,并通過阿里云向中小企業(yè)提供一站式實時計算服務。在2018年的雙11中,阿里實時計算平臺已經實現(xiàn)了峰值每秒17億次,當天萬億級的消息處理能力。

Apache Flink,流計算?不僅僅是流計算!

ApacheFlink目前在阿里巴巴內部最典型的業(yè)務場景是實時BI,阿里巴巴內部有著海量的在線交易以及用戶數(shù)據,實時看到各個維度的數(shù)據統(tǒng)計可以及時的感知并指導阿里巴巴的運營。下圖是一個典型的阿里實時BI流程,阿里的在線服務系統(tǒng)和數(shù)據庫會實時產生大量日志數(shù)據并進入消息隊列,F(xiàn)linkJob會從消息隊列中實時讀取處理這些數(shù)據,然后將各種統(tǒng)計分析結果實時更新到KV/Table存儲系統(tǒng)中,例如:HBase,終端用戶可以通過Dashboard實時看到各種維度的數(shù)據統(tǒng)計分析結果。

Apache Flink,流計算?不僅僅是流計算!

在雙11當天,各種維度的實時數(shù)據報表是指導雙11決策的依據,其中最為關鍵的就是全球直播的實時GMV成交額。Flink已經連續(xù)兩年支持阿里巴巴雙11實時GMV大屏,一個看似簡單的數(shù)字,其背后實際上需要大量Flink計算任務平穩(wěn)、精準地運行支撐。

Apache Flink,流計算?不僅僅是流計算!

Flink在阿里巴巴另一個典型的應用場景是在線機器學習,傳統(tǒng)的離線機器學習方法需要T+1的分析用戶歷史行為,訓練出模型,當?shù)诙炷P蜕暇€后就已經是過去式,用戶當前的需求和預期可能已經完全改變。為了給用戶更好的購物消費體驗,阿里巴巴的機器學習系統(tǒng)早已經進化到在線學習時代,例如:當一個用戶在搜索完一個Query,瀏覽結果頁時,或者點擊查看部分商品時,阿里巴巴的在線學習系統(tǒng)已經可以利用這個間隙了解到這個用戶當時的意圖和偏好,并在下次用戶Query時給出更好的排序,并向用戶推薦更合適的商品,這種方式不僅可以進一步提升業(yè)務效率,同時也能為用戶帶來更好的產品體驗,尤其是在雙11這種大促場景,用戶的行為時效性都是很短的,只有通過實時在線學習方式,才能做出更加精確的個性化預測和推薦。

在線學習系統(tǒng)的優(yōu)勢在于可以實時收集并處理用戶的行為數(shù)據,從而進行實時流式的特征計算和在線訓練,并將模型的增量更新實時同步回在線系統(tǒng),形成數(shù)據閉環(huán),通過不斷迭代自動優(yōu)化系統(tǒng)效率和用戶體驗。在阿里的業(yè)務規(guī)模下,整個在線學習流程將會面對海量的用戶數(shù)據規(guī)模、和極其復雜的計算挑戰(zhàn),但在Flink的驅動下,整個流程可以在秒級完成。

Apache Flink,流計算?不僅僅是流計算!

通過以上兩種經典場景可以看出阿里巴巴實時業(yè)務場景在各方面的挑戰(zhàn)都很大,直接將Flink社區(qū)版本在阿里上線使用是不現(xiàn)實的,因此阿里巴巴實時計算團隊這兩年也對Flink進行了全面的優(yōu)化、改進和功能擴展,其中有些功能和改進已經推回到了Flink社區(qū)。

在FlinkRuntime領域,阿里巴巴貢獻了:

·全新的分布式系統(tǒng)架構。一方面對Flink的Job調度和資源管理進行了解耦,使得Flink可以原生運行在YARN,K8S之上;另一方面將Flink的Job調度從集中式轉為了分布式,使得Flink集群規(guī)??梢愿蟮臄U展;

·完善的容錯機制。Flink默認在任何task和master失敗后,都會整個Job 重啟,阿里巴巴提出的region-basedfailover策略以及jobmanagerfailover/ha機制,讓Flink可以運行的更加可靠穩(wěn)定;

·大量的性能優(yōu)化。Flink早期只提供全量Checkpoint機制,這在阿里巴巴大規(guī)模State場景下無法正常運行,阿里巴巴提出了增量Checkpoint機制,讓Flink即使在TB級State場景下也可以高效運行;FlinkJob經常在內部算子或者UDF中訪問外部存儲系統(tǒng),例如:mysql,hbase,redis等,一旦出現(xiàn)個別query被卡住,整個task就被卡住,并通過反壓影響到整個job,阿里巴巴提出了async IO機制,大幅降低了同步IO訪問帶來的影響。 此外,阿里巴巴貢獻了credit-based的全新網絡流控機制,使得Flink網絡數(shù)據傳輸性能得到了顯著提升。

在FlinkSQL領域,阿里巴巴貢獻了全新的StreamingSQL語義和功能。例如:AggRetraction,UDX支持,DDL支持和大量的Connector適配。

Apache Flink,流計算?不僅僅是流計算!

在阿里巴巴,我們發(fā)現(xiàn)很多經典的業(yè)務場景都是同時具備實時流處理和離線批處理兩種需求,而且流處理和批處理中的業(yè)務邏輯幾乎是一樣的,但用戶需要開發(fā)兩套代碼,兩套集群資源部署,導致額外的成本。例如阿里巴巴的商品搜索索引構建流程,白天需要將商品的更新信息流式同步到搜索引擎中,讓用戶可以在搜索引擎中看到實時的商品信息,晚上需要將全量的阿里巴巴商品進行批處理構建全量索引,這就是傳統(tǒng)的Lambda架構。

Apache Flink,流計算?不僅僅是流計算!

阿里巴巴的解法是希望提供一套批流融合計算引擎,讓用戶只需開發(fā)一套業(yè)務代碼,就可以在實時和離線兩種場景下復用,這也是在2015年阿里巴巴選擇Flink作為未來大數(shù)據引擎的初衷。 Flink基于流處理機制實現(xiàn)批流融合相對Spark基于批處理機制實現(xiàn)批流融合的思想更自然,更合理,也更有優(yōu)勢,因此阿里巴巴在基于Flink支持大量核心實時計算場景的同時,也在不斷改進Flink的架構,使其朝著真正批流融合的統(tǒng)一計算引擎方向前進。

在FlinkRuntime領域,阿里巴巴提出了全新的OperatorFramework/API設計,使其能夠同時適應批流兩種算子特性;同時在Job調度和網絡Shuffle兩種核心機制上,都實現(xiàn)了靈活的插件化機制,使其能夠適應批流不同場景的需求。

在FlinkSQL領域,阿里巴巴提出了全新的QueryExecution和Optimizer架構,利用高效的二級制數(shù)據結構,更加合理的內存利用方式,更細粒度的Codegen機制以及更加豐富的優(yōu)化器策略,使得Streaming和BatchSQL都有了非常大的性能提升。

Apache Flink,流計算?不僅僅是流計算!

經過大量架構改進和性能優(yōu)化后,阿里巴巴內部Flink版本(Blink)在批處理上也實現(xiàn)了重大成果突破,在1T,10T和30T的TPC-DS的Benchmark中,Blink的性能數(shù)據均明顯超出Spark,并且性能優(yōu)勢在數(shù)據量不斷增加的趨勢下越來越明顯,這也從結果上驗證了Flink基于流做批的架構優(yōu)勢。

Apache Flink,流計算?不僅僅是流計算!

目前,阿里巴巴的內部Flink版本(Blink)已經開始支持內部批流融合的應用場景,例如阿里巴巴的搜索推薦算法平臺,流式和批量的特征以及訓練流程都已經統(tǒng)一基于Flink在運行。

Apache Flink,流計算?不僅僅是流計算!

蔣曉偉在分享的最后給出了對Flink未來的一些展望,他認為Flink除了批流融合,還有很多新的方向值得去擴展,例如:Flink可以進一步加強在機器學習和圖計算生態(tài)上的投入,從而在AI浪潮中實現(xiàn)新的突破。

此外,F(xiàn)link天然具備基于事件驅動的處理思想,天然的反壓和流控機制,以及自帶狀態(tài)管理和彈性擴縮容的能力,這些優(yōu)勢都在促使基于Flink構建微服務框架成為一種新的思想和解決方案。

Apache Flink,流計算?不僅僅是流計算!

總結蔣曉偉老師的分享,ApacheFlink過去雖然在流計算領域已經獲得很大的成功,但Flink并沒有停滯,而是正在不斷在突破自己的邊界,F(xiàn)link不僅僅是StreamingEngine,也不僅僅是BigdataEngine,未來更希望努力成為ApplicationEngine。

Apache Flink,流計算?不僅僅是流計算!

  流處理即未來

接下來來自DA(Flink創(chuàng)始公司)的CTO-StephanEwen也對Flink的發(fā)展趨勢給出類似的觀點。Stephan認為“StreamingTakesonEverything”即流處理是一切計算的基礎, Flink一方面需要朝著離線方向發(fā)展,實現(xiàn)批流融合大數(shù)據計算能力,另一方面也需要朝著更加實時在線方向發(fā)展,支持Event-Driven Application。前面已經重點闡述了Flink在批流融合計算方面的進展,接下來我們重點介紹下Flink在Event-Driven Application方向的思路。

Apache Flink,流計算?不僅僅是流計算!

傳統(tǒng)的應用服務架構一般是OnlineApp+ Database的架構,OnlineApp負責接收用戶Request,然后進行內部計算,最后將Result返回給用戶,Application的內部狀態(tài)數(shù)據存儲在Database中;在Flink的event-driven Application架構中,可以認為Flink Source接收Request,Sink返回Result, JobGraph進行內部計算,狀態(tài)數(shù)據都存儲在State中。

Apache Flink,流計算?不僅僅是流計算!

傳統(tǒng)應用服務架構需要自己負責分布式和彈性管理,并由Database負責數(shù)據一致性管理;而Flink在這兩方面是存在天然優(yōu)勢的,因為Flink天然是分布式系統(tǒng),可以自己管理彈性伸縮,此外Flink內置了狀態(tài)管理和exactlyonce一致性語義,因此基于Flink可以更方便、高效實現(xiàn)Transactional Application。

  城市級實時計算的力量

在ApacheFlink社區(qū)大神StephanEwen的分享后,來自阿里云的AI首席科學家閔萬里向大家分享了實時計算在阿里云智慧城市中發(fā)揮的力量,通過分享多個真實應用案例,讓大家對實時技術有了更多的體感和認識。

在城市大腦的業(yè)務場景中,不僅要能實時處理來自各種傳感器收集到的信息,對現(xiàn)實世界發(fā)生的事情進行響應,同時也要對未來將要發(fā)生的事情進行預測,例如:接下來那里可能要發(fā)生交通擁堵,從而提前做出干預,這才是更大的價值。整個城市大腦的架構都運行在阿里云基礎設施之上,ApacheFlink承擔了核心實時計算引擎的角色,負責處理各種結構化和非結構化數(shù)據。

Apache Flink,流計算?不僅僅是流計算!

在2018年9月的云棲大會上,阿里云發(fā)布了杭州城市大腦2.0,覆蓋杭州420平方公里,可以監(jiān)控到超過150萬輛在途行駛機動車的實況信息,這個看似簡單的事情在過去是很難做到的,現(xiàn)在我們通過1300多個路口的攝像頭、傳感器以及高德App的實時信息,通過Flink進行三流合一的處理,就可以實時感知到整個城市交通的脈搏信息,并通過進一步分析可以得出延誤、安全等交通指數(shù),預測感知城市的態(tài)勢發(fā)展。

Apache Flink,流計算?不僅僅是流計算!

在杭州,城市大腦通過實時分析4000多個交通攝像頭采集的視頻流,可以實時監(jiān)控路上車輛的異常事件,例如:車輛超速、逆行和擦碰等,并將這些異常事件實時同步到交警指揮中心進行實時報警,目前杭州的交通事件報警已經有95%來自城市大腦自動通報的,這背后都是通過Flink進行各種復雜的計算邏輯實時算出來的。實時計算讓交警處理交通故障的方式從過去的被動等待變成了主動處理,從而大幅提升城市交通的效率,為老百姓帶來實實在在的好處。

Apache Flink,流計算?不僅僅是流計算!

  這50%,關乎生死

2018年,城市大腦第一次走出國門,來到馬來西亞吉隆坡,基于實時大數(shù)據對交通進行智能調度,它可以根據救護車的行駛信息,以及沿途路況信息,智能調整紅綠燈,為救護車開辟綠色快速通道,這項技術為救護車節(jié)省了近50%的時間到達醫(yī)院,這50%的時間可能意味著人的生和死,在這里技術顯得不再骨感,實時計算的力量也許可以挽救生命。

Apache Flink,流計算?不僅僅是流計算!

在工業(yè)生產IOT場景中,大量設備的傳感器都收集了海量的指標數(shù)據,這些信息過去都被暫存2個月后丟棄了,唯一的用途就是在出現(xiàn)生產故障時拿來分析用,在有了大數(shù)據實時計算能力后,這些指標都可以被實時監(jiān)控起來,作為及時調控生產流程的依據。協(xié)鑫光伏是全球最大的光伏切片企業(yè),阿里云利用實時設備監(jiān)控,幫助其提高了1%的良品率,每年可以增加上億元的收入。

Apache Flink,流計算?不僅僅是流計算!

  滴滴實時計算平臺架構與實踐

Keynote最后一位嘉賓是來自滴滴出行的研究員羅李,大家都知道滴滴出行是一個實時出行平臺和交易引擎,它的數(shù)據和場景天然是實時的,各種網約車服務產生的數(shù)據都需要實時處理和分析。

Apache Flink,流計算?不僅僅是流計算!

滴滴的實時業(yè)務場景主要包括實時風控、實時發(fā)券、實時異常檢測,實時交易、服務和工單監(jiān)控,以及實時乘客、司機和訂單特征處理等。

滴滴實時計算平臺發(fā)展已經經歷了三個階段,第一階段是各個業(yè)務方自建小集群,造成集群和資源碎片化問題;第二階段由公司統(tǒng)一建立了大集群,提供統(tǒng)一的平臺化服務,降低了集群資源和維護成本;第三階段是通過FlinkSQL方式提供平臺化服務,通過SQL語言優(yōu)勢進一步降低業(yè)務開發(fā)成本,提升開發(fā)效率。

滴滴現(xiàn)階段基于ApacheFlink引擎建設的實時計算平臺以開源的Hadoop技術體系作為平臺底座,并通過DataStream, SQL和CEP三種API向滴滴內部業(yè)務提供實時計算服務,同時在平臺層也已經具備相對完善的WebIDE、數(shù)據血緣管理、監(jiān)控報警和多組合隔離等機制。

Apache Flink,流計算?不僅僅是流計算!

在滴滴實時業(yè)務的快速發(fā)展推動下,其實時計算集群已經達到千臺規(guī)模,每天運行2000+流計算任務,可以處理PB級的數(shù)據。

滴滴在搭建Flink實時計算平臺的過程中,在內部也對Flink做了一些改進,例如在 StreamSQL領域擴展了DDL,豐富了 UDF,支持了TTL的雙流Join和維表Join等;在CEP領域,增加了更多算子支持和規(guī)則動態(tài)修改能力等,其中部分優(yōu)化已經推回了社區(qū)。

Apache Flink,流計算?不僅僅是流計算!

最后,羅李介紹了滴滴實時計算平臺的未來規(guī)劃,主要方向在于進一步推廣StreamSQL提升業(yè)務開發(fā)效率,推動CEP在更多業(yè)務場景落地,同時完成公司內部原有SparkStreaming向Flink的遷移,并發(fā)力IOT領域。

在下午的幾個分會場中,來自阿里巴巴、騰訊、華為、滴滴、美團點評、字節(jié)跳動、愛奇藝、去哪兒、Uber、EMC、DA(Flink創(chuàng)始公司)的多位嘉賓和講師都圍繞Flink技術生態(tài)和應用場景進行了分享和交流。從分享的內容上可以看出,BAT三家中阿里巴巴和騰訊都已經完全擁抱了Flink;美團、滴滴和字節(jié)跳動(TMD)三家新興互聯(lián)網企業(yè)在實時計算場景也都已經以Flink作為主流技術方向開始建設,滴滴在Keynote上分享已經令人印象深刻,美團的實時計算集群也已經突破4000臺規(guī)模,字節(jié)跳動(頭條和抖音的母公司)的Flink生產集群規(guī)模更是已經令人驚訝的已經超過了1w臺規(guī)模 。

Apache Flink,流計算?不僅僅是流計算!

由此可見ApacheFlink的技術理念已經在業(yè)界得到了大量認可,基于Flink的實時計算解決方案開始在國內占據主流趨勢。下一步Flink需要一方面繼續(xù)完善流計算能力,爭取在IOT等更多場景落地,與此同時進一步加強在批流融合能力上的全面突破,并完善在機器學習和AI生態(tài)上的建設,以及在event-driven的application和微服務場景上進行更長遠的探索。

最后期待明年在下一屆FlinkForwardChina上,會有更多國內外公司來分享Flink技術,展示出更加豐富的應用場景和案例,讓我們看到一個更加枝繁葉茂的ApacheFlink生態(tài)系統(tǒng)。

極客網企業(yè)會員

免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現(xiàn)的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2019-01-03
Apache Flink,流計算?不僅僅是流計算!
作者:王峰(花名:莫問)阿里巴巴 資深技術專家摘要:FlinkForwardChina 主要講了啥,看這一篇文章就夠了2018年12月20日,由阿里巴巴集團主辦

長按掃碼 閱讀全文