某清華姚班相關(guān)背景AI公司 急需大數(shù)據(jù)平臺架構(gòu)(Leader) 以及 實時計算架構(gòu)專家(Leader)
感興趣的小伙伴歡迎來電或是加微信咨詢
13810607874(12年互聯(lián)網(wǎng)獵頭Frank)
以上市廣告
以下是正文
作者介紹
王峰,淘寶花名”莫問",2006年畢業(yè)后即加入阿里巴巴集團,長期從事搜索和大數(shù)據(jù)基礎(chǔ)技術(shù)研發(fā)工作,目前在計算平臺事業(yè)部,負責(zé)實時計算北京研發(fā)團隊。
在阿里巴巴的11年工作期間,持續(xù)專注大數(shù)據(jù)計算與存儲技術(shù)領(lǐng)域,基于Hadoop開源生態(tài)打造的數(shù)據(jù)基礎(chǔ)設(shè)施一直服務(wù)于搜索、推薦等阿里核心電商業(yè)務(wù)場景,最近一年帶領(lǐng)團隊對Apache Flink進行了大量架構(gòu)改進、功能完善和性能提升,打造出了阿里新一代實時計算引擎: Blink。目前數(shù)千臺規(guī)模的Blink生產(chǎn)集群已經(jīng)開始在線支持搜索、推薦、廣告、螞蟻金服等核心實時業(yè)務(wù)場景。

王峰在清華大學(xué)演講
實時計算時代來臨
隨著互聯(lián)網(wǎng)應(yīng)用的普及、智能硬件的發(fā)展,數(shù)據(jù)的種類和規(guī)模都呈現(xiàn)了爆炸式的增長,各行各業(yè)都希望能夠從大數(shù)據(jù)中發(fā)掘出更深層次的信息和知識,并產(chǎn)生實際價值。數(shù)據(jù)挖掘手段也逐漸從基本的數(shù)據(jù)統(tǒng)計向更高層次的機器學(xué)習(xí)和深度學(xué)習(xí)演變,但這些都需要強大的計算能力作為支撐,因此大數(shù)據(jù)價值的體現(xiàn)離不開大數(shù)據(jù)計算平臺的發(fā)展。
目前大數(shù)據(jù)業(yè)界在計算技術(shù)上已經(jīng)取得了顯著的成果,例如:第一代開源的大數(shù)據(jù)處理技術(shù)Hadoop已經(jīng)可以處理超大規(guī)模的數(shù)據(jù)集合,第二代開源的大數(shù)據(jù)處理技術(shù)Spark更好的利用了內(nèi)存,并進一步加快了大數(shù)據(jù)處理的性能。
各大公司也都基于自身業(yè)務(wù)場景和數(shù)據(jù)規(guī)模定制了自己的大數(shù)據(jù)計算平臺,但這些大數(shù)據(jù)計算平臺大都是批處理系統(tǒng),雖然具備海量數(shù)據(jù)處理能力,但在時效性上有明顯的滯后。顯然,數(shù)據(jù)的價值不僅體現(xiàn)在空間維度上,同時也在時間維度上進行伸展,很多場景下數(shù)據(jù)的價值也會隨著時間的流逝而逐漸消失。因此,大數(shù)據(jù)計算平臺需要能夠盡可能的提升計算的時效性,越快地從數(shù)據(jù)中挖掘出信息就意味著能夠獲取到更大的價值。
時效性對數(shù)據(jù)價值的影響尤其在電子商務(wù)領(lǐng)域更加明顯。通常人們在不同時刻會有著不同的消費需求和潛在目標。很多時候,這些需求和目標都是臨時的(即和歷史行為關(guān)聯(lián)度較低),并且從產(chǎn)生到結(jié)束之間的時間是非常有限的。這種情況在阿里巴巴雙十一大促這樣的場景中表現(xiàn)的尤為明顯。
大促場景下,用戶會由于豐富的促銷活動和環(huán)境而臨時產(chǎn)生更多的購物需求,并且每個購物需求的有效期是有限的。因此,搜索和推薦系統(tǒng)需要及時發(fā)現(xiàn)用戶的需求變化,在數(shù)據(jù)有效期內(nèi)完成模型更新,推薦用戶當(dāng)前感興趣的商品。此外,阿里巴巴的數(shù)據(jù)大屏也需要在大促期間實時展示成交額等大家關(guān)注的統(tǒng)計信息,而不是大促結(jié)束后第二天再讓大家看到數(shù)據(jù)。
其實目前不僅在阿里巴巴,各個行業(yè)都對大數(shù)據(jù)時效性的計算需求在日益增加,因此,阿里巴巴需要研發(fā)世界級一流的流式計算引擎,實時處理海量數(shù)據(jù),提供在線統(tǒng)計、學(xué)習(xí)和預(yù)測能力,不僅支持阿里巴巴自己的核心電商場景,同時也能通過阿里云向外部中小企業(yè)提供流式計算服務(wù),輸出實時計算能力,這就是我今天要分享的最新一代阿里巴巴實時計算引擎Blink。
流式計算介紹
顯然批量計算模型是無法滿足當(dāng)前大數(shù)據(jù)實時計算需求的,只有流式計算模型才是實時計算的天然計算模型,因此我先介紹下流式計算的基本思想,尤其是區(qū)別于傳統(tǒng)批量計算的一些概念。批量計算是對于有限固定的數(shù)據(jù)集合進行處理,流式計算是對無限數(shù)據(jù)流的處理,即計算無法確定數(shù)據(jù)何時會結(jié)束。從另一個角度看,批量計算其實也可以認為是流式計算的一種特例,因此批量計算可以看做是一個數(shù)據(jù)流中的片段,即有明確開始和結(jié)束標記的數(shù)據(jù)流,如下圖所示:
完善的流式計算不僅應(yīng)該提供實時計算能力,還應(yīng)該支持計算過程中的狀態(tài)管理,狀態(tài)主要是指計算過程中需要的數(shù)據(jù)或者變量,例如:統(tǒng)計計算中的aggregation(sum/min/max…),機器學(xué)習(xí)中的feature和model,狀態(tài)管理包括這些數(shù)據(jù)的存儲、備份、恢復(fù),版本管理,提供讀寫訪問API,并保證一致性,如下圖所示:


流和批統(tǒng)一的計算引擎

完整的生態(tài)系統(tǒng)

狀態(tài)管理和一致性
Chandy-Lamport算法是Flink支持狀態(tài)管理和強一致性的核心理論基礎(chǔ),算法基礎(chǔ)思想如下圖所示:

Chandy-Lamport算法的核心思想就是定期在流式計算任務(wù)中插入Barrier,然后觸發(fā)整個流做一次Checkpoint,即將任務(wù)的State做一次Snapshot持久化保存。在下次任務(wù)重啟的時候,可以基于上次成功的Checkpoint進行恢復(fù),過程如下圖所示:

Flink的問題
綜上所述,F(xiàn)link是一套理念和架構(gòu)設(shè)計非常先進的流處理引擎,并幾乎支持了流式計算所有的特質(zhì),但Flink發(fā)展尚在初期,在活躍度和成熟度上稍有欠缺,并且尚未在業(yè)內(nèi)得到大規(guī)模生產(chǎn)實踐的檢驗,因此是無法直接應(yīng)用在阿里巴巴這種級別的生產(chǎn)場景中的,因此我們在2015年下半年啟動了Blink項目,目標是擴展、優(yōu)化、完善Flink,使其能夠應(yīng)用在阿里巴巴大規(guī)模實時計算場景,并將此項目命名為Blink,下面我將介紹Blink的設(shè)計以及在阿里巴巴的應(yīng)用。
Blink介紹
Blink產(chǎn)生背景
在2015年,當(dāng)時我們還是阿里巴巴搜索事業(yè)部的數(shù)據(jù)技術(shù)團隊,負責(zé)阿里巴巴所有商品搜索后臺的數(shù)據(jù)處理,包括淘寶,天貓,B2B等全球商品,面對海量商品的數(shù)據(jù)處理,我們需要在維護兩套數(shù)據(jù)處理流程,一套是每天晚上的全量流程,同時還要一套白天的實時增量流程,為了降低開發(fā)和維護成本,我們開始探索一套流和批統(tǒng)一的計算引擎。
當(dāng)時我們重點分析對比了Spark和Flink兩套技術(shù),最后雖然覺得Spark相對成熟穩(wěn)定,但Spark是從Batch出發(fā),模擬Streaming,而Flink正好相反是從Streaming出發(fā),認為Batch是Streaming的Special Case,因此我們感覺Flink的設(shè)計思想更先進,更適合未來的計算發(fā)展方向,更適合我們的需求,因此我們決定選擇Flink技術(shù)方向。
Blink - Alibaba Flink
雖然Flink具備流計算的各種優(yōu)勢,但Flink在成熟度和活躍度上的不足,使得我們無法在阿里巴巴業(yè)務(wù)場景中直接使用,因此我們啟動了Blink項目,目標就是擴展、優(yōu)化、完善Flink,使其能夠應(yīng)用在阿里巴巴大規(guī)模實時計算場景,并將我們在阿里巴巴對Flink的改進都回饋給開源社區(qū)。
最近一年中Blink已經(jīng)將多項架構(gòu)、功能和性能改進貢獻給Flink社區(qū),例如:
- Flink架構(gòu)升級,插件化原生支持不同調(diào)度系統(tǒng),并實現(xiàn)了原生運行在Hadoop YARN上
- Failover穩(wěn)定性改進,優(yōu)化了Task/TaskManager以及JobManager各種組件Fail的場景處理
- 提出并實現(xiàn)了增量式Checkpoint的架構(gòu),使得Flink的Checkpoint/Recovery速度大幅提升,成本明顯下降
- 提出并實現(xiàn)了Async Operator,通過異步方式,讓I/O密集型計算節(jié)點的性能大幅提升
- 提出了大量Table API的全新設(shè)計,以及流和批在SQL層面的統(tǒng)一概念和方案
Blink在阿里巴巴的現(xiàn)狀

Blink實時計算引擎在阿里巴巴內(nèi)部是運行在Hadoop集群上的,Blink計算任務(wù)會根據(jù)自己的需求向YARN申請計算資源,運行過程中周期性將計算狀態(tài)持久化到HDFS上,以方便隨時恢復(fù),因此可以看出新型的Blink計算平臺也可以很好的leverage成熟的Hadoop生態(tài)。
在API層,Blink提供了基礎(chǔ)的DataStream/DataSet API,用戶可以利用基礎(chǔ)API有較高自由度的開發(fā)。此外,Blink重點提供了Table API/SQL這種高級語言API,可以降低門檻讓更多開發(fā)人員以更低成本進行開發(fā),這對于更多更快速的業(yè)務(wù)接入是非常有價值了,而且在SQL層Flink之前的進展是非常緩慢的,Blink對Flink給與了非常及時的補充和完善。
此外,基于Blink,我們建設(shè)出了一套在線機器學(xué)習(xí)平臺Porsche,其為算法人員提供了一套非常豐富的算法插件機制,幫助算法人員快速搭建各種常用的機器學(xué)習(xí)流程。因此,Porsche完全leverage了Blink的實時計算能力,并釋放了Blink在實時在線機器學(xué)習(xí)領(lǐng)域的力量。
目前Blink已經(jīng)在阿里巴巴生產(chǎn)環(huán)境運行將近一年時間,支持了阿里巴巴多條核心業(yè)務(wù)線,例如:搜索,推薦,推薦,螞蟻和安全等,大致的生產(chǎn)運行規(guī)模如下所示:
- 運行的總機器數(shù)已經(jīng)超過3000臺
- 最大的生產(chǎn)集群機器數(shù)已經(jīng)超過1500臺
- 每秒支持數(shù)十億次的實時計算
- 最大的生產(chǎn)任務(wù)已經(jīng)超過5000個并發(fā),包含10TB級的State,億級TPS
Blink在去年阿里巴巴雙11購物節(jié)中完成了第一次正式的挑戰(zhàn),搜索和推薦全實時鏈路全天穩(wěn)定運行,不僅保證了淘寶、天貓商品實時更新無延遲,同時基于Blink的在線機器學(xué)習(xí)平臺Porsche由于能夠較好的將用戶和商品行為實時學(xué)習(xí),因此產(chǎn)生了非常好的時效性效果,大幅提升了雙11商品成交轉(zhuǎn)化率。
例如:雙11當(dāng)天有很多爆款商品,銷售速度非常快,可能很快售罄,如果將用戶都引導(dǎo)到這些商品上,會導(dǎo)致用戶實際沒有成交機會,浪費大量流量,良好的時效性數(shù)據(jù)可以讓在線學(xué)習(xí)平臺較快的預(yù)測到這種場景,并將用戶流量進行更加合理的分配。因此可以看出,基于實時計算的在線機器學(xué)習(xí)平臺其實已經(jīng)開始真正走向舞臺,并產(chǎn)生巨大價值。
Blink在阿里巴巴的經(jīng)典案例
實時A/B Test
A/B Test的目標就是通過實時數(shù)據(jù)分析和統(tǒng)計反饋,不斷調(diào)整在線系統(tǒng)的算法模型,自動適應(yīng)到最佳效果, A/B Test數(shù)據(jù)收集和處理流程大致如下圖所示,Blink任務(wù)從線上日志實時同步用戶行為數(shù)據(jù),然后解析、過濾、統(tǒng)計,最終將各項統(tǒng)計指標寫入OLAP系統(tǒng)中,讓算法或者運營人員可以實時看到線上實際效果,從而合理調(diào)整配置各種模型,逐步達到最佳效果。

商品數(shù)索引構(gòu)建流程
淘寶的搜索引擎是用戶在淘寶購物的最主要入口,淘寶的商品數(shù)據(jù)處理和索引構(gòu)建流程大致如下圖所示,淘寶的商品庫都存儲的阿里巴巴的MySQL集群中,搜索的數(shù)據(jù)處理流程需要從MySQL將數(shù)據(jù)同步到搜索引擎后臺的HBase存儲中(類似:Google都將網(wǎng)頁抓取到BigTable中),然后進行各種業(yè)務(wù)邏輯處理和索引構(gòu)建,最終將索引推送到在線搜索引擎中提供搜索服務(wù)。
由于淘寶的商品搜索引擎需要在每天白天不斷進行實時商品更新,同時晚上還需要一套額外的全量商品更新流程,因此基于Blink的統(tǒng)一計算模型,流式計算和批量計算可以使用一套用戶邏輯代碼完成。

Porsche – 在線機器學(xué)習(xí)平臺
在線機器學(xué)習(xí)平臺利用了Blink強大的實時計算能力,能夠?qū)崟r的對海量用戶和商品行為數(shù)據(jù)進行流式特征提取以及訓(xùn)練學(xué)習(xí),并將實時更新的特征和模型實時同步給在線的搜索和推薦引擎,實現(xiàn)個性化搜索和推薦,數(shù)據(jù)流程如下圖所示:

Blink技術(shù)架構(gòu)

從Blink的架構(gòu)圖中可以看出,Blink在內(nèi)部模塊組成上和Flink是有著非常清晰的界限的,綠色部分是和Flink共享的基礎(chǔ)核心框架,Blink在這些框架、協(xié)議和接口上的改進都會回饋給社區(qū),保證兼容性。
但藍色部分是擴展層,例如:資源管理,狀態(tài)存儲,運維監(jiān)控、Debug工具,輸入輸出層等,Blink都會根據(jù)阿里巴巴技術(shù)生態(tài)和業(yè)務(wù)場景進行定制開發(fā),使得Blink能夠在和Flink共享基礎(chǔ)內(nèi)核和生態(tài)的前提下,依然能夠靈活支持阿里巴巴自身的場景需求。
這種架構(gòu)設(shè)計,將之前開源技術(shù)的開放通用化和企業(yè)需要定制需求的矛盾進行了解耦,使得我們既可以和開源社區(qū)密切合作,享受開源的紅利,同時也可以根據(jù)阿里巴巴自身需求進行高度定制和優(yōu)化,不會受制于外部不可控因素。
Blink的未來
目前Blink已經(jīng)在阿里巴巴內(nèi)部達成共識,成為阿里巴巴統(tǒng)一的實時計算引擎,接下來我們將繼續(xù)加大在Blink技術(shù)發(fā)展上的投入,并與開源社區(qū)更加密切的合作,突進流式計算的發(fā)展。應(yīng)用場景上,一方面會繼續(xù)擴大計算規(guī)模,并提推出內(nèi)部統(tǒng)一實時計算服務(wù),統(tǒng)一支持阿里內(nèi)部的所有實時計算業(yè)務(wù);另一方面也將會通過阿里云的公有云和專有云渠道向外界輸出我們的實時計算能力,讓更多行業(yè)和用戶也都能享受到阿里巴巴實時計算的技術(shù)成果。
總之,Blink的實時計算之路剛剛開啟,未來必將有更大的挑戰(zhàn)和機遇,也非常歡迎各位對實時計算有興趣的技術(shù)愛好者以及高校學(xué)子們投身到這件開創(chuàng)新一代計算平臺的事情上來。
作者:王峰 原文鏈接:權(quán)威詳解 | 阿里新一代實時計算引擎 Blink,每秒支持數(shù)十億次計算
某清華姚班相關(guān)背景AI公司 急需大數(shù)據(jù)平臺架構(gòu)(Leader) 以及 實時計算架構(gòu)專家(Leader)
感興趣的小伙伴歡迎來電或是加微信咨詢
13810607874(12年互聯(lián)網(wǎng)獵頭Frank)