DLA Lakehouse實時入湖方案利用數據湖技術,重構數倉語義;分析數據湖數據,實現數倉的應用。本文以RDS MySQL數據源為例介紹了RDS MySQL從入湖到分析的操作步驟。
背景信息
數據湖分析(Data Lake Analytics)是?前炙?可熱的?向,主要是以對象存儲系統為核心,構建海量、低成本的結構化、半結構化、?結構化對象?件的入湖、存儲和分析業務。?前各?云?商都在積極跟進,布局相關的業務能力,阿?云數據湖分析團隊在這個?向也很早就投?相關產品的研發。隨著數據湖的應?越來越多,?家發現依賴數據湖最原始的能力,僅僅做簡單的存儲和分析,往往會遇到很多的問題。比較典型的痛點如下:
- 多源頭數據需要統?存儲管理,并需要便捷的融合分析。
- 源頭數據元信息不確定或變化大,需要?動識別和管理;簡單的元信息發現功能時效性不夠。
- 全量建倉或直連數據庫進行分析對源庫造成的壓?較大,需要卸載線上壓?規避故障。
- 建倉延遲較?(T+1天),需要T+10m的低延遲入湖。
- 更新頻繁致小文件多,分析性能差,需要Upsert?動合并。
- 海量數據在事務庫或傳統數倉中存儲成本高,需要低成本歸檔。
- 源庫?存儲格式或非分析型格式,分析能力弱,需要?持列式存儲格式。
- ?建?數據平臺運維成本高,需要產品化、云原生、?體化的?案。
- 常見數倉的存儲不開放,需要?建能力、開源可控。
Lakehouse是一種更先進的范式(Paradigm)和方案,用來解決上述簡單入湖分析遇到的各種痛點問題。在Lakehouse技術中,?常關鍵的技術就是多版本的?件管理協議,它提供?湖和分析過程中的增量數據實時寫?、ACID事務和多版本、小?件?動合并優化、元信息校驗和?動進化、?效的列式分析格式、?效的索引優化、超?分區表存儲等能?。?前開源社區有Hudi、Delta、Iceberg等數據湖方案,阿?云數據湖分析團隊選擇了比較成熟的Hudi作為DLA Lakehouse的湖倉?體化格式。關于Lakehouse的更多介紹,請參見Lakehouse介紹。
DLA Lakehouse核心概念和相關約束說明
- Lakehouse(湖倉)有兩重含義:
- 范式:即解決簡單?湖分析所遇到的痛點問題的?種解決?案。
- 存儲空間:?來提供?個從其他地?入湖寫?數據的空間,后續所有相關操作都圍繞著這個湖倉來進行。
- 不同的Lakehouse有完全不同的路徑,路徑之間不可以相互有前綴關系(防止數據覆蓋)。
- Lakehouse不能輕易進行修改。
- Workload(?作負載)是圍繞湖倉?體化而展開的核心工作的編排調度(由DLA Lakehouse統?調度),包括如下功能特點:
- 入湖建倉
- 為了將其他源頭的數據,匯總到整個湖倉內構建?個統?的數據平臺,例如有DB類型的?湖建倉,也有Kafka的入湖建倉,還有OSS的數據轉換建倉。
- 不同的入湖建倉,涉及到全量、增量等多個階段,會統?編排并統?協調調度,簡化?戶管理成本。
- 查詢優化
為了提升分析能力,構建各種查詢優化方面的工作負載,比如自動構建索引、自動清理歷史數據、自動構建物化視圖等。
- 管理
- 成本優化:?動?命周期、冷熱分層存儲等。
- 數據互通:跨域建倉等。
- 數據安全:備份恢復等能力。
- 數據質量:DQC自動校驗等。
- 入湖建倉
- Job作業對于Workload的實際作業拆分和執行,以及調度到不同的計算平臺上執行,對?戶不可見;目前DLA只?持調度作業到DLA Serverless Spark上執行。核心單元概念如下:
- 全量作業(從某個Workload中拆分出來)
- 增量作業(從某個Workload中拆分出來)
- Clustering:小文件聚合
- Indexing:自動索引構建
- Compaction:自動日志合并
- Tier:自動分層存儲
- Lifecycle:自動生命周期管理
- MaterializedView:物化視圖
- DB(庫):DLA的庫
- Table(表):DLA的表
- Partition(分區):DLA的分區
- Column(列):DLA的列
DLA Lakehouse方案介紹
DLA Lakehouse實時入湖是分鐘級近實時的數據入湖方案,它能夠構建統一、低成本、海量數據、自動元信息同步的湖倉平臺,并支持高性能的DLA Spark計算和DLA
Presto分析。DLA Lakehouse實時入湖方案的存儲與計算完全分離,寫、存、讀完全彈性,它的方案架構如下圖所示:
準備工作
您需要在DLA中進行以下操作:
- 開通云原生數據湖分析服務說明 如果未注冊阿里云賬號,請先注冊賬號。
- 創建虛擬集群說明 DLA基于Spark引擎來運行DLA Lakehouse,因此創建虛擬集群的時候需要選擇Spark引擎。
您需要在RDS中進行以下操作:
- 創建RDS MySQL實例說明 由于DLA Lakehouse只支持專有網絡,故創建RDS MySQL實例時,網絡類型請選擇專有網絡。
- 創建數據庫和賬號
- 通過DMS登錄RDS數據庫
- 在SQLConsole窗口中執行SQL語句創建庫表并插入數據。
您需要在DTS中進行以下操作:
說明 目前DLA中RDS數據源的入湖分析工作負載,會先利用RDS做數據的全量同步,然后依賴DTS數據訂閱功能做增量同步,最終實現完整的RDS數據入湖。
- 創建RDS MySQL數據訂閱通道說明
- 由于DLA Lakehouse只支持專有網絡,故訂閱任務的網絡類型請選擇專有網絡。
- 由于DLA Lakehouse無法自動更新元數據信息,故需要訂閱的數據類型請選擇數據更新和結構更新。
- 新增消費組
- 查看訂閱Topic和消費者ID。后續的創建RDS入湖負載的增量同步配置中需要使用這2個參數。
- 在訂閱任務的訂閱配置中可以查看訂閱Topic。
- 在訂閱任務的數據消費中可以查看消費者ID。
確保您的數據流在RDS中部署的區域與DTS、DLA、OSS的區域相同。