这是我参与「第四届青训营 」笔记创作活动的第8天
关于数据湖
- 数据相关慨念比较新,一直处在演进当中
- 一开始是HDFS,裸pb、txt日志等等,叫数据湖 (管不动了就叫数据沼泽)
- 后来出现了了Iceberg、Hudi、Delta Lake了,数据湖概念就基本等于这些产品了
- 也更贴近于Lakehouse的慨念
Transactio
ACID,是指据库在写入或更新资斜的过程中,为保证事务是正确可靠的, 所必须具备的四个特性。
- 以A给B转账10元为例:
- Atomicity::原子性 要么A-10B+10,要么都不变
- Consistency:一致性 不可以A-10 B+5
- Isolation:事务隔离一A和C同时给B转10,B最终结果应是+20
- Durability::持久性— 转账服务器重启,结果不变
Iceberg工作重点
- 用户体验
- Schema evolution
- Partition evolution
- Hidden partition
- Time Travel
- Version Rollback
- 性能
- 快速file plan
- 更多的filter方式
- 可靠性
- ACID Transaction
- 完全开源, 由Apache!孵化开发
Hidden Partition
- 传统的分区方式:
- 数据中包含了date列,则按照date分区;如果希望按照hour分区,则需要新增hour列
- Iceberg的分区方式:
- D数据中包含timestamp列,设置好partition transform方式
- D设置为date时,iceberg帮你转化为date分区
- 设置为hour时,iceberg帮你阵转化为hour分区
- Iceberg记录了这层转化关系,并且按你的需要进行partition evolution
- D数据中包含timestamp列,设置好partition transform方式
Hudi
即 Hadoop Upsert Delete and Incrementa
- Hudi工作重点:
- 1.Timeline service:Hudi管理transaction的方式
- 2.Hudi Table Type:Copy on Write Merge on Read
- 3.高效的Upserts:update or insert
- 4.索引表:快速定位一条数据的位置
-
5.Streaming Ingestion Service -
6.完全开源,由Apache孵化
Delta Lake工作重点
- 1.ACID Transaction
- 2.Schema校验(不是evolutio n)
- 3.流批一体
- 4.Time Travel
- 5.Upsert/Delete
- 6.Z-Order优化
- 7.只开源了部分,由Databricks自己主导开发,Z-order等优化的实现未开源
技术选型
短期来看:每个项目都有一些属于自己的功能:
- 如果强需求Upserts,也许Hudi是最好的选择
- 如果希望可扩展性强,那么设计优良的Iceberg是最好的选择
- 如果希望用上Z-Order等优化,那么掏钱买Databricks的企业版Delta是不二之选
长期来看:数据湖取代Hive,成为HDFS上的表格式标准是必然的,在选择之前问自己四个问题:
-
- 我濡要的feature在哪个据湖上是最稳定的
-
- 哪一个据湖能够用最简单的接入方式(SQL)用上最完善功能
-
- 哪一个据湖有计算引擎测的支持和社区的支持
- 4.哪一个据湖的版本管理做的最好,最鲁棒