全部產品
Search
文件中心

Data Lake Analytics - Deprecated:DLA Lakehouse即時入湖

更新時間:Jul 06, 2024

DLA Lakehouse即時入湖方案利用資料湖技術,重構數倉語義;分析資料湖資料,實現數倉的應用。本文以RDS MySQL資料來源為例介紹了RDS MySQL從入湖到分析的操作步驟。

背景資訊

資料湖分析(Data Lake Analytics)是⽬前炙⼿可熱的⽅向,主要是以Object Storage Service系統為核心,構建海量、低成本的結構化、半結構化、⾮結構化對象⽂件的入湖、儲存和分析業務。⽬前各⼤雲⼚商都在積極跟進,布局相關的業務能力,阿⾥雲資料湖分析團隊在這個⽅向也很早就投⼊相關產品的研發。隨著資料湖的應⽤越來越多,⼤家發現依賴資料湖最原始的能力,僅僅做簡單的儲存和分析,往往會遇到很多的問題。比較典型的痛點如下:
  • 多源頭資料需要統⼀儲存管理,並需要便捷的融合分析。
  • 源頭資料元資訊不確定或變化大,需要⾃動識別和管理;簡單的元資訊發現功能時效性不夠。
  • 全量建倉或直連資料庫進行分析對源庫造成的壓⼒較大,需要卸載線上壓⼒規避故障。
  • 建倉延遲較⻓(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即時入湖方案的儲存與計算完全分離,寫、存、讀完全彈性,它的方案架構如下圖所示:Lakehouse即時入湖

準備工作

您需要在DLA中進行以下操作:
  1. 開通雲原生資料湖分析服務
  2. 建立虛擬叢集
    說明 DLA基於Spark引擎來運行DLA Lakehouse,因此建立虛擬叢集的時候需要選擇Spark引擎。
您需要在RDS中進行以下操作:
  1. 快速建立RDS MySQL執行個體
    說明 由於DLA Lakehouse只支援專用網路,故建立RDS MySQL執行個體時,網路類型請選擇專用網路
  2. 建立資料庫和帳號
  3. 通過DMS登入RDS資料庫
  4. SQLConsole視窗中執行SQL語句建立庫表並插入資料。
您需要在DTS中進行以下操作:
說明 目前DLA中RDS資料來源的入湖分析工作負載,會先利用RDS做資料的全量同步,然後依賴DTS資料訂閱功能做增量同步處理,最終實現完整的RDS資料入湖。
  1. 建立RDS MySQL資料訂閱通道
    說明
    • 由於DLA Lakehouse只支援專用網路,故訂閱任務的網路類型請選擇專用網路
    • 由於DLA Lakehouse無法自動更新中繼資料資訊,故需要訂閱的資料類型請選擇資料更新結構更新
  2. 新增消費組
  3. 查看訂閱Topic和消費者ID。後續的建立RDS入湖負載的增量同步處理配置中需要使用這2個參數。
    • 在訂閱任務的訂閱配置中可以查看訂閱Topic。訂閱Topic
    • 在訂閱任務的資料消費中可以查看消費者ID。消費組ID
您需要在OSS中進行以下操作:
  1. 開通OSS服務
  2. 建立儲存空間
    說明 由於目前DLA Lakehouse都是將資料寫入OSS的某個空目錄內,為了方便進行獨立的資料管理,請您盡量選擇獨立的Bucket。

確保您的資料流在RDS中部署的地區與DTS、DLA、OSS的地區相同。

操作步驟

  1. 建立湖倉。
    1. 登入Data Lake Analytics控制台
    2. 在左側導覽列單擊資料湖管理 > 湖倉一體化
    3. Lakehouse湖倉一體化頁面的湖倉列表頁簽,單擊建立新湖倉
    4. 建立湖倉頁面進行參數配置。參數說明如下表所示:建立湖倉
      參數名稱參數說明
      湖倉名稱DLA Lakehouse的名稱。
      描述資訊湖倉備忘描述,例如湖倉應用情境、應用業務限制等。
      儲存類型DLA Lakehouse資料的儲存介質,當前僅⽀持OSS類型。
      儲存路徑DLA Lakehouse資料在OSS中的儲存路徑。
      說明 請謹慎規劃儲存路徑,建立後不允許修改。建議選擇一個空目錄,且不能與之前建立的湖倉目錄有互相內含項目關聯性,防止歷史資料被覆蓋。
      編碼儲存資料的編碼類別型,當前僅⽀持⽬標儲存資料編碼為UTF8。
    5. 參數配置完成後,單擊建立
    湖倉建立成功後,湖倉列表頁簽中將展示建立成功的湖倉任務。湖倉列表
  2. 建立入湖負載。
    1. Lakehouse湖倉一體化頁面的湖倉列表中,單擊操作列的建立入湖負載
    2. 建立工作負載頁面,進行資料來源的基礎配置全量同步配置增量同步處理配置產生目標資料規則配置
      說明 當前僅支援RDS資料來源和PolarDB資料來源。
      • 基礎配置的參數說明如下:基礎配置
        參數名稱參數說明
        名稱工作負載的名稱。
        選擇湖倉工作負載將資料輸出到所選的湖倉儲存空間內。可下拉選擇已經建立的湖倉。
        資料存放區格式資料的儲存格式固定為HUDI。
        源端執行個體引擎類型資料來源的引擎類型。當前僅支援MySQL引擎。
        任務執行Spark虛擬叢集執行Spark作業的虛擬叢集。目前入湖⼯作負載在DLA Spark的虛擬叢集中運行。如果您還未建立虛擬叢集,請進行建立,具體請參見建立虛擬叢集
        說明 請確保您選擇的Spark虛擬叢集處於正常運行狀態,如果您選擇的Spark虛擬叢集處於非正常運行狀態,啟動工作負載時將失敗。
      • 全量同步配置的參數說明如下:全量同步配置
        參數名稱參數說明
        執行個體名稱選擇需要入湖的資料來源的執行個體ID名稱。
        使用者名稱需要入湖的資料來源執行個體的訪問使用者名稱。
        密碼需要入湖的資料來源執行個體的訪問密碼。
        Spark運行所需私人網路IDDLA Spark利用ENI技術配置該VPC網路來訪問資料來源。關於DLA Spark如何配置資料來源VPC網路,請參見配置資料來源網路
        Spark運行所需交換器IDDLA Spark運行所需VPC網路下的交換器ID。
        Spark運行所需安全性群組DLA Spark訪問資料來源時進行網路安全授權的安全性群組ID。您可以到RDS資料來源執行個體的資料安全性頁面中擷取安全性群組ID,如未設定安全性群組請進行添加,具體操作請參見設定安全性群組
        Spark運行所需CU數指定執行DLA Spark作業所使用的CU數,建議多保留一些CU數,讓入湖效能更好、作業任務更穩定。
      • 增量同步處理配置的參數說明如下:增量同步處理配置
        參數名稱參數說明
        同步方式增量同步處理的通道類型。當前僅⽀持DTS⽅式。
        訂閱配置增量同步處理所使用的DTS訂閱通道配置,分別選擇訂閱Topic和消費組ID。
        DTS使用者名稱增量同步處理DTS資料訂閱消費組的帳號資訊。
        DTS密碼增量同步處理DTS資料訂閱消費組帳號對應的密碼資訊。
        Spark運行所需私人網路ID
        DLA Spark利用ENI技術配置該VPC網路來訪問資料來源。關於DLA Spark如何配置資料來源VPC網路,請參見配置資料來源網路
        Spark運行所需交換器ID
        DLA Spark運行所需VPC網路下的交換器ID。
        Spark運行所需安全性群組
        DLA Spark訪問資料來源時進行網路安全授權的安全性群組ID。您可以到RDS資料來源執行個體的資料安全性頁面中擷取安全性群組ID,如未設定安全性群組請進行添加,具體操作請參見設定安全性群組
        Spark運行所需CU數
        指定執行DLA Spark作業所使用的CU數,建議多保留一些CU數,讓入湖效能更好、作業任務更穩定。
        進階規則配置
        • 消費位點:資料消費的時間點。當前取值固定為earliest,表示自動從最開始的時間點擷取資料。
        • 每批次消費記錄條數:表示每次通過DTS拉取的資料量。
      • 產生目標資料規則配置的參數說明如下:產生目標資料規則配置
        參數名稱參數說明
        庫名首碼產生目標庫的資料路徑和元資訊名稱時,會自動添加該首碼。為了避免海量資料和中繼資料在DLA中衝突,請確保輸入的首碼在當前阿里雲帳號下的所有工作負載內都不重複。
        首碼應用範圍設定庫名首碼的應用範圍。包括:
        • 資料目錄加首碼,中繼資料中庫表名加首碼
        • 資料目錄不加首碼,中繼資料中庫表名加首碼
        庫表過濾設定需要同步的庫和表範圍。排除的優先順序高於包含。
        目標端主鍵欄位為指定庫表設定主鍵欄位。例如:庫表選擇輸入db1.user_*,主鍵欄位輸入f1,f2,表示db1的所有user_首碼的表都使⽤f1,f2兩個欄位作為組合主鍵。
        說明 如果不設定該參數,則系統依次嘗試選擇表中的主鍵或唯一鍵來作為目標端主鍵欄位;如果表中不存在主鍵或唯一鍵,則視為忽略同步。
        進階配置

        目標端分區欄位:為指定庫表設定分區欄位。例如:庫表選擇輸入db1.user_* ,分區欄位輸入gmt_create,表示db1的所有user_首碼的表都使⽤gmt_create欄位作為分區欄位。如果不設定該參數,則產生的表預設沒有分區。

    3. 上述參數配置完成後,單擊建立
    入湖負載建立成功後,在工作負載列表頁簽中將展示建立成功的工作負載。工作負載列表
  3. 啟動工作負載。
    工作負載列表頁簽中,定位到建立成功的入湖負載,在操作列單擊啟動工作負載列表
    工作負載任務啟動成功後,狀態將由NO STATUS(未啟動)變為RUNNING(運行中)工作負載列表
    您還可以在操作停止校正工作負載任務、查看Spark日誌。具體說明如下:
    操作按鈕含義
    詳情單擊該按鈕,可以查看Spark日誌或者UI,並定位工作負載任務啟動失敗原因。
    停止單擊該按鈕,可以停止工作負載任務。
    校正單擊該按鈕,可以對啟動失敗的工作負載任務進行資料校正。
    說明 校正一般使用在庫表變更、欄位格式不一致等情境下。校正過程會重新進行部分存量資料的全量同步,請謹慎填寫庫表篩選條件運算式,建議使用精確匹配運算式篩選,避免校正一些不必要的資料。如果未填寫需要校正的庫表,則校正失敗。
    工作負載任務啟動成功後,在湖倉列表頁簽單擊儲存路徑下的OSS路徑連結,可以跳轉到OSS控制台查看已經從RDS資料來源同步過來的庫表路徑以及表檔案。
    • 資料庫路徑資料庫
    • 資料表路徑資料表
    • 資料表檔案資料表檔案
  4. 進行資料分析。
    工作負載任務啟動成功後,在資料湖管理 > 中繼資料管理頁面中,查看從RDS資料來源同步過來的中繼資料資訊。中繼資料管理單擊操作列的查詢資料,在Serverless Presto > SQL執行頁面,查看從RDS資料來源同步過來的全量表資料。SQL執行
    如果您在資料來源RDS中變更了未經處理資料,在Serverless Presto > SQL執行頁面進行查詢時,資料會同步進行更新。