Delta Lake,Hudi与Iceberg|青训营笔记

111 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第11天,在第十一节课中主要了解到了Delta Lake,Hudi与Iceberg有关的内容。

发展历史

数据湖发展阶段1-Hadoop

  • 数据湖最开始的概念--分布式存储HDFS
  • 使用目录来区分不同的数据集
  • 好处:共享存储,数据访问方便,灵活性高
  • 坏处:没有记录文件的schema;难以得知数据集包含了那些文件,是通过什么样的分区组织的;如果多个程序都在修改这个数据集,其他程序难以配合做修改

数据湖发展阶段2-Hive

  • 对数据湖中的数据集进行集中“定义”
  • 需要Transaction ACID
  • 需要支持更多样的schema变更

数据湖发展阶段3-湖仓一体

  • 数据仓库将数据从数据源提取和转换,加载到目的地
  • 数据仓库存储+计算不分离
  • 数据仓库严格控制写入数据的schema
  • 结合了数据湖和数据仓库的优势
  • 将数据仓库中

业界三大数据湖

  • Hudi
  • Iceberg

核心技术

  • 设计一个简单的数据湖

Time travel

  • 每次写入都生成一个新的元数据文件,记录变更
  • 分区数据在Update时,不要删除旧数据,保证新旧共存
  • 元数据中存储具体的文件路径,而不是仅仅分区文件夹

Transaction

  • 事务
  • ACID:数据库在写入或更新资料的过程中,未来保证事务是正确可靠的,所必须具备的四个特性
  • 原子性、一致性、事务隔离、持久性

各有所长

Iceberg工作重点

用户体验:

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

Hudi

  • Timeline service
  • Hudi Table Type
  • 高效的upsets
  • 索引表:快速定位一条数据的位置
  • Streming Ingestion Service
  • 完全开源,由Apache孵化

Delta Lake

  • ACID Transaction
  • Schame校验
  • 流批一体
  • Time Travel
  • Upsert
  • Z-Order优化
  • 只开源了一部分,由Satabricks自己主导开发,Z-order等优化的实现未开源

总结

image.png