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

74 阅读1分钟

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

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

发展历史

  1. Hadoop
  2. Hive
  3. 湖仓一体

核心技术

文件结构

  • 写入数据湖时:
    • 按照每条数据的date进行分区
    • 额外使用metadate文件记录表信息

623adbecc3d67318d5af98eaee794d1.png

da7316eadd35de4d528c1804a23592d.png

Time travel

  1. 每一次写入操作,创建一个新的json文件,以递增版本号命名,记录本次新增/删除的文件。
  2. 每当产生N个json,做一次聚合,记录完整的分区文件信息
  3. 用checkpoint记录上次做聚合的版本号

81bd60e777c929f2080637b7f7cc282.png

5941b2bac55a0c779ded3cb414699ca.png

Transaction

ACID,是指数据库在写入或更新资料的过程中,为保证事务是正确可靠的,所必须具备的四个特性。

  • 以A给B转账10元为例:
    1. Atomicity: 原子性--要么A-10 B+10,要么都不变
    2. Consistency:一致性--不可以A-10 B+5
    3. Isolation: 事务隔离--A和C同时给B转10,B最终结果应是+20
    4. Durability: 持久性--转账服务器重启,结果不变

数据湖中的 ACID:

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

各有所长

iceberg工作重点

  • 用户体验:
    • Schema evolution
    • Partiyion evolution
    • Hidden partition
    • Time Travel
    • Version Rollback
  • 性能
    • 快速file plan
    • 更多的filter方式
  • 可靠性
    • ACID Transaction

Copy On Write

2b1c7e001105f4eee3ca92a1220ddd5.png

Merge On Read

a0c69c836ee6fe489aeeb1b2f91e4dc.png

总结场景

e8534ed9340051f80df5a16aa3fab87.png