Delta, Hudi, Iceberg对比
概述
Delta商業版功能相對完善, 是由Databricks主推其他計算引擎的優先級是弱于Spark的并且付費, 社區版是商業版的簡化, 功能支持沒有商業版完善, 適合Spark為核心技術組件的公司.
Hudi同樣緊耦合Spark功能相對比較完善,但是擴展性比較差, 使用其他計算引擎的話開發工作量較大. 適合Spark為核心技術組件的公司.
Iceberg設計之初就是定位于提供一個開放可擴展的表格式, 因此擴展性最好, 不和任何計算引擎強耦合.對Flink的支持度相對完善.目前缺少小文件合并功能, 在upsert的支持度的上代碼可用,但是FlinkSQL方式還有些BUG. 目前社區正高優先級解決.
設計初衷
Iceberg: 高性能, 可擴展的分析與可靠的數據管理 Hudi: 使hadoop具備增量數據的upserts特性 Delta: 定位于流批一體的數據處理 雖然設計初衷不同,但是隨著組件的推廣使用, 各個組件都在補齊最近的短板.
計算框架耦合度
Delta, Hudi和Spark耦合較緊. Iceberg側重于定義一個標準、開放且通用的數據組織格式, 不和某一計算框架耦合較緊.
Schema 變更支持和設計
|Schema演進 (Schema Evolution) | 是否有自定義的Schema --| --| -- Iceberg | all | 是 Hudi | back-compitable | 否(復用spark-shema) Delta | all | 否(復用spark-shema)
PS: Schema演進 表結構變更
- Add - 在表中或是在嵌套結構中新增column
- Drop - 在表中或是在嵌套結構中移除已有的column
- Rename - 在表中或是在嵌套結構中修改column的名字
- Update - 提升數據的類型,支持column,struct field,map key,map value和list中的元素
- Reorder - 調整表中說是嵌套結構中的column順序 Hudi 僅支持添加可選列和刪除列這種向后兼容的 DDL 操作 Iceberg還額外提供 Partition Evolution, Iceberg可以在已有的表上更改分區, 并且該過程是一個操作元數據的過程, 不涉及表數據移動. 因為查詢語句并不直接引用分區值.
并發控制及數據變更
| Iceberg | 樂觀鎖 |
| Hudi | 樂觀鎖 |
| Delta | 樂觀鎖/MVCC |
PS1: 并發控制
多版本并發控制(MVCC)是一種用來解決讀-寫沖突的無鎖并發控制,也就是為事務分配單向增長的時間戳,為每個修改保存一個版本,版本與事務時間戳關聯,讀操作只讀該事務開始前的數據庫的快照。 這樣在讀操作不用阻塞寫操作,寫操作不用阻塞讀操作的同時,避免了臟讀和不可重復讀 樂觀并發控制(OCC)是一種用來解決寫-寫沖突的無鎖并發控制,認為事務間爭用沒有那么多,所以先進行修改,在提交事務前,檢查一下事務開始后,有沒有新提交改變,如果沒有就提交,如果有就放棄并重試。樂觀并發控制類似自選鎖。樂觀并發控制適用于低數據爭用,寫沖突比較少的環境
PS2: COW(Copy On Write), MOR(Merge On Read)
在實時場景下, 行級(Row-level)的更新刪除,通常有兩種方案,及寫時復制(COW)和讀時合并(MOR). 其中寫時復制(COW)在方式在寫文件的時候就做了數據合并,因此寫入數據的壓力比較大, 對讀數據比較友好. 適合大量讀的場景, 實時性較低. 而讀時合并(MOR)則是在讀數據的時候合并, 寫入是數據采用append的方式,適合快速寫入的場景, 實時性較高.
接口抽象程度和插件化
| 寫計算引擎是否可插拔 |讀計算引擎是否可插拔 |數據存儲組件是否可插拔 |文件格式是否可選 --|--|--|--|-- Iceberg | 是 |是 |是 |是 Hudi | 否(綁定了spark) |是 | 是 |是 Delta | 否(綁定了spark) |是 |是 |是
Iceberg 是抽象程度做得最好的數據湖方案, 做了非常干凈的解耦.
事物支持(ACID)和隔離級別支持
| 是否支持事務 | 隔離級別 | 是否支持數據回溯回滾(Time travel) --|--|--|-- Iceberg | 是 | Write Serialization | 是 Hudi | 是 | Snapshot Isolation | 是 Delta | 是 | Serialization
Write Serialization
Snapshot Isolation | 是
PS1: 事物的四個特性:
原子性: Atomicity, 一致性: Consistency, 隔離性: Isolation, 持久性: Durability
PS2: 隔離級別含義
PS3: 數據回溯回滾(Time travel)
用戶查詢具體時間點的數據快照或者回滾錯誤的數據更新總結
以上是生活随笔為你收集整理的Delta, Hudi, Iceberg对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钢铁侠材质制作——2、线条轮廓部分的制作
- 下一篇: android多个下拉控件,Androi