基于Flink的實時數(shù)倉建設(shè)

目錄:

一. 實時計算初期

二. 實時數(shù)倉建設(shè)

三. Lambda架構(gòu)的實時數(shù)倉

四. Kappa架構(gòu)的實時數(shù)倉

五. 流批結(jié)合的實時數(shù)倉

一杀怠、實時計算初期

雖然實時計算在最近幾年才火起來,但是在早期也有部分公司有實時計算的需求吴菠,但是數(shù)據(jù)量比較少橄教,所以在實時方面形成不了完整的體系清寇,基本所有的開發(fā)都是具體問題具體分析,來一個需求做一個护蝶,基本不考慮它們之間的關(guān)系华烟,開發(fā)形式如下:

早期實時計算

如上圖所示,拿到數(shù)據(jù)源后持灰,會經(jīng)過數(shù)據(jù)清洗盔夜,擴維,通過Flink進行業(yè)務(wù)邏輯處理堤魁,最后直接進行業(yè)務(wù)輸出喂链。把這個環(huán)節(jié)拆開來看,數(shù)據(jù)源端會重復(fù)引用相同的數(shù)據(jù)源妥泉,后面進行清洗椭微、過濾、擴維等操作盲链,都要重復(fù)做一遍蝇率,唯一不同的是業(yè)務(wù)的代碼邏輯是不一樣的。

隨著產(chǎn)品和業(yè)務(wù)人員對實時數(shù)據(jù)需求的不斷增多刽沾,這種開發(fā)模式出現(xiàn)的問題越來越多:

數(shù)據(jù)指標(biāo)越來越多瓢剿,“煙囪式”的開發(fā)導(dǎo)致代碼耦合問題嚴(yán)重。

需求越來越多悠轩,有的需要明細數(shù)據(jù)间狂,有的需要 OLAP 分析。單一的開發(fā)模式難以應(yīng)付多種需求火架。

每個需求都要申請資源鉴象,導(dǎo)致資源成本急速膨脹,資源不能集約有效利用何鸡。

缺少完善的監(jiān)控系統(tǒng)纺弊,無法在對業(yè)務(wù)產(chǎn)生影響之前發(fā)現(xiàn)并修復(fù)問題。

大家看實時數(shù)倉的發(fā)展和出現(xiàn)的問題骡男,和離線數(shù)倉非常類似淆游,后期數(shù)據(jù)量大了之后產(chǎn)生了各種問題,離線數(shù)倉當(dāng)時是怎么解決的?離線數(shù)倉通過分層架構(gòu)使數(shù)據(jù)解耦犹菱,多個業(yè)務(wù)可以共用數(shù)據(jù)拾稳,實時數(shù)倉是否也可以用分層架構(gòu)呢?當(dāng)然是可以的腊脱,但是細節(jié)上和離線的分層還是有一些不同访得,稍后會講到。

二陕凹、實時數(shù)倉建設(shè)

從方法論來講悍抑,實時和離線是非常相似的,離線數(shù)倉早期的時候也是具體問題具體分析杜耙,當(dāng)數(shù)據(jù)規(guī)模漲到一定量的時候才會考慮如何治理搜骡。分層是一種非常有效的數(shù)據(jù)治理方式,所以在實時數(shù)倉如何進行管理的問題上佑女,首先考慮的也是分層的處理邏輯浆兰。

實時數(shù)倉的架構(gòu)如下圖:

實時數(shù)倉架構(gòu)

從上圖中我們具體分析下每層的作用:

數(shù)據(jù)源:在數(shù)據(jù)源的層面,離線和實時在數(shù)據(jù)源是一致的珊豹,主要分為日志類和業(yè)務(wù)類,日志類又包括用戶日志榕订,埋點日志以及服務(wù)器日志等店茶。

實時明細層:在明細層,為了解決重復(fù)建設(shè)的問題劫恒,要進行統(tǒng)一構(gòu)建贩幻,利用離線數(shù)倉的模式,建設(shè)統(tǒng)一的基礎(chǔ)明細數(shù)據(jù)層两嘴,按照主題進行管理丛楚,明細層的目的是給下游提供直接可用的數(shù)據(jù),因此要對基礎(chǔ)層進行統(tǒng)一的加工憔辫,比如清洗趣些、過濾、擴維等贰您。

匯總層:匯總層通過Flink的簡潔算子直接可以算出結(jié)果坏平,并且形成匯總指標(biāo)池,所有的指標(biāo)都統(tǒng)一在匯總層加工锦亦,所有人按照統(tǒng)一的規(guī)范管理建設(shè)舶替,形成可復(fù)用的匯總結(jié)果。

我們可以看出杠园,實時數(shù)倉和離線數(shù)倉的分層非常類似顾瞪,比如 數(shù)據(jù)源層,明細層,匯總層陈醒,乃至應(yīng)用層惕橙,他們命名的模式可能都是一樣的。但仔細比較不難發(fā)現(xiàn)孵延,兩者有很多區(qū)別:

與離線數(shù)倉相比吕漂,實時數(shù)倉的層次更少一些:

從目前建設(shè)離線數(shù)倉的經(jīng)驗來看,數(shù)倉的數(shù)據(jù)明細層內(nèi)容會非常豐富尘应,處理明細數(shù)據(jù)外一般還會包含輕度匯總層的概念惶凝,另外離線數(shù)倉中應(yīng)用層數(shù)據(jù)在數(shù)倉內(nèi)部,但實時數(shù)倉中犬钢,app 應(yīng)用層數(shù)據(jù)已經(jīng)落入應(yīng)用系統(tǒng)的存儲介質(zhì)中苍鲜,可以把該層與數(shù)倉的表分離

應(yīng)用層少建設(shè)的好處:實時處理數(shù)據(jù)的時候玷犹,每建一個層次混滔,數(shù)據(jù)必然會產(chǎn)生一定的延遲

匯總層少建的好處:在匯總統(tǒng)計的時候歹颓,往往為了容忍一部分?jǐn)?shù)據(jù)的延遲坯屿,可能會人為的制造一些延遲來保證數(shù)據(jù)的準(zhǔn)確。舉例巍扛,在統(tǒng)計跨天相關(guān)的訂單事件中的數(shù)據(jù)時领跛,可能會等到 00:00:05 或者 00:00:10 再統(tǒng)計,確保 00:00 前的數(shù)據(jù)已經(jīng)全部接受到位了撤奸,再進行統(tǒng)計吠昭。所以,匯總層的層次太多的話胧瓜,就會更大的加重人為造成的數(shù)據(jù)延遲矢棚。

與離線數(shù)倉相比,實時數(shù)倉的數(shù)據(jù)源存儲不同:

在建設(shè)離線數(shù)倉的時候府喳,基本整個離線數(shù)倉都是建立在 Hive 表之上蒲肋。但是,在建設(shè)實時數(shù)倉的時候钝满,同一份表肉津,會使用不同的方式進行存儲。比如常見的情況下舱沧,明細數(shù)據(jù)或者匯總數(shù)據(jù)都會存在 Kafka 里面妹沙,但是像城市、渠道等維度信息需要借助 Hbase熟吏,MySQL 或者其他 KV 存儲等數(shù)據(jù)庫來進行存儲距糖。

三玄窝、Lambda架構(gòu)的實時數(shù)倉

Lambda和Kappa架構(gòu)的概念已在前文中解釋,不了解的小伙伴可點擊鏈接:一文讀懂大數(shù)據(jù)實時計算

下圖是基于 Flink 和 Kafka 的 Lambda 架構(gòu)的具體實踐悍引,上層是實時計算恩脂,下層是離線計算,橫向是按計算引擎來分趣斤,縱向是按實時數(shù)倉來區(qū)分:

Lambda架構(gòu)的實時數(shù)倉

Lambda架構(gòu)是比較經(jīng)典的架構(gòu)俩块,以前實時的場景不是很多,以離線為主浓领,當(dāng)附加了實時場景后玉凯,由于離線和實時的時效性不同,導(dǎo)致技術(shù)生態(tài)是不一樣的联贩。Lambda架構(gòu)相當(dāng)于附加了一條實時生產(chǎn)鏈路漫仆,在應(yīng)用層面進行一個整合,雙路生產(chǎn)泪幌,各自獨立盲厌。這在業(yè)務(wù)應(yīng)用中也是順理成章采用的一種方式。

雙路生產(chǎn)會存在一些問題祸泪,比如加工邏輯double吗浩,開發(fā)運維也會double,資源同樣會變成兩個資源鏈路没隘。因為存在以上問題懂扼,所以又演進了一個Kappa架構(gòu)。

四升略、Kappa架構(gòu)的實時數(shù)倉

Kappa架構(gòu)相當(dāng)于去掉了離線計算部分的Lambda架構(gòu),具體如下圖所示:

Kappa架構(gòu)的實時數(shù)倉

Kappa架構(gòu)從架構(gòu)設(shè)計來講比較簡單屡限,生產(chǎn)統(tǒng)一品嚣,一套邏輯同時生產(chǎn)離線和實時。但是在實際應(yīng)用場景有比較大的局限性钧大,因為實時數(shù)據(jù)的同一份表翰撑,會使用不同的方式進行存儲,這就導(dǎo)致關(guān)聯(lián)時需要跨數(shù)據(jù)源啊央,操作數(shù)據(jù)有很大局限性眶诈,所以在業(yè)內(nèi)直接用Kappa架構(gòu)生產(chǎn)落地的案例不多見,且場景比較單一瓜饥。

關(guān)于 Kappa 架構(gòu)逝撬,熟悉實時數(shù)倉生產(chǎn)的同學(xué),可能會有一個疑問乓土。因為我們經(jīng)常會面臨業(yè)務(wù)變更宪潮,所以很多業(yè)務(wù)邏輯是需要去迭代的溯警。之前產(chǎn)出的一些數(shù)據(jù),如果口徑變更了狡相,就需要重算梯轻,甚至重刷歷史數(shù)據(jù)。對于實時數(shù)倉來說尽棕,怎么去解決數(shù)據(jù)重算問題喳挑?

Kappa 架構(gòu)在這一塊的思路是:首先要準(zhǔn)備好一個能夠存儲歷史數(shù)據(jù)的消息隊列,比如 Kafka滔悉,并且這個消息隊列是可以支持你從某個歷史的節(jié)點重新開始消費的伊诵。接著需要新起一個任務(wù),從原來比較早的一個時間節(jié)點去消費 Kafka 上的數(shù)據(jù)氧敢,然后當(dāng)這個新的任務(wù)運行的進度已經(jīng)能夠和現(xiàn)在的正在跑的任務(wù)齊平的時候日戈,你就可以把現(xiàn)在任務(wù)的下游切換到新的任務(wù)上面,舊的任務(wù)就可以停掉孙乖,并且原來產(chǎn)出的結(jié)果表也可以被刪掉浙炼。

五、流批結(jié)合的實時數(shù)倉

隨著實時 OLAP 技術(shù)的發(fā)展唯袄,目前開源的OLAP引擎在性能弯屈,易用等方面有了很大的提升,如Doris恋拷、Presto等资厉,加上數(shù)據(jù)湖技術(shù)的迅速發(fā)展,使得流批結(jié)合的方式變得簡單蔬顾。

如下圖是流批結(jié)合的實時數(shù)倉:

流批結(jié)合的實時數(shù)倉

數(shù)據(jù)從日志統(tǒng)一采集到消息隊列宴偿,再到實時數(shù)倉,作為基礎(chǔ)數(shù)據(jù)流的建設(shè)是統(tǒng)一的诀豁。之后對于日志類實時特征窄刘,實時大屏類應(yīng)用走實時流計算。對于Binlog類業(yè)務(wù)分析走實時OLAP批處理舷胜。

我們看到流批結(jié)合的方式與上面幾種架構(gòu)的存儲方式發(fā)生了變化娩践,由Kafka換成了Iceberg,Iceberg是介于上層計算引擎和底層存儲格式之間的一個中間層烹骨,我們可以把它定義成一種“數(shù)據(jù)組織格式”翻伺,底層存儲還是HDFS,那么為什么加了中間層沮焕,就對流批結(jié)合處理的比較好了呢吨岭?Iceberg的ACID能力可以簡化整個流水線的設(shè)計,降低整個流水線的延遲峦树,并且所具有的修改未妹、刪除能力能夠有效地降低開銷簿废,提升效率。Iceberg可以有效支持批處理的高吞吐數(shù)據(jù)掃描和流計算按分區(qū)粒度并發(fā)實時處理络它。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末族檬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子化戳,更是在濱河造成了極大的恐慌单料,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件点楼,死亡現(xiàn)場離奇詭異扫尖,居然都是意外死亡,警方通過查閱死者的電腦和手機掠廓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門换怖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蟀瞧,你說我怎么就攤上這事沉颂。” “怎么了悦污?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵铸屉,是天一觀的道長。 經(jīng)常有香客問我切端,道長彻坛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任踏枣,我火速辦了婚禮昌屉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茵瀑。我一直安慰自己间驮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布瘾婿。 她就那樣靜靜地躺著蜻牢,像睡著了一般烤咧。 火紅的嫁衣襯著肌膚如雪偏陪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天煮嫌,我揣著相機與錄音笛谦,去河邊找鬼。 笑死昌阿,一個胖子當(dāng)著我的面吹牛饥脑,可吹牛的內(nèi)容都是我干的恳邀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼灶轰,長吁一口氣:“原來是場噩夢啊……” “哼谣沸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笋颤,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乳附,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伴澄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赋除,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年非凌,在試婚紗的時候發(fā)現(xiàn)自己被綠了举农。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡敞嗡,死狀恐怖颁糟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秸妥,我是刑警寧澤滚停,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站粥惧,受9級特大地震影響键畴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜突雪,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一起惕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咏删,春花似錦惹想、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辰狡,卻和暖如春锋叨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宛篇。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工娃磺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叫倍。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓偷卧,卻偏偏與公主長得像豺瘤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子听诸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載鏈接:http://www.reibang.com/p/a1749c1526d7 導(dǎo)讀:本文主要介紹一種通用...
    嚴(yán)國華閱讀 966評論 0 9
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者坐求,不喜歡去冒險,但是人生放棄了冒險晌梨,也就放棄了無數(shù)的可能瞻赶。 ...
    yichen大刀閱讀 6,054評論 0 4
  • 公元:2019年11月28日19時42分農(nóng)歷:二零一九年 十一月 初三日 戌時干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 6,882評論 0 2
  • 今天上午陪老媽看病,下午健身房跑步派任,晚上想想今天還沒有斷舍離砸逊,馬上做,衣架和旁邊的的布衣架掌逛,一看亂亂师逸,又想想自己是...
    影子3623253閱讀 2,913評論 1 8