数据湖三剑客:Delta Lake、Hudi 与 Iceberg | 青训营笔记

100 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第10天

发展历史

Hadoop

数据湖最开始的概念——分布式存储HDFS使用目录来区分不同的数据集。

好处:

  • 同一公司/组织可以使用共享存储
  • 数据访问方便,灵活性高

坏处:

  • 没有记录文件的schema(包括列名、列类型),经常使用Schema on Query的方式
  • 难以得知数据集包含了那些文件,是通过什么样的分区组织的
  • 如果多个程序都在修改这个数据集(修改数据、修改表结构),其他程序难以配合做修改

Hive

数据湖的演进——Hive Metastore动对数据湖中的数据集进行集中“定义”

数据湖中存在了哪些数据集; 它们都存储在什么目录; 数据集的schema是什么样子的; 数据集有哪些分区,每个分区的目录是什么;
坏处:

  • 没有实现Transaction ACID。
  • 没有支持更多样的schema变更。

湖仓一体

湖仓一体(数据湖的现状):

  • 结合了数据湖和数据仓库的优势;
  • 将数据仓库中对于数据的严格管理直接实现到了低成本的分布式存储之上;
  • Key Features:
  • Transaction ACID
  • Schema管理
  • 存储计算分离
  • 支持多种计算引擎和文件格式

核心技术

数据湖中的ACID:

  1. Atomicity:原子性:本次写入要么对用户可见,要么不可见(需要设计)
  2. Consistency:一致性:输入是什么,落盘的就是什么(由计算引擎保证)
  3. Isolation:事务隔离:正确解决读写冲突和写写冲突(需要设计)
  4. Durability:持久性:落完数据后,即便服务器重启结果不变(由存储引擎保证)

数据湖三剑客

lceberg工作重点

用户体验

  1. Schema evolution
  2. Partition evolution
  3. Hidden partition
  4. Time Travel
  5. Version Rollback性能
  6. 快速file plan2.更多的filter方式可靠性
  7. ACID Transaction完全开源,由Apache孵化开发

性能

  1. 快速file plan
  2. 更多的filter方式

可靠性 ACID Transaction

Hudi工作重点:

  1. Timeline service: Hudi管理transaction的方式
  2. Hudi Table Type: Copy on Write /Merge on Read
  3. 高效的Upserts: update or insert
  4. 索引表:快速定位一条数据的位置
  5. Streaming lngestion Service
  6. 完全开源,由Apache 孵化

Delta Lake工作重点

  1. ACID Transaction
  2. Schema校验(不是evolution)
  3. 流批一体
  4. Time Travel
  5. Upsert/Delete
  6. Z-Order优化
  7. 只开源了一部分,由Databricks自己主导开发,Z-order等优化的实现未开源