这是我参与「第四届青训营 」笔记创作活动的第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等优化的实现未开源