数据湖三剑客详解 | 青训营笔记

150 阅读3分钟

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

发展历史

Hadoop

使用目录来区分不同的数据集

index.jpg   好处

  • 同一组织可以使用共享存储

  • 数据访问方便、灵活性高。

  坏处

  • 不记录文件的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 等优化的实现未开源

总结场景

数据湖的对比

image.png

总结

在数据分析领域,湖仓一体是未来。它可以更好地应对AI时代数据分析的需求,在存储形态、计算引擎、数据处理和分析、开放性以及面向AI的演进等方面,要领先于过去的分析型数据库。数据湖以低存储成本提供了ACID Transcation、Schema evolution、 Time Travel等功能。