Hudi系列:Hudi核心概念(版本1.0)
?Hudi架構
?一. 時間軸(TimeLine)
?1.1 時間軸(TimeLine)概念
?1.2 Hudi的時間線由組成
?1.3 時間線上的Instant action操作類型
?1.4 時間線上State狀態類型
?1.5 時間線官網實例
?二. 文件布局
?三. 索引
?3.1 簡介
?3.2 對比Hive沒有索引的區別
?3.3 Hudi索引類型
?3.4 全局索引與非全局索引
?四. 表類型
?4.1 COW:(Copy on Write)寫時復制表
?4.1.1 概念
?4.1.2 COW工作原理
?4.1.3 COW表對表的管理方式改進點
?4.2 MOR:(Merge on Read)讀時復制表
?4.2.1 概念
?4.2.2 MOR表工作原理
?4.3 總結了兩種表類型之間的權衡
?五. 查詢類型
?5.1 Snapshot Queries
?5.2 Incremental Queries
?5.3 Read Optimized Query
下面描述了 Hudi 表存儲文件的一般組織方式。
?Hudi 將數據表組織到存儲中基本路徑下的目錄結構中。
?根據表架構中定義的分區列,表可以選擇性地分為多個分區。
?在每個分區中,文件被組織成文件組,由文件 ID (uuid) 唯一標識
?每個文件組包含多個文件切片。
?每個切片包含一個基本文件 (parquet/orc/hfile)(由配置 - hoodie.table.base.file.format 定義),由在特定時刻完成的提交寫入,以及一組日志文件 (.log.),由在下一個基本文件請求時刻之前完成的提交寫入。
?Hudi 采用多版本并發控制 (MVCC),其中壓縮操作合并日志和基本文件以生成新的文件切片,清理操作刪除未使用/較舊的文件切片以回收文件系統上的空間。
?所有元數據(包括時間線、元數據表)都存儲在基本路徑下的特殊 .hoodie 目錄中。

1.基礎文件
基礎文件存儲完整記錄,而更改記錄則存儲在下面的增量日志文件中。Hudi 目前支持以下基礎文件格式。
用于矢量化讀取、列壓縮和高效列式訪問的列式格式,適用于分析/數據科學
用于快速掃描以讀取整個記錄的行式 avro 文件
用于高效搜索索引記錄的隨機訪問優化 HFile(基于 SSTable 格式)

?
2.日志文件
日志文件存儲基礎文件創建后對基礎文件的增量更改(部分或全部),例如更新、插入和刪除。日志文件包含不同的塊(數據、命令、刪除塊等),這些塊對基礎文件的特定更改進行編碼。數據塊對基礎文件的更新/插入進行編碼,并可自定義以支持不同的需求。
面向行的 avro 文件,用于快速/輕量級寫入
隨機訪問優化的 HFile,用于高效搜索索引記錄(基于 SSTable 格式)
列式 parquet 文件,用于矢量化日志合并。
3. 存儲格式版本控制
Hudi 存儲格式的元素(如日志格式、日志塊結構、時間線文件/數據模式)都是版本化的,并與給定的表版本相關聯。表版本是一個單調遞增的數字,每次存儲中產生的某些位發生變化時,該數字就會增加。
Backwards compatible reading
Hudi 版本向后兼容,以確保新軟件版本可以讀取最近的舊表版本。跨不同引擎升級 Hudi 的推薦方法是首先升級所有讀取器(例如使用表的交互式查詢引擎),然后升級任何/所有寫入器和表服務。 Hudi 存儲引擎還實現了自動升級功能,可以在后續寫入操作中優雅地執行表版本升級,通過自動執行任何必要的步驟而無需停機查詢/讀取。
Backwards compatible writing
但是,這可能并非總是可行的,因為基于 Hudi 構建的數據平臺可能具有可以同時充當讀取器和寫入器的多階段管道。在這種情況下,Hudi 升級需要通過首先升級最下游的作業來執行,一直跟蹤 到可能由攝取系統寫入的第一個 Hudi 表。為了簡化此過程,Hudi 還允許寫入最近的舊表版本,以便可以首先在同一個舊表版本之上在整個部署中推出新的 Hudi 軟件二進制文件。一旦所有作 業和引擎都有了新的二進制文件,那么就可以按任何順序升級到較新的表版本,并且讀者將動態適應
4. 配置
以下寫入器配置控制寫入舊表版本和自動升級行為。
| 配置名稱 | 默認 | 描述 |
|---|---|---|
| hoodie.write.table.version | latest (Optional) | 此寫入器存儲表的表版本。如果表已存在,則此版本應與當前表版本匹配。按上述方法升級時,請將此版本設置為較低的版本。 |
| hoodie.write.auto.upgrade | true (Optional) | 假如設置為enabled, 如果當前表版本較低,則寫入器會自動將表遷移到指定的寫入表版本。 |
?
文獻: https://hudi.apache.org/docs/overview
審核編輯 黃宇
-
存儲
+關注
關注
13文章
4787瀏覽量
90057
發布評論請先 登錄
深入解析RK平臺Android/Linux Bootloader核心文件:android_bootloader.c
KYOCERA AVX FloXY系列浮動板對板連接器:工業、汽車與交通應用的理想之選
TDK IBQ系列磁性片:RFID應用的理想之選
25W平面DC - DC變壓器:PLR系列的卓越之選
828系列高壓管狀熔斷器:緊湊汽車電子應用的理想之選
IBM Storage Scale System 6000煥新升級
RK?平臺?Vendor Storage?開發指南:基礎知識、流程與實用技巧
電機轉子永磁體布局怎么選?一文GET!
瑞之辰專利布局,深挖傳感技術發展護城河
Hudi系列:Hudi核心概念之文件布局(Storage Layouts)
評論