今年的雙11,,實(shí)時計算處理的流量洪峰創(chuàng)紀(jì)錄地達(dá)到了每秒40億條的記錄,,數(shù)據(jù)體量也達(dá)到了驚人的每秒7TB,,基于Flink的流批一體數(shù)據(jù)應(yīng)用開始在阿里巴巴最核心的數(shù)據(jù)業(yè)務(wù)場景嶄露頭角,并在穩(wěn)定性,、性能和效率方面都經(jīng)受住了嚴(yán)苛的生產(chǎn)考驗(yàn),。本文深度解析“流批一體”在阿里核心數(shù)據(jù)場景首次落地的實(shí)踐經(jīng)驗(yàn),回顧“流批一體”大數(shù)據(jù)處理技術(shù)的發(fā)展歷程,。 隨著 11 月 11 日 12 點(diǎn)鐘聲的敲響,,2020 年雙 11 的 GMV 數(shù)字定格在了 4982 億,在 Flink 實(shí)時計算技術(shù)的驅(qū)動下全程保持了絲般順滑滾動,,基于 Flink 的阿里巴巴實(shí)時計算平臺也圓滿完成了今年雙 11 整體經(jīng)濟(jì)體的實(shí)時數(shù)據(jù)任務(wù)保障,,再次平穩(wěn)度過全年大考。除了 GMV 媒體大屏之外,,F(xiàn)link 還支持了諸如搜索推薦實(shí)時機(jī)器學(xué)習(xí),,廣告實(shí)時反作弊,菜鳥訂單狀態(tài)實(shí)時跟蹤反饋,,云服務(wù)器的實(shí)時攻擊探測以及大量基礎(chǔ)設(shè)施的監(jiān)控報警等等重要業(yè)務(wù),。實(shí)時業(yè)務(wù)量和數(shù)據(jù)量每年都在大幅增長,今年的實(shí)時計算峰值達(dá)到了創(chuàng)紀(jì)錄的每秒 40 億條記錄,,數(shù)據(jù)體量也達(dá)到了驚人的7 TB 每秒,,相當(dāng)于一秒鐘需要讀完 500 萬本《新華字典》。截止目前,,我們的實(shí)時計算作業(yè)數(shù)達(dá)到了 35000 多個,,集群總計算規(guī)模也達(dá)到了超過 150 萬核,在中國乃至世界范圍內(nèi)都處于領(lǐng)先水平,。至此,,F(xiàn)link 已經(jīng)支持了阿里經(jīng)濟(jì)體所有的實(shí)時計算需求,實(shí)現(xiàn)了全鏈路數(shù)據(jù)實(shí)時化,,第一時間為消費(fèi)者,、商家以及運(yùn)營人員帶來了數(shù)據(jù)的價值。但今年 Flink 技術(shù)演進(jìn)帶來的價值不僅于此,,基于 Flink 的流批一體數(shù)據(jù)應(yīng)用也開始在阿里巴巴最核心的數(shù)據(jù)業(yè)務(wù)場景嶄露頭角,,并在穩(wěn)定性、性能和效率方面都經(jīng)受住了嚴(yán)苛的生產(chǎn)考驗(yàn),。“流批一體”在阿里核心數(shù)據(jù)場景首次落地事實(shí)上,,F(xiàn)link 流批一體技術(shù)很早就在阿里巴巴內(nèi)部開始應(yīng)用了。Flink 在阿里的發(fā)展始于搜索推薦場景,,因此搜索引擎的索引構(gòu)建以及機(jī)器學(xué)習(xí)的特征工程都已經(jīng)是基于 Flink的 批流一體架構(gòu),。今年雙11,F(xiàn)link 更進(jìn)一步,,利用流批一體計算能力,,助力數(shù)據(jù)中臺實(shí)現(xiàn)更加精準(zhǔn)的實(shí)時離線交叉數(shù)據(jù)分析和業(yè)務(wù)決策,。阿里的數(shù)據(jù)報表分為實(shí)時和離線兩種,前者在諸如雙 11 大促場景下的作用尤為明顯,,可以為商家,、運(yùn)營以及管理層提供各種維度的實(shí)時數(shù)據(jù)信息,并幫助其及時作出決策,,提升平臺和業(yè)務(wù)效率,。例如:在典型的營銷數(shù)據(jù)實(shí)時分析場景,運(yùn)營和決策層需要對比大促當(dāng)天某個時間段和歷史某個時間段的數(shù)據(jù)結(jié)果(比如大促當(dāng)天 10 點(diǎn)的成交額和昨天 10 點(diǎn)成交額的對比),,從而判斷當(dāng)前營銷的效果,,以及是否需要進(jìn)行調(diào)控、如何調(diào)控等策略,。在上面這種營銷數(shù)據(jù)分析場景下,,實(shí)際上需要兩套數(shù)據(jù)分析結(jié)果,一套是基于批處理技術(shù)在每天晚上計算出的離線數(shù)據(jù)報表,,一套是基于流處理技術(shù)算出當(dāng)天的實(shí)時數(shù)據(jù)報表,,然后針對實(shí)時和歷史數(shù)據(jù)進(jìn)行對比分析,根據(jù)對比結(jié)果進(jìn)行相關(guān)決策,。離線和實(shí)時報表分別是基于批和流兩種不同計算引擎產(chǎn)出,,即批和流分離的架構(gòu)不僅會有兩套開發(fā)成本,,更難以解決的是數(shù)據(jù)邏輯和口徑對齊問題,,很難保證兩套技術(shù)開發(fā)出的數(shù)據(jù)統(tǒng)計結(jié)果是一致的。因此,,理想的解決方案就是利用一套流批一體的計算引擎進(jìn)行數(shù)據(jù)分析,,這樣離線和實(shí)時報表將天然一致。鑒于 Flink 流批一體計算技術(shù)的不斷成熟,,以及前期在搜索推薦場景的成功落地,,今年雙 11 數(shù)據(jù)平臺開發(fā)團(tuán)隊(duì)也展示出堅(jiān)定的信心和信任,與 Flink 實(shí)時計算團(tuán)隊(duì)并肩作戰(zhàn),,共同推動實(shí)時計算平臺技術(shù)升級,,第一次讓基于 Flink 的流批一體數(shù)據(jù)處理技術(shù)在雙 11 最核心的數(shù)據(jù)場景順利落地。今年由 Flink 團(tuán)隊(duì)和數(shù)據(jù)平臺團(tuán)隊(duì)共同推動的流批一體計算框架在雙 11 數(shù)據(jù)核心場景成功首秀,,也得到了阿里數(shù)據(jù)中臺負(fù)責(zé)人朋新宇在業(yè)務(wù)層的認(rèn)可:流批一體在技術(shù)上,,實(shí)現(xiàn)了哪怕是多個計算處理模式,也只需要撰寫一套代碼就能兼容,。在計算速度上比其他框架快1倍,、查詢快4倍,給小二們搭建數(shù)據(jù)報表提升了4-10倍的速度,。同時,,由于'一體化'的特性,,能實(shí)現(xiàn)實(shí)時與離線數(shù)據(jù)的完全一致。除了在業(yè)務(wù)開發(fā)效率和計算性能上的進(jìn)步,,流批一體計算架構(gòu)也讓集群資源利用率得到大幅提升,。阿里的 Flink 實(shí)時集群經(jīng)過最近幾年的高速擴(kuò)展,已經(jīng)達(dá)到了百萬核 CPU 的計算規(guī)模,,上面運(yùn)行著數(shù)萬個 Flink 實(shí)時計算任務(wù),。白天是實(shí)時數(shù)據(jù)業(yè)務(wù)的高峰期,晚上業(yè)務(wù)低峰期計算資源出現(xiàn)空閑,,正好可以為離線批任務(wù)提供免費(fèi)的計算資源,。批和流一套引擎,運(yùn)行在一套資源底座上,,天然的削峰填谷,,自然的混布,不僅節(jié)省了開發(fā)成本,,同時也大幅節(jié)省了運(yùn)維成本和資源成本,。今年雙 11,基于 Flink 的流批一體數(shù)據(jù)業(yè)務(wù),,沒有額外申請任何資源,,批模式全部復(fù)用 Flink 實(shí)時計算集群,集群利用率大幅提升,,為業(yè)務(wù)方節(jié)省了大量的資源開銷,,高效的資源模式也為后續(xù)更多業(yè)務(wù)創(chuàng)新提供了沃土。“流批一體”,,F(xiàn)link 十年磨一劍接下來讓我們從技術(shù)角度聊一下“流批一體”大數(shù)據(jù)處理技術(shù)的發(fā)展歷程,。這要從開源大數(shù)據(jù)技術(shù)的鼻祖 Hadoop 開始談起,10 多年前 Hadoop 作為第一代開源大數(shù)據(jù)技術(shù)出現(xiàn),,MapReduce 作為第一代批處理技術(shù)解決了大規(guī)模數(shù)據(jù)處理問題,,Hive 的出現(xiàn)更是讓用戶可以用 SQL 的方式進(jìn)行大規(guī)模數(shù)據(jù)的計算。但隨著大數(shù)據(jù)業(yè)務(wù)場景的逐步發(fā)展,,很多應(yīng)用都對數(shù)據(jù)實(shí)時化產(chǎn)生了越來越強(qiáng)烈的需求,,例如:社交媒體,電商交易,,金融風(fēng)控等行業(yè),。在這個需求背景下,Storm 作為第一代大數(shù)據(jù)流處理技術(shù)應(yīng)運(yùn)而生,,Storm 在架構(gòu)上和 Hadoop / Hive 完全不同,,它是完全基于消息的流式計算模型,可以在毫秒級延遲情況下并發(fā)處理海量數(shù)據(jù),,因此 Storm 彌補(bǔ)了 Hadoop MapReduce 和 Hive 在時效性上的不足,。就這樣大數(shù)據(jù)計算在批和流兩個方向都有了各自不同的主流引擎,,并呈現(xiàn)出涇渭分明的格局,大數(shù)據(jù)處理技術(shù)經(jīng)歷完了第一個時代,。隨后大數(shù)據(jù)處理技術(shù)來到了第二個時代,, Spark 和 Flink 兩款計算引擎在新時代陸續(xù)登場。Spark 相對于 Hadoop 和 Hive,,具備更加完善的批處理表達(dá)能力和更加優(yōu)秀的性能,,這讓 Spark 社區(qū)迅速發(fā)展,并逐步超越了 老牌的 Hadoop 和 Hive,,成為批處理技術(shù)領(lǐng)域的主流技術(shù),。但 Spark 并未止步于批處理技術(shù),很快 Spark 也推出了流計算解決方案,,即 Spark Streaming,,并不斷進(jìn)行改進(jìn)完善。但大家都知道 Spark 的核心引擎是面向“批處理”概念的,,不是一款純流式計算引擎,,在時效性等問題上無法提供極致的流批一體體驗(yàn)。但 Spark 基于一套核心引擎技術(shù),,同時實(shí)現(xiàn)流和批兩種計算語義的理念是非常先進(jìn)的,,與其具備相同流批一體理念的還有另一款新引擎 Flink。Flink 正式亮相比 Spark 稍微晚一些,,但其前身是來自德國柏林工業(yè)大學(xué) 2009 年的研究項(xiàng)目 Stratosphere,,至今也有 10 年之久。Flink 的理念和目標(biāo)也是利用一套計算引擎同時支持流和批兩種計算模式,,但它和 Spark 相比選擇了不同的實(shí)現(xiàn)路線,。Flink 選擇了面向“流處理”的引擎架構(gòu),,并認(rèn)為“批”其實(shí)是一種“有限流”,,基于流為核心的引擎實(shí)現(xiàn)流批一體更加自然,并且不會有架構(gòu)瓶頸,,我們可以認(rèn)為 Flink 選擇了 ”batch on streaming“ 的架構(gòu),,不同于 Spark 選擇的 “streaming on batch” 架構(gòu)。Flink 實(shí)現(xiàn)完善的流批一體架構(gòu)也不是一蹴而就的,,在早期的 Flink 版本中,,F(xiàn)link的流和批無論在 API 還是在Runtime 上都還沒有達(dá)到徹底的統(tǒng)一。但從 1.9 版本開始,,F(xiàn)link 開始加速在流批一體上進(jìn)行完善和升級,,F(xiàn)link SQL 作為用戶使用的最主流 API,率先實(shí)現(xiàn)了流批一體語義,,使得用戶只需學(xué)習(xí)使用一套 SQL 就可以進(jìn)行流批一體的開發(fā),,大幅節(jié)省開發(fā)成本,。但是 SQL 并不能解決用戶的所有需求。一些定制化程度較高,,比如需要精細(xì)化的操縱狀態(tài)存儲的作業(yè)還是需要繼續(xù)使用 DataStream API,。在常見的業(yè)務(wù)場景中,用戶寫了一份流計算作業(yè)后,,一般還會再準(zhǔn)備一個離線作業(yè)進(jìn)行歷史數(shù)據(jù)的批量回刷,。但是 DataStream 雖然能很好的解決流計算場景的各種需求,但卻缺乏對批處理的高效支持,。因此,,F(xiàn)link 社區(qū)在完成 SQL 流批一體升級之后,從 1.11 版本也開始投入大量精力對 DataStream 進(jìn)行流批一體能力的完善,,在 DataSteam API 上增加批處理的語義,,同時結(jié)合流批一體 Connector 的設(shè)計,讓 DataStream API 能夠在流批融合場景下對接 Kafka 和 HDFS 等不同類型流批數(shù)據(jù)源,。 接下來流批一體的迭代計算 API 也將被引入到 DataStream 中,,進(jìn)一步解鎖一系列機(jī)器學(xué)習(xí)的場景。在當(dāng)前 Flink 主版本中,,不管是 SQL 還是 DataStream API,,在流批一體概念上都還是流計算和批計算功能的一個結(jié)合體。用戶編寫的代碼,,需要選擇使用流的方式跑,,還是批的方式跑。但有些業(yè)務(wù)場景已經(jīng)提出更高的要求,,即流批混合的需求,,并且自動的在批和流之間自動切換,例如:數(shù)據(jù)集成以及數(shù)據(jù)入湖場景,,用戶的需求是先把數(shù)據(jù)庫的全量數(shù)據(jù)同步到 HDFS 或者云存儲上,,然后再自動實(shí)時同步 DB 中的增量數(shù)據(jù)上去,并在同步過程中進(jìn)行 流批混合的 ETL 數(shù)據(jù)處理,,F(xiàn)link 也將在后續(xù)繼續(xù)支持更加智能的流批融合場景,。Flink “流批一體”技術(shù)在阿里巴巴的發(fā)展歷程阿里巴巴是國內(nèi)最早選擇 Flink 開源技術(shù)的公司,在 2015 年我所在的搜索推薦團(tuán)隊(duì)希望面向未來5-10 年的發(fā)展,,選擇一款新的大數(shù)據(jù)計算引擎,,用來處理搜索推薦后臺海量商品和用戶數(shù)據(jù),由于電商行業(yè)對時效性具備非常高的訴求,,因此我們希望新的計算引擎既有大規(guī)模批處理能力,,也具備毫秒級實(shí)時處理能力,即一款流批統(tǒng)一的引擎,當(dāng)時 Spark 的生態(tài)已經(jīng)走向成熟,,并且通過 Spark Streaming 提供了流批一體的計算能力,,而 Flink 當(dāng)時剛剛在前一年成為Apache頂級項(xiàng)目,還是一個冉冉升起的新星項(xiàng)目,,當(dāng)時團(tuán)隊(duì)內(nèi)部針對 Spark 和 Flink 經(jīng)過了一段時間的調(diào)研和討論,,一致認(rèn)為雖然 Flink當(dāng)時生態(tài)并不成熟,但其基于流處理為核心的架構(gòu)對于流批一體的支持更加合適,,因此非常迅速的做出決定,,在阿里內(nèi)部基于開源 Flink 進(jìn)行完善和優(yōu)化,搭建搜索推薦的實(shí)時計算平臺,。經(jīng)過團(tuán)隊(duì)一年的努力,,基于 Flink 的搜索推薦實(shí)時計算平臺成功的支持了2016 年的搜索雙 11,保證了搜索推薦全鏈路實(shí)時化,。通過在阿里最核心業(yè)務(wù)場景的落地證明,,也讓全集團(tuán)都認(rèn)識了 Flink 實(shí)時計算引擎,并決定將全集團(tuán)實(shí)時數(shù)據(jù)業(yè)務(wù)都將遷移到 Flink 實(shí)時計算平臺上,。又經(jīng)過一年的努力,,F(xiàn)link 在 2017 年雙 11 不負(fù)眾望,非常順利的支持了全集團(tuán)雙 11 的實(shí)時數(shù)據(jù)業(yè)務(wù),,包括 GMV 大屏等最核心的數(shù)據(jù)業(yè)務(wù)場景,。2018 年 Flink 開始走向云端,阿里云上推出了基于 Flink 的實(shí)時計算產(chǎn)品,,旨在為廣大中小企業(yè)提供云計算服務(wù),。飲水思源,阿里巴巴不僅希望利用 Flink 技術(shù)解決自己業(yè)務(wù)的問題,,同樣也希望能夠推動 Flink 開源社區(qū)更快的發(fā)展,,為開源技術(shù)社區(qū)做出更多貢獻(xiàn),因此阿里巴巴在 2019 年初收購了 Flink 創(chuàng)始公司和團(tuán)隊(duì) Ververica,,開始投入更多資源在 Flink 生態(tài)和社區(qū)上,。到了 2020 年,國內(nèi)外主流科技公司幾乎都已經(jīng)選擇了 Flink 作為其實(shí)時計算解決方案,,我們看到 Flink 已經(jīng)成為大數(shù)據(jù)業(yè)界實(shí)時計算的事實(shí)標(biāo)準(zhǔn),。接下來,,F(xiàn)link 社區(qū)不會停止技術(shù)創(chuàng)新,,在阿里巴巴業(yè)務(wù)場景中流批一體技術(shù)已經(jīng)從理論走向落地。2020 年的雙 11,,F(xiàn)link 流批一體技術(shù)在天貓營銷決策核心系統(tǒng)中給出了精彩的表現(xiàn),,加上之前已經(jīng)在搜索推薦中成功運(yùn)行的流批一體索引構(gòu)建以及機(jī)器學(xué)習(xí)流程,充分驗(yàn)證了5 年前我們大膽選擇 Flink 技術(shù)體系的正確性,相信未來我們將會在更多公司看到 Flink 流批一體技術(shù)的落地,。“流批一體”技術(shù)創(chuàng)新,,推動 Flink 開源社區(qū)蓬勃發(fā)展Flink 堅(jiān)持流批一體技術(shù)創(chuàng)新之路,也自然推動 Flink 開源社區(qū)的高速發(fā)展和生態(tài)的加速繁榮,。我們欣喜的看到,,隨著 Flink 在國內(nèi)更多公司的加速落地,來自中文社區(qū)力量日益龐大,,已經(jīng)開始逐漸超越國外成為主流,。首先最明顯的是用戶數(shù)量的增多,從今年 6 月份起,,F(xiàn)link 中文郵件列表的活躍度開始超越英文郵件列表,。隨著大量的用戶涌入 Flink 社區(qū),也帶來了更多的優(yōu)秀代碼貢獻(xiàn)者,,有效的促進(jìn)了 Flink 引擎的開發(fā)迭代,。自 1.8.0 版本以來,F(xiàn)link 每個版本的 Contributor 數(shù)量都在提升,,其中大多數(shù)都是來自國內(nèi)的各大企業(yè),。毫無疑問,來自國內(nèi)的開發(fā)者和用戶群體,,已經(jīng)逐漸成為推動 Flink 向前發(fā)展的中堅(jiān)力量,。中文社區(qū)的不斷壯大,使得 Flink 整體的活躍度和 2019 年相比有增無減,。在 Apache 軟件基金會 2020 財年的報告中,,F(xiàn)link 蟬聯(lián)了年度最活躍項(xiàng)目(通過 user+dev 郵件列表活躍度)。與此同時,,在代碼 Commit 次數(shù)和 Github 主頁流量這兩項(xiàng)指標(biāo)上,,F(xiàn)link 均排名第二。能在 Apache 軟件基金會接近 350個 頂級項(xiàng)目中取得如此成績,,著實(shí)不易,。Flink Forward Asia 2020,“流批一體”技術(shù)揭秘Flink Forward 是由 Apache 官方授權(quán)的 Flink 技術(shù)大會,, 今年 Flink Forward Asia (簡稱:FFA) 大會全程采用在線直播的方式,,免費(fèi)為廣大開發(fā)者提供一場開源大數(shù)據(jù)技術(shù)盛宴,足不出戶可以在線觀看來自 阿里巴巴,、螞蟻科技,、騰訊、字節(jié)跳動,、美團(tuán),、小米,、快手、B 站,、網(wǎng)易,、微博、Intel,、DellEMC,、Linkedin 等國內(nèi)外一線互聯(lián)網(wǎng)公司針對 Flink 的技術(shù)實(shí)踐分享和技術(shù)創(chuàng)新。流批一體也將是本屆 FFA 大會的熱門話題,,來自天貓數(shù)據(jù)技術(shù)負(fù)責(zé)人將會給大家分享 Flink 流批一體技術(shù)在阿里的實(shí)踐和落地,,讓大家看到流批一體技術(shù)是如何在雙 11 最核心的場景中發(fā)揮業(yè)務(wù)價值;來自阿里巴巴,、字節(jié)跳動的 Flink PMC 和 Committer 技術(shù)專家將圍繞 Flink 流批一體 SQL 和 Runtime 進(jìn)行深度技術(shù)解讀,,為大家?guī)?Flink 社區(qū)的最新技術(shù)進(jìn)展;來自騰訊的游戲技術(shù)專家將為大家?guī)?Flink 在國民游戲王者榮耀中的應(yīng)用實(shí)踐,;來自美團(tuán)的實(shí)時大數(shù)據(jù)負(fù)責(zé)人將為大家介紹 Flink 如何助力生活服務(wù)場景實(shí)時化,;來自快手大數(shù)據(jù)負(fù)責(zé)人將為大家?guī)?Flink 在快手的前世今生發(fā)展歷程;來自微博的機(jī)器學(xué)習(xí)技術(shù)專家將為大家?guī)砣绾卫?Flink 進(jìn)行信息推薦,。此外,,F(xiàn)link 相關(guān)的議題還涵蓋了金融、銀行,、物流,、汽車制造、出行等各行各業(yè),,呈現(xiàn)出百花齊放的繁榮生態(tài)景象,。歡迎對開源大數(shù)據(jù)技術(shù)有熱情的開發(fā)者能參加本屆 Flink Forward Asia 技術(shù)大會,了解更多 Flink 社區(qū)最新技術(shù)發(fā)展和創(chuàng)新,。
|