其他分享
首页 > 其他分享> > Delta, Hudi, Iceberg对比

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演进 表结构变更

并发控制及数据变更

并发控制机制数据变更方式
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: 隔离级别含义

  1. Serialization: 所有的读写操作必须串行
  2. Write Serialization: 写操作之间必须穿行, 读写操作之间可以并行
  3. Snapshot Isolation: 写操作无交集则可并行,否则串行. 读写操作之间可以并行 Snapshot Isolation 的隔离级别对并发性的支持相对较好

    PS3: 数据回溯回滚(Time travel)

    用户查询具体时间点的数据快照或者回滚错误的数据更新

标签:Hudi,--,并发,Delta,Iceberg,数据
来源: https://blog.csdn.net/wocawuliao/article/details/122588565