这是我参与「第四届青训营 」笔记创作活动的第11天
今天的学习内容是数据湖三剑客:Delta Lake、Hudi 与 Iceberg 详解
主要由以下部分组成:
- 发展历史
- 核心技术
- 各有所长
1.发展历史
阶段一:Hadoop
数据湖最开始的概念,分布式存储——HDFS,使用目录来区分不同的数据集。
好处:
-
同一公司可以共享存储管理
-
数据访问方便,便于管理 坏处:
-
没有记录文件的schema((包括列名、列类型),经常使用Schema on Query的方式
-
难以得知数据集包含了那些文件,是通过什么样的分区组织的
-
如果多个程序都在修改这个数据集(修改数据、修改表结构),其他程序难以配合做修改
阶段二:Hive
好处:
- 相较于HDFS,知道了数据集中的schema具体是什么样子的,数据集的分区及其目录。
坏处:
- 不能支持多人读读,读写。
- 不能自由修改,删除schema
阶段三:湖仓一体
优势:
- 结合了数据湖和数据仓库的优势
- 将数据仓库的对于数据严格管理实现到了低成本的分布式存储上
主要特点:
- Transaction ACID
- Schema管理
- 存储计算分离
- 动支持多种计算引擎和文件格式
2.核心技术##
Time travel
- 每一次写入操作,创建一个新的json文件,以递增版本号命名,记录本次新增/删除的文件。
- 每当产生N个json,做一次聚合,记录完整的分区文件信息
- 用checkpoint记录上次做聚合的版本号
Transaction ACID
Schema Evolution
重要:
- 用户并不直接读取parquet本身,而是通过数据湖接口读取。
- 数据湖内部会读取应该读的parquet,并在schema上做进一步处理。
3.各有所长
iceberg工作重点
用户体验:
- Schema evolution
- Hidden partition
- Time Travel
- Version Rollback
性能
- 快速file plan
- 更多的filter方式
可靠性
- 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等优化的实现未开源
三大数据湖支持场景: