基於Apache Hudi構建數據湖的典型應用場景介紹


1. 傳統數據湖存在的問題與挑戰

傳統數據湖解決方案中,常用Hive來構建T+1級別的數據倉庫,通過HDFS存儲實現海量數據的存儲與水平擴容,通過Hive實現元數據的管理以及數據操作的SQL化。雖然能夠在海量批處理場景中取得不錯的效果,但依然存在如下現狀問題:

問題一:不支持事務

由於傳統大數據方案不支持事務,有可能會讀到未寫完成的數據,造成數據統計錯誤。為了規避該問題,通常控制讀寫任務順序調用,在保證寫任務完成后才能啟動讀任務。但並不是所有讀任務都能夠被調度系統約束住,在讀取時仍存在該問題。

問題二:數據更新效率低

業務系統庫的數據,除流水表類的數據都是新增數據外,還有很多狀態類數據表需要更新操作(例如:賬戶余額表,客戶狀態表,設備狀態表等),而傳統大數據方案無法滿足增量更新,常采用拉鏈方式,先進行join操作再進行insert overwrite操作,通過覆蓋寫的方式完成更新操作,該操作往往需要T+1的批處理模式 ,從而導致端到端數據時延T+1,存在效率低、成本高等問題。

問題三:無法及時應對業務表變化

上游業務系統對數據schema發生變更后,會導致數據無法入湖,需要數據湖的表schema進行同步調整。從技術實現上采用數據表重建的方式來滿足該場景,導致數據湖的數據表的管理與維護方案復雜,實現成本高。另外該種場景通常需要業務部門與數據團隊相配合,通過管理流程來實現表結構的同步。

問題四:歷史快照表數據冗余

傳統數據湖方案需要對歷史的快照表進行存儲,采用全量歷史存儲的方式實現,例如:天級歷史快照表,每天都會全量存儲全表數據。這樣就造成了大量的數據存儲冗余,占用大量的存儲資源。

問題五:小批量增量數據處理成本高

傳統數據湖為了實現增量ETL,通常將增量數據按照分區的方式進行存儲,若為了實現T+0的數據處理,增量數據需要按照小時級或者分鍾級的分區粒度。該種實現形式會導致小文件問題,大量分區也會導致元數據服務壓力增大。

基於以上問題,華為FunsionInsight MRS集成Apache Hudi組件,希望通過Hudi組件來改善傳統數據湖存在的問題。

2. MRS雲原生數據湖Hudi的關鍵特性

Apache Hudi是數據湖的文件組織層,對Parquet等格式文件進行管理提供數據湖能力,支持多種計算引擎,提供IUD接口,在 HDFS/OBS的數據集上提供了插入更新和增量拉取的流原語,具有如下特點:

  • 支持ACID
    • 支持SnapShot數據隔離,保證數據讀取完整性,實現讀寫並發能力
    • 數據commit,數據入湖秒級可見
  • 快速Upsert能力
    • 支持可插拔索引進制實現新增更新數據快速入湖
    • 擴展Merge操作,實現新增、更新、刪除混合數據同時入湖
    • 支持寫入同步小文件合並能力,寫入數據自動按照預設文件大小進行文件合並
  • Schema Evolution
    • 支持湖內數據schema的同步演進
    • 支持多種常見schema變更操作
  • 多種視圖讀取接口
    • 支持實時快照數據讀取方式
    • 支持歷史快照數據讀取方式
    • 支持當前增量和歷史增量數據讀取方式
    • 支持快速數據探索分析
  • 多版本
    • 數據按照提交版本存儲,保留歷史操作記錄,方便數據回溯
    • 數據回退操作簡單,速度快

3. MRS-Hudi的典型應用場景

3.1 基於MRS-CDL組件實現數據實時入湖

場景說明:

  • 可以從業務數據庫中直接抽取數據
  • 數據入湖需要高實時性,秒級延遲
  • 數據表變更需要與數據湖表結構實時同步

方案介紹:

該方案基於MRS-CDL組件構建,由CDL組件實現業務庫的操作事件捕獲並寫入的基於MRS-Hudi的數據湖存儲。

MRS-CDL是FusionInsight MRS推出的一種數據實時同步服務,旨在將傳統OLTP數據庫中的事件信息捕捉並實時推送到數據湖中去。該方案有以下特性支持:

  • MRS-CDL支持捕獲業務系統庫的DDL和DML事件。
  • 支持將MRS-Hudi作為數據目標端。
  • 可視化操作,采集任務、入湖任務以及任務管理都是可視化操作。
  • 入湖任務支持多租戶,保證數據權限與湖內權限保持一致。
  • 全程任務開發零代碼,節省開發成本。

方案收益:

  • 入湖操作簡單,全程零代碼開發。•入湖時效快,從業務系統數據調整到入湖,可在分鍾內完成。

場景說明:

  • 無需直接對接數據庫,數據由已有采集工具發送到Kafka或者由業務系統直接發送到Kafka。
  • 不需要實時同步DDL操作事件。

方案說明:

MRS的FlinkSQL入湖鏈路是基於Flink+Hudi成的。MRS-Flink以下特性支持該方案:

  • 增加了Flink引擎與Hudi的對接能力。支持了對Hudi中COW表以及MOR表的讀寫操作。
  • FlinkServer(Flink開發平台)增加了對Hudi的流量表支持。
  • 作業開發與作業維護可視化操作。

方案收益:

  • 入湖代碼開發簡單。
  • 通過FlinkSQL實現入湖的語句如下:

Insert into table_hudi select * from table_kafka;

入湖時效快,最快可達秒級數據入湖。

3.3 湖內數據快速ETL

場景說明:

湖內數據通常會采用數倉分層存儲,例如:貼源層(SDI)、匯總層(DWS)、集市層(DW),各家企業也會有不同的分層標准。數據在各層直接流轉也會有相應的規范。傳統數據湖通常采用天級全量數據ETL處理以實現各層之間數據流轉。

現在Hudi支持ACID特性、Upsert特性和增量數據查詢特性,可以實現增量的ETL,在不同層之間快速的流轉。

增量ETL作業與傳統ETL作業業務邏輯完全一樣,涉及到的增量表讀取采用commit_time來獲取增量數據,在作業邏輯中的多表關聯可以使Hudi表與Hudi表關聯,也可以是Hudi表與存量Hive表的關聯。ETL作業開發可以基於SparkSQL、FlinkSQL開發。基於增量視圖的ETL語句樣例如下:Upsert table_dws select * from table_SDI where commit_time > “2021-07-07 12:12:12”。

由於采用了增量ETL方式,每次所處理的數據量也會下降,具體下降多少有賴於業務實際流量情況和增量的周期粒度。例如:物聯網的業務數據,全天24小時流量穩定,采用10分鍾級別的增量ETL,那么所處理的數量將全天數據量的1/(24*60/10)。因此在處理數據量大幅下降情況下,所需的計算資源也有相應的下降。

方案收益:

  • 單個ETL作業處理時延降低,端到端時間縮短。
  • 消耗資源下降,單位ETL作業所處理數據量大幅下降,所需計算資源也會相應下降。
  • 原有湖內存儲的模型無需調整。

3.4 支持交互式分析場景

場景說明:

數據湖存儲的數據具有數據種類全、維度多、歷史周期長的特點,業務所需數據在數據湖中基本都是存在的,因此直接交互式分析引擎直接對接數據湖可以滿足業務各類需求數據需求。

在數據探索、BI分析、報表展示等業務場景需要具備針對海量數據查詢秒級返回的能力,同時要求分析接口簡單SQL化。

方案說明:

在該場景中可以采用MRS-HetuEngine來實現該方案,MRS-HetuEngine是分布式高性能的交互式分析引擎,主要用於數據的快速實時查詢場景。MRS-HetuEngine具備以下特性可以很好的支撐該場景:

  • MRS-HetuEngine引擎已經完成與MRS-Hudi的對接,能夠快速讀取Hudi存儲的數據。
  • 支持讀取快照查詢,查詢當前最新快照數據和歷史快照數據。
  • 支持增量查詢,根據commit_time,查詢任一時間段內的增量數據。
  • 針對MOR存儲模型,尤其在數據探索場景可以通過讀優化查詢接口,快速分析MOR模型的Hudi表數據。
  • 支持多源異構協同,具備跨Hudi與其他DB的聯合分析能力,例如:維度數據存在TP庫中,可以實現數據湖的事實表與TP維度表的關聯分析。
  • 查詢語句SQL化,支持JDBC接口。

方案收益:

  • 結合MRS-CDL數據入湖,業務系統庫數據變更可在分鍾內實現在數據湖內可見。
  • 對TB級到PB的數據量的交互式查詢可達到秒級結果返回。
  • 可對湖內各層數據進行分析。

3.5 基於Hudi構建批流一體

場景說明:

傳統處理架構中采用Lambda或者Kappa架構。Lambda使用比較靈活,也可以解決業務場景,但是在該架構中需要兩套系統來完成,維護比較復雜。數據分流以后也很難再關聯應用。例如:流處理場景使用批處理的結果。Kappa架構是為實時處理的架構,該架構缺少了批處理的能力。

方案說明:

在很多實時場景中,對時延要求可以是分鍾級的,這樣可以通過MRS-Hudi和實時計算引擎Flink和Spark-Streaming進行增量計算實現數據的快速處理,端到端實現分鍾級延遲。另外MRS-Hudi本身就是湖存儲,可以存儲海量數據,因此也可以支持批量計算,常用的批處理引擎可以采用Hive和Spark。

方案價值:

  • 數據統一存儲,實時數據與批量數據共用相同的存儲。
  • 同時支持實時計算與批量計算。相同業務邏輯的處理結果復用。
  • 滿足分鍾級延時的實時處理能力和海量的批量處理。

5. 總結

傳統大數據由於不支持事務等痛點問題,造成T+1時延,雖然能夠基於Flink流式計算實現少量數據在簡單場景的秒級數據處理能力,但依然缺乏海量復雜場景的實時更新、事務支持能力。現在基於華為雲FusionInsight MRS的Hudi可以構建分鍾級數據處理方案,實現較大數據量的復雜計算實時處理能力,大大提升數據時效性,讓數據價值近在眼前。

原文:華為雲社區 https://bbs.huaweicloud.com/blogs/290866

作者:數海揚帆

推薦閱讀

Apache Hudi:新一代流式數據湖平台

Apache Hudi實時入湖之DeltaStreamer最佳實踐

數據湖正當時!華為雲MRS重磅集成Apache Hudi

重磅!AWS升級對Apache Hudi的集成

恭喜!Apache Hudi社區新晉多名頂級互聯網公司Committer


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM