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

184 阅读2分钟

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

今天的学习内容是数据湖三剑客:Delta Lake、Hudi 与 Iceberg 详解

主要由以下部分组成:

  1. 发展历史
  2. 核心技术
  3. 各有所长

1.发展历史

阶段一:Hadoop

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

好处:

  • 同一公司可以共享存储管理

  • 数据访问方便,便于管理 坏处:

  • 没有记录文件的schema((包括列名、列类型),经常使用Schema on Query的方式

  • 难以得知数据集包含了那些文件,是通过什么样的分区组织的

  • 如果多个程序都在修改这个数据集(修改数据、修改表结构),其他程序难以配合做修改

阶段二:Hive

好处:

  • 相较于HDFS,知道了数据集中的schema具体是什么样子的,数据集的分区及其目录。

坏处:

  • 不能支持多人读读,读写。
  • 不能自由修改,删除schema

阶段三:湖仓一体

优势:

  • 结合了数据湖和数据仓库的优势
  • 将数据仓库的对于数据严格管理实现到了低成本的分布式存储上

主要特点:

  • Transaction ACID
  • Schema管理
  • 存储计算分离
  • 动支持多种计算引擎和文件格式

2.核心技术##

Time travel

77UZGIVC4Q`_23J%QPHIH5E.png

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

Transaction ACID

QQ图片20220808204824.png

Schema Evolution

重要:

  • 用户并不直接读取parquet本身,而是通过数据湖接口读取。
  • 数据湖内部会读取应该读的parquet,并在schema上做进一步处理。

3.各有所长

iceberg工作重点

用户体验:

  • Schema evolution
  • Hidden partition
  • Time Travel
  • Version Rollback

性能

  • 快速file plan
  • 更多的filter方式

可靠性

  1. ACID Transaction

完全开源,由Apache孵化开发

Hudi

Hudi工作重点:

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

Delta Lake工作重点:

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

三大数据湖支持场景:

QQ截图20220808210226.png