这是我参与「第四届青训营」笔记创作活动的第11天。
发展历史
Hadoop
使用目录来区分不同的数据集
好处:
-
同一组织可以使用共享存储
-
数据访问方便、灵活性高。
坏处:
-
不记录文件的scheme(列名、列类型)
-
难得知数据集包含的文件以及分区组织
-
若多个程序都在修改数据集,其他程序难以配合修改。
湖仓一体
-
数据仓库 诞生于1990年,是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,主要用于支持管理决策和信息的全局共享。简单点说,数据仓库就像是一个大型图书馆,里面的数据需要按照规范放好,可以按照类别找到想要的信息。
-
数据湖 是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施。它就像一个大型仓库,可以存储任何形式(包括结构化和非结构化)和任何格式(包括文本、音频、视频和图像)的原始数据,数据湖通常更大,存储成本也更为廉价。但它的问题也很明显,数据湖缺乏结构性,一旦没有被治理好,就会变成数据沼泽。
-
湖仓一体 是一种结合了数据湖和数据仓库优势的新范式,在用于数据湖的低成本存储上,实现与数据仓库中类似的数据结构和数据管理功能。
-
“湖仓一体”并不等同于“数据湖”+“数据仓”
三大数据湖
-
Hudi:
-
Iceberg:
-
Delta Lake
核心技术
数据湖中的ACID:
-
Atomicity: 原子性-本次写入要么对用户可见,要么不可见(需要设计)
-
Consistency: 一致性-输入是什么,落盘的就是什么(由计算引擎保证)
-
Isolation: 事务隔离-正确解决读写冲突和写写冲突(需要设计)
-
Durability: 持久性-落完数据后,即便服务器重启结果不变(由存储引擎保证)
各有所长
Iceberg工作重点
用户体验
-
Schema evolution
-
Partition evolution
-
Hidden partition
-
Time Travel
-
Version Rollback
性能
-
快速file plan
-
更多的filter方式
可靠性:ACID Transaction
完全开源,由Apache孵化开发
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 等优化的实现未开源
总结场景
数据湖的对比
总结
在数据分析领域,湖仓一体是未来。它可以更好地应对AI时代数据分析的需求,在存储形态、计算引擎、数据处理和分析、开放性以及面向AI的演进等方面,要领先于过去的分析型数据库。数据湖以低存储成本提供了ACID Transcation、Schema evolution、 Time Travel等功能。