美團(tuán)實(shí)時(shí)數(shù)倉(cāng)建設(shè)

實(shí)時(shí)數(shù)倉(cāng)和傳統(tǒng)數(shù)倉(cāng)的對(duì)比

實(shí)時(shí)數(shù)倉(cāng)和傳統(tǒng)數(shù)倉(cāng)的對(duì)比主要可以從四個(gè)方面考慮:
●第一個(gè)是分層方式,離線數(shù)倉(cāng)為了考慮到效率問題,一般會(huì)采取空間換時(shí)間
的方式,層級(jí)劃分會(huì)比較多;則實(shí)時(shí)數(shù)倉(cāng)考慮到實(shí)時(shí)性問題,一般分層會(huì)比較
少,另外也減少了中間流程出錯(cuò)的可能性。
●第二個(gè)是事實(shí)數(shù)據(jù)存儲(chǔ)方面,離線數(shù)倉(cāng)會(huì)基于 HDFS,實(shí)時(shí)數(shù)倉(cāng)則會(huì)基于消息
隊(duì)列(如 Kafka) 。
●第三個(gè)是維度數(shù)據(jù)存儲(chǔ),實(shí)時(shí)數(shù)倉(cāng)會(huì)將數(shù)據(jù)放在 KV 存儲(chǔ)上面。
●第四個(gè)是數(shù)據(jù)加工過程,離線數(shù)倉(cāng)一般以 Hive、Spark 等批處理為主,而實(shí)
時(shí)數(shù)倉(cāng)則是基于實(shí)時(shí)計(jì)算引擎如 Storm、Flink 等,以流處理為主。

實(shí)時(shí)數(shù)倉(cāng)建設(shè)方案對(duì)比

下圖中對(duì)于實(shí)時(shí)數(shù)倉(cāng)的兩種建設(shè)方式,即準(zhǔn)實(shí)時(shí)數(shù)倉(cāng)和實(shí)時(shí)數(shù)倉(cāng)兩種方式進(jìn)行了
對(duì)比。它們的實(shí)現(xiàn)方式分別是基于 OLAP 引擎和流計(jì)算引擎,實(shí)時(shí)度則分別是分鐘
和秒級(jí)。
●在調(diào)度開銷方面,準(zhǔn)實(shí)時(shí)數(shù)倉(cāng)是批處理過程,因此仍然需要調(diào)度系統(tǒng)支持,雖
然調(diào)度開銷比離線數(shù)倉(cāng)少一些,但是依然存在,而實(shí)時(shí)數(shù)倉(cāng)卻沒有調(diào)度開銷。
●在業(yè)務(wù)靈活性方面,因?yàn)闇?zhǔn)實(shí)時(shí)數(shù)倉(cāng)基于 OLAP 引擎實(shí)現(xiàn),靈活性優(yōu)于基于
流計(jì)算的方式。
●在對(duì)數(shù)據(jù)晚到的容忍度方面,因?yàn)闇?zhǔn)實(shí)時(shí)數(shù)倉(cāng)可以基于一個(gè)周期內(nèi)的數(shù)據(jù)進(jìn)行
全量計(jì)算,因此對(duì)于數(shù)據(jù)晚到的容忍度也是比較高的,而實(shí)時(shí)數(shù)倉(cāng)使用的是增
量計(jì)算,對(duì)于數(shù)據(jù)晚到的容忍度更低一些。
●在擴(kuò)展性方面,因?yàn)闇?zhǔn)實(shí)時(shí)數(shù)倉(cāng)的計(jì)算和存儲(chǔ)是一體的,因此相比于實(shí)時(shí)數(shù)
倉(cāng),擴(kuò)展性更弱一些。
●在適用場(chǎng)景方面,準(zhǔn)實(shí)時(shí)數(shù)倉(cāng)主要用于有實(shí)時(shí)性要求但不太高、數(shù)據(jù)量不大以
及多表關(guān)聯(lián)復(fù)雜和業(yè)務(wù)變更頻繁的場(chǎng)景,如交易類型的實(shí)時(shí)分析,實(shí)時(shí)數(shù)倉(cāng)則
更適用于實(shí)時(shí)性要求高、數(shù)據(jù)量大的場(chǎng)景,如實(shí)時(shí)特征、流量分發(fā)以及流量類
型實(shí)時(shí)分析。
總結(jié)一下,基于 OLAP 引擎的建設(shè)方式是數(shù)據(jù)量不太大,業(yè)務(wù)流量不太高情況
下為了提高時(shí)效性和開發(fā)效率的一個(gè)折中方案,從未來(lái)的發(fā)展趨勢(shì)來(lái)看,基于流計(jì)算
的實(shí)時(shí)數(shù)倉(cāng)更具有發(fā)展前景

image.png
image.png

● 實(shí)時(shí)數(shù)倉(cāng)平臺(tái)架構(gòu)
如下圖所示的是美團(tuán)點(diǎn)評(píng)的實(shí)時(shí)數(shù)倉(cāng)平臺(tái)架構(gòu),從下往上看,資源層和存儲(chǔ)層
復(fù)用了實(shí)時(shí)計(jì)算平臺(tái)的能力,在引擎層則會(huì)基于 Flink Streaming 實(shí)現(xiàn)一些擴(kuò)展能
力,包括對(duì) UDF 的集成和 Connector 的集成。再往上是基于 Flink SQL 獨(dú)立出來(lái)
的 SQL 層,主要負(fù)責(zé)解析、校驗(yàn)和優(yōu)化。在這之上是平臺(tái)層,包括開發(fā)工作臺(tái)、元
數(shù)據(jù)、UDF 平臺(tái)以及 OLAP 平臺(tái)。最上層則是平臺(tái)所支持的實(shí)時(shí)數(shù)倉(cāng)的應(yīng)用,包括
實(shí)時(shí)報(bào)表、實(shí)時(shí) OLAP、實(shí)時(shí) Dashboard 和實(shí)時(shí)特征等。

image.png
image.png

● 消息表達(dá) - 數(shù)據(jù)接入
在消息表達(dá)層面,因?yàn)?Binlog、埋點(diǎn)日志、后端日志以及 IoT 數(shù)據(jù)等的數(shù)據(jù)格
式是不一致的,因此美團(tuán)點(diǎn)評(píng)的實(shí)時(shí)數(shù)倉(cāng)平臺(tái)提供數(shù)據(jù)接入的流程,能夠幫助大家
把數(shù)據(jù)同步到 ODS 層。這里主要實(shí)現(xiàn)了兩件事情,分別是統(tǒng)一消息協(xié)議和屏蔽處
理細(xì)節(jié)。
如下圖左側(cè)是接入過程的一個(gè)例子,對(duì)于 Binlog 類型數(shù)據(jù),實(shí)時(shí)數(shù)倉(cāng)平臺(tái)還為
大家提供了分庫(kù)分表的支持,能夠?qū)儆谕粋€(gè)業(yè)務(wù)的不同的分庫(kù)分表數(shù)據(jù)根據(jù)業(yè)務(wù)
規(guī)則收集到同一個(gè) ODS 表中去。


image.png

● 計(jì)算表達(dá) - 擴(kuò)展 DDL
美團(tuán)點(diǎn)評(píng)實(shí)時(shí)數(shù)倉(cāng)平臺(tái)基于 Flink 擴(kuò)展了 DDL,這部分工作的主要目的是建設(shè)
元數(shù)據(jù)體系,打通內(nèi)部的主流實(shí)時(shí)存儲(chǔ),包括 KV 數(shù)據(jù)、OLAP 數(shù)據(jù)等。由于開發(fā)工
作臺(tái)和元數(shù)據(jù)體系是打通的,因此很多數(shù)據(jù)的細(xì)節(jié)并不需要大家在 DDL 中明確地聲
明出來(lái),只需要在聲明中寫上數(shù)據(jù)的名字,和運(yùn)行時(shí)的一些設(shè)置,比如 MQ 從最新消
費(fèi)還是最舊消費(fèi)或者從某個(gè)時(shí)間戳消費(fèi)即可,其他的數(shù)據(jù)訪問方式是一致的。


image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容