華為雲數倉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 實現統⼀的後設資料管理、許可權管理、統計資訊管理、入湖管理等。
為什麼要做湖倉融合?
- 數倉加速:基於資料湖的遠端IO成本很高,且缺少一系列數倉加速的手段。早期的資料湖格式多樣且不成熟,索引的支援不完善,查詢效能有待提升。並且資料湖主要針對吞吐量的最佳化,關注低成本和高可靠,不適用於高效能的需求;
- 實時分析:傳統的資料湖實時性不夠,在Iceberg或者Hudi的支援下可能能解決分鐘級別的時效性,但是無法解決秒級時效性的問題;
- 高併發查詢:對於高併發查詢,不管是點查還是聚合類的查詢,數倉是更擅長的。比如做分桶的處理,更精細的裁剪,降低掃描的資料量,提升點查的效率。另一方面透過物化檢視或者CUBE等相關的預聚合手段,可以提升聚合查詢的效能。
- 降本增效:簡化技術架構,增強整體架構可靠性,降低運維成本;
- 更完善的資料治理:湖倉融合的資料底座統一了主資料和後設資料,基於此才有可能做上層統⼀的資料治理。
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資料來源
前提條件:
- 有可用的LakeFormation例項且已對接MRS服務;
- 建立包含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
點選關注,第一時間瞭解華為雲新鮮技術~