探索GaussDB(DWS)湖倉融合:Hudi與元數據打通的深度解析

華爲雲數倉GaussDB(DWS)研發專家高若嶽老師,深入解析GaussDB(DWS)數據倉庫如何與大數據生態快速對接。

隨着智能數據時代的到來,數據量爆發式增長,數據形態呈海量化和多樣化發展,不再是單一的結構化數據。從海量和多樣化的數據做融合分析,創造更多業務價值的訴求日益強烈。在本期《GaussDB(DWS)湖倉融合技術解析》的主題直播中,華爲雲數倉GaussDB(DWS)研發專家高若嶽老師,深入解析GaussDB(DWS)數據倉庫如何與大數據生態快速對接?如何高效訪問開源數據?GaussDB(DWS)湖倉融合技術爲企業帶來哪些助力?

什麼是數據湖?

不同的用戶對數據湖的概念有不同的理解,例如:

  • 雲廠商:基於對象存儲,以 S3、OSS、OBS 等構建數據底座,進行統⼀存儲即爲湖;
  • 大數據互聯網:以數據湖三劍客爲主,Iceberg、Hudi、Delta lake。它們可以支持比 Hive更高層的 Upsert、Delete、事務操作等高級特性,能基於 Hive 進行升級,解決準實時性的問題即爲湖;
  • 傳統用戶:以Hadoop集羣爲主,滿足支持所有結構化、半結構、無結構化的數據存儲即爲湖。

數據湖的優勢

  • 更低的存儲成本,更高的可靠性:使用對象存儲,相比於本地磁盤存儲、SSD 存儲或者雲盤存儲等,可以大幅降低存儲成本,並且通過編碼的方式能夠在降低副本數據量的同時又能保證高可靠性,可以使用戶不用擔心底層數據的丟失,從而獲得低成本的存儲;
  • 更好的 Table format:通過支持 ACID 事務、支持 Schema evolution,能夠爲用戶提供更好的表格式;
  • 更好的 File format:數據湖在文件格式上支持越來越多的半結構化 Map、Struct、Json 等,並且支持越來越多的索引,進而使文件的查詢和存儲效率更高,並且在基於列式存儲的基礎上支持更多的複雜嵌套結構;
  • 統⼀的 Catalog:通過統一的 Catalog 實現統⼀的元數據管理、權限管理、統計信息管理、入湖管理等。

爲什麼要做湖倉融合?

  1. 數倉加速:基於數據湖的遠程IO成本很高,且缺少一系列數倉加速的手段。早期的數據湖格式多樣且不成熟,索引的支持不完善,查詢性能有待提升。並且數據湖主要針對吞吐量的優化,關注低成本和高可靠,不適用於高性能的需求;
  2. 實時分析:傳統的數據湖實時性不夠,在Iceberg或者Hudi的支持下可能能解決分鐘級別的時效性,但是無法解決秒級時效性的問題;
  3. 高併發查詢:對於高併發查詢,不管是點查還是聚合類的查詢,數倉是更擅長的。比如做分桶的處理,更精細的裁剪,降低掃描的數據量,提升點查的效率。另一方面通過物化視圖或者CUBE等相關的預聚合手段,可以提升聚合查詢的性能。
  4. 降本增效:簡化技術架構,增強整體架構可靠性,降低運維成本;
  5. 更完善的數據治理:湖倉融合的數據底座統一了主數據和元數據,基於此纔有可能做上層統⼀的數據治理。

GaussDB(DWS)湖倉融合優勢介紹

無縫訪問數據湖

  • 對接LakeFormation元數據管理,直接訪問數據湖的數據表定義;
  • 支持主要開源數據格式:Hudi,ORC, Parquet, Carbon,Iceberg等;
  • 可支持實時鏈路的增量分析,也可以支持離線鏈路的批量分析;
  • 數據湖加速。

融合查詢

  • GaussDB(DWS)混合查詢數據湖和倉內的任意數據;
  • 查詢一步到位輸出到倉內/數據湖,無需額外數據中轉拷貝。

極致查詢性能

  • 使用GaussDB(DWS)數倉高質量的查詢計劃和高效的執行引擎;
  • 使用數倉的負載管理手段,精準控制。
湖倉融合架構圖

湖倉融合支持哪些數據格式?

當前GaussDB(DWS)湖倉融合技術,支持以下三種數據格式:

  • 文本類型:支持TEXT、CSV,高性能導入導出,支持指定分隔符(delimiter)、換行符(eol)、編碼(encoding),以及多種容錯方式處理,錯誤表等;
  • 列存存儲格式:高性能列式存儲格式,用於大數據環境中高效的存儲和查詢數據,支持多種壓縮算法、編碼方式,並且兼容多種引擎;

Parquet/ORC:融合查詢,複雜類型查詢,支持多種壓縮算法,支持多種方式寫出。

  • 湖格式:Hudi 是一個功能豐富的存儲管理平臺,支持構建具有增量數據管道的流式數據湖,針對處理引擎和常規批處理進行了優化;針對數據探索、BI場景的交互式分析能力進行了優化;

支持COW、MOR的導入查詢,以及增聯同步導入。

湖倉融合主要面臨3個難點:

  • 如何統一湖倉的元數據和建表語句,讓用戶獲得一個統一數據目錄和表結構; 如何完善湖倉的實時能力,來解決不同場景的實時性需求; 如何讓湖倉架構能夠有超過數倉的性能。

湖倉融合功能介紹

本次分享,我們重點詳細講解Hudi和元數據打通兩大功能。

Hudi是什麼?

Hudi 是一個功能豐富的存儲管理平臺,支持構建具有增量數據管道的流式數據湖,針對處理引擎和常規批處理進行了優化;針對數據探索、BI場景的交互式分析能力進行了優化。

Hudi具備哪些能力?

  • 變更數據:支持高效的數據更新,刪除能力,基於可插拔的索引保證數據唯一,支持Upsert、Merge語法;
  • 實時性:支持CDC數據實時入湖;支持增量數據處理,可基於Flink、Spark進行流式數據處理;支持基於增量通道實現快速增量批量處理;
  • 數據事務:支持事務ACID,異常回滾,Snapshot數據隔離;
  • 併發性:支持MVCC併發控制,支持讀寫併發操作;
  • 多版本能力:支持基於Time Travel多版本,SavePoint能力;
  • 存儲優化:支持order/z-order clustering 優化,提高查詢能力;
  • 表結構變更:支持豐富的表變更操作,向後兼容;
  • 數據管理:支持豐富的clustering、compactions、clean、小文件自動合併操作;
  • 生態兼容:豐富的生態集成,支持flink/spark 寫入,HetuEngine/hive/spark/flink 做實時/增量查詢。

Hudi具備自動同步能力,可以將單表同步任務實現外表到內表的數據合併,記錄增量同步進度。智能調度框架,實現定時調用存儲過程任務,並進行資源管控調度,提供任務啓停,告警等運維能力。

當前DWS支持自動增量同步

自動同步

(1)單表同步任務實現外表到內表的數據合併,記錄增量同步進度。(列映射, Hudi增量commit time同步點)

(2)智能調度框架,實現定時調用存儲過程任務,並進行資源管控調度,提供任務啓停,告警等運維能力 。

Hudi同步任務使用:

Hudi查詢方式介紹

  • Hudi外表查詢

(1)支持Hudi兩種表類型,COW、MOR;

(2)支持Hudi兩種查詢視圖,snapshot、incremental。

  • 增量查詢

針對Hudi增量查詢功能,可以通過設置增量查詢參數實現增量查詢。

  • 增量設置的增量參數

可以通過查詢以下視圖查看已經設置了哪些參數,檢查是否設置正確。

  • 查詢Hudi外表屬性

讀取OBS上Hudi數據的hoodie.properties。

  • 查詢Hudi外表最大時間線

讀取OBS上Hudi數據最大時間線,也就是最新的提交記錄。

元數據打通

圖一屬於存算分離架構,存算分離,底層數據文件可對上層服務共享。湖和倉的元數據隔離,共享數據仍需ETL。湖和倉權限隔離,不支持統一權限管理。

圖二湖倉一體架構,在存算分離的基礎上,構建統一元數據層,上層服務通過統一元數據層,便捷高效地共享數據,對上層服務實現統一的高效的權限管理。

元數據打通——Lakeformation使用指導

創建Lakeformation數據源

前提條件:

  1. 有可用的LakeFormation實例且已對接MRS服務;
  2. 創建包含LakeFormation權限的委託(需包含最小權限)。

步驟一:在GaussDB(DWS)管理控制檯,單擊“集羣管理”

步驟二:在集羣列表,單機指定集羣的名稱,然後選擇“數據源->Lakeformation數據源”。

步驟三:在LakeFormation數據源頁面,單擊“創建LakeFormation數據源連接”,填寫配置參數。

創建external schema

通過創建external schema來訪問存儲在Lakeformation服務中MRS服務表的元數據,進而訪問存儲在OBS上的表數據。

查詢:其中ex_lf爲前面創建的external schema的名稱,test爲想要訪問的Lakeformation服務的表。且該表已經在角色授權中對當前用戶授予此表對應的select權限。

本期分享到此結束,更多關於GaussDB(DWS)產品技術解析、數倉產品新特性的介紹,請關注GaussDB(DWS)開發者平臺,GaussDB(DWS)開發者平臺爲開發者們提供最新、最全的信息諮詢,包括精品技術文章、最佳實踐、直播集錦、熱門活動、海量案例、智能機器人。讓您學+練+玩一站式體驗GaussDB(DWS)。

GaussDB(DWS)開發者平臺鏈接:https://bbs.huaweicloud.com/contents/dws/learning.html

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章