實時數倉建設背景

  • 業務需求的變化:随着互聯網和移動互聯網的快(kuài)速發展,企業的業務需求變得(de)越來(lái)越複雜和多樣化,對數據處理(lǐ)的速度和質量要求也越來(lái)越高。傳統的T+1數據處理(lǐ)模式已經無法滿足企業的需求,實時數據處理(lǐ)成爲了一種必要的需求。

  • 數據時效性的重要性:在當今數據驅動的時代,數據的時效性對于企業的決策和運營至關重要。實時數倉能夠提供實時的數據分(fēn)析和數據挖掘,幫助企業快(kuài)速發現市場變化、調整業務策略、優化産品設計(jì)和提高客戶滿意度。

  • 技術(shù)的進步和發展:随着大(dà)數據技術(shù)的不斷進步和發展,分(fēn)布式計(jì)算、流處理(lǐ)、數據緩存等技術(shù)的成熟爲實時數倉的建設提供了技術(shù)基礎。這些技術(shù)的應用使得(de)大(dà)規模數據的實時處理(lǐ)成爲可(kě)能,提高了數據處理(lǐ)的速度和效率。

  • 競争壓力的增大(dà):随着市場競争的加劇(jù),企業需要更加精準地了解市場和客戶需求,快(kuài)速響應變化和抓住商機(jī)。實時數倉能夠幫助企業快(kuài)速獲取實時的市場和客戶數據,提供精準的分(fēn)析和決策支持,提高企業的競争力和市場地位。


實時數倉和離(lí)線數倉對比

  • 架構選擇:離(lí)線數倉采用傳統大(dà)數據框架模式搭建,而實時數倉則采用Kappa架構方式搭建。

  • 建設方法:兩者都(dōu)采用傳統數倉建模方法論。

  • 準确性:離(lí)線數倉的準确性較高,而随着技術(shù)的發展,實時數倉的準确性也在逐步提高。

  • 實時性:離(lí)線數倉統計(jì)數據結果通常在T+1,而實時數倉的統計(jì)結果通常在分(fēn)鍾級别或秒級别,這顯示出實時數倉的實時性更強。

  • 穩定性:離(lí)線數倉的穩定性好,方便重算,而實時數倉對數據波動較爲敏感,數據重新計(jì)算時相(xiàng)對麻煩。

  • 數據吞吐量:離(lí)線數倉的吞吐量都(dōu)很高,而随着實時技術(shù)的進步,實時數倉的吞吐量也得(de)到了提高。

  • 數據存儲:離(lí)線數倉一般将數據存儲在HDFS、Hive中,而實時數倉則将數據存儲在Kafka、Hbase、Redis、ClickHouse中。


應用場景

  • 實時數據分(fēn)析:實時數倉可(kě)以提供實時的數據分(fēn)析和數據挖掘,包括客戶行爲分(fēn)析、銷售分(fēn)析、運營分(fēn)析等。這可(kě)以幫助企業快(kuài)速了解市場和客戶需求,發現商機(jī),調整業務策略,優化産品設計(jì)和提高客戶滿意度。

  • 實時風(fēng)險控制:實時數倉可(kě)以用于實時監測和預警各種風(fēng)險,如(rú)保險欺詐監測、信用風(fēng)險預警等。這可(kě)以幫助企業及時發現和應對風(fēng)險,保障業務的穩定運行。

  • 實時決策支持:實時數倉可(kě)以提供實時的銷售策略調整、産品開發優化、市場推廣效果評估等支持,幫助企業快(kuài)速響應市場變化和抓住商機(jī)。

  • 實時客戶體(tǐ)驗優化:實時數倉可(kě)以用于實時監測和優化客戶體(tǐ)驗,如(rú)客戶服務快(kuài)速響應、個性化推薦與定制服務等。這可(kě)以幫助企業提高客戶滿意度和忠誠度,增加客戶留存和轉化。


實時數倉的架構設計(jì)和技術(shù)選型

  • 離(lí)線大(dà)數據架構:HDFS存儲,hive、mr、spark進行離(lí)線計(jì)算;

  • Lambda架構:在離(lí)線大(dà)數據架構的基礎上增加新鏈路(lù)用于實時數據處理(lǐ),需要維護離(lí)線處理(lǐ)和實時處理(lǐ)兩套代碼;

  • Kappa架構:批流合一,離(lí)線處理(lǐ)和實時處理(lǐ)整合成一套代碼,運維成本小,這就(jiù)是現今flink之所以火(huǒ)的原因。Kappa架構已成爲數據倉庫架構的新趨勢;

  • 計(jì)算框架選型:flink等實時計(jì)算框架,強烈推薦flink,其『批量合一』的特性及活躍的開源社區,有逐漸替代spark的趨勢;

  • 數據存儲選型:首要考慮查詢效率,其次是插入、更新等問(wèn)題,可(kě)選擇apache druid,不過在數據更新上存在缺陷,選型時注意該問(wèn)題頻繁更新的數據建議(yì)不要采用該方案。當然存儲這塊需要具體(tǐ)問(wèn)題具體(tǐ)分(fēn)析,不同場景下hbase、redis等都(dōu)是可(kě)選項;

  • 實時數倉分(fēn)層:爲更好的統一管理(lǐ)數據,實時數倉可(kě)采用離(lí)線數倉的數據模型進行分(fēn)層處理(lǐ),可(kě)以分(fēn)爲實時明細層寫入druid、Doris等查詢效率高的存儲方便下遊使用;輕度彙總層對數據進行彙總分(fēn)析後供下遊使用。數據流轉方案:實時數倉的數據來(lái)源可(kě)以爲kafka消息隊列,這樣可(kě)以做到隊列中的數據即可(kě)以寫入數據湖用于批量分(fēn)析,也可(kě)以實時處理(lǐ),下遊可(kě)以寫入數據集市供業務使用。

實時數倉主要解決數據時效性問(wèn)題,結合機(jī)器學習框架可(kě)以處理(lǐ)實時推薦、實時獲取廣告投放(fàng)效果等智能化業務場景。實時數倉的建設應早日(rì)提上日(rì)程,未來(lái)企業對數據時效性的要求會越來(lái)越高,實時數倉會很好的解決該問(wèn)題。

  • 數據收集層:這一層負責實時數據,包括 Binlog、Service Log, Tracking Service Log,經過 Real-time Ingestion 團隊數據将會被收集到 Kafka 、Hbase 中。Auto-Ingestion 團隊負責數據庫數離(lí)線日(rì)常收集到 HDFS。

  • 存儲層:這層主要是 Kafka 保存實時消息,加上 HDFS 保存 Hive 數據存儲等,HBase 保存維度數據。
    在存儲層上面是 Spark, Flink 計(jì)算引擎, Presto SQL 查詢引擎。

  • 調度管理(lǐ)層: 各種資源管理(lǐ),任務管理(lǐ),任務調度,管理(lǐ)各種 Spark,Flink 任務。

  • OLAP數據存儲層:Druid 用于存儲時間序列數據,Phoenix(HBase)存儲聚合報表數據、維度表數據、标簽數據,Doris;Elastic Search 存儲需要多維度字段索引的數據如(rú)廣告數據、用戶畫(huà)像等。

  • 應用層:數據報表,數據業務服務,用戶畫(huà)像等。


實時數倉各層級的技術(shù)選型

  • 數據源:直接配置爲kafka實時消息傳輸;

  • 數據明細層:一般也會選擇kafka作(zuò)爲數據存儲,如(rú)果是這層做成大(dà)寬表的話(huà),可(kě)以選擇druid/Doris/hbase/

  • 數據彙總層:對數據進行高度彙總後的數據,這層一般也會選擇kafka作(zuò)爲數據存儲,這樣需要保證各層級的數據通過kafka能夠産生(shēng)依賴。

  • 應用層:應用層根據不同的業務類型選用不同的數據存儲,如(rú)果結果需要能夠快(kuài)速搜索,可(kě)以選用es,如(rú)果結果需要進行多維數據統計(jì)分(fēn)析,可(kě)以選用druid,Doris;如(rú)果結果數據量不是很大(dà)的話(huà),最好選用mysql,相(xiàng)對來(lái)說(shuō),mysql的穩定性要好一點。

  • 維度存儲:維度如(rú)果是穩定并且數據量不大(dà)的情況下可(kě)以選擇mysql,但(dàn)是如(rú)果維度經常變動或者字段經常增加的話(huà),最好選用hbase進行存儲redis。

本期分(fēn)享就(jiù)到這裡(lǐ)了,感謝大(dà)家的閱讀(dú)。如(rú)果你(nǐ)喜歡今天的内容,那麽請(qǐng)不要錯過我們下期更精彩的【實時數倉(下)】。