hudi基本概念


一、Timeline
  Hudi 的核心是維護不同時間對表執行的所有操作的事件表,這有助於提供表的即時視圖,同時還有效地支持按到達順序進行數據檢索。

  Hudi 包含以下組件∶

    1)Instant action∶在表上的操作類型

    2)Instant time∶ 操作開始的一個時間戳,該時間戳會按照開始時間順序單調遞增

    3)state∶即時狀態

  Hudi 保證在時間軸上執行的操作都是原子性的,所有執行的操作包括∶

    1)commits∶原子的寫入一張表的操作

    2)cleans∶后台消除了表中的舊版本數據,即表中不在需要的數據

    3)delta_commit增量提交,將一批數據原子寫入到 MergeOnRead表中,並且只記錄到增量日志中

    4)compaction∶后台協調 Hudi 中的差異數據

    5)rollback∶回滾,刪除在寫入過程中的數據

    6)savepoint∶將某些文件標記"已保存",以便清理數據時不會刪除它們,一般用於表的還原,可以將數據還原到某個時間點

  任何操作都可以處於以下狀態

    1)Requested∶表示已安排操作行為,但是尚未開始

    2)Inflight∶表示正在執行當前操作

    3)Completed∶表示已完成操作

二、File management
  Hudi將表組織成 DFS上基本路徑下的目錄結構。與hive類似,有相應的分區,每個分區均有唯一標示。

  在每個分區內,有多個數據組,每個數據組包含幾個segment,其中segment包含基本文件和日志文件。Hudi采用 MVCC設計,其中壓縮操作將日志文件和基本數據文件合並成新的文件片,將未使用的文件片去除。

三、索引
  Hudi通過使用索引機制,生成 hoodie密鑰映射對應文件ID,從而提供高效 upsert 操作。

四、表類型
  1)Copy on Write∶僅使用列式存儲,例如 parquet。僅更新版本號,通過寫入過程中執行同步合並來重寫文件

  2)Merge on Read∶基於列式存儲(parquet)和行式存儲(arvo)結合的文件更始進行存儲。更新記錄到增量文件,壓縮同步和異步生成新版本的文件

五、查詢類型
  1)快照查詢(Snapshot Queries)∶查詢操作將查詢最新快照的表數據。如果是 Merge on Read類型的表,它將動態合並最新文件版本的基本數據和增量數據用於顯示查詢。如果是 Copy On Write 類型的表,它直接查詢 parquet 表,同時提供upsert/delete 操作.

  2)增量查詢(Incremental Queries)∶查詢只能看到寫入表的新數據。這有效的提供了 change streams 來啟用增量數據管道。

  3)優化讀查詢(Read Optimized Queries)∶ 查詢將查看給定提交/壓縮操作表的最新快
照

  4)表查詢異同:快照查詢(實時查詢)數據延遲更低,查詢延遲更高(合並列式 + 基於行的增量);優化讀查詢:數據延遲高,查詢性能低(原始列式存儲)
  

 


免責聲明!

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



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