数据湖三剑客 :Delta Lake、Hudi、Icebery详解 |青训营笔记

130 阅读3分钟

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

下面我们来开启数据流部分。Parquet-高性能列式存储:过滤下推到存储侧,更好地压缩性能文件格式列存储,类似于CSV。背景介绍【大数据专场 学习资料四】第四届字节跳动青训营 - 掘金 (juejin.cn)

一、发展历史

1、数据湖发展阶段1-Hadoop

屏幕截图 2022-08-07 145209.jpg

  • HDFS存储不是直接以文件夹形式存储在磁盘上,而是存在一个我们看不见的地方,那个地方我们默认空间无限大,并且方便与其他用户共享。

数据分开存储像图中抖音和头条数据一样。

  • 坏处:数据沼泽

1、没有记录文件的Schema(包括列名、列类型),经常使用Schema on Query的方式用户自己知道schema,这是不方便的,因为我们得提前掌握一些信息

2、难以得知数据集包含了哪些文件,是通过什么样的分区组织的。

3、如果多个程序都在修改这个数据集(修改数据、表结构),其他程序难以配合做修改。

2、数据湖发展阶段2-Hive

为了解决Hadoop坏处,Hive应运而生。

屏幕截图 2022-08-07 150100.jpg

  • Metastore将信息集中存储到MySQL中。

屏幕截图 2022-08-07 150310.jpg

3、数据湖发展阶段3-湖仓一体LakeHouse

屏幕截图 2022-08-07 150444.jpg

  • 数据湖主要是存储数据,数据仓库随时用随时存 它是结构化的。

屏幕截图 2022-08-07 150637.jpg

屏幕截图 2022-08-07 150716.jpg

4、业界三大数据湖

1、Hudi

屏幕截图 2022-08-07 150809.jpg 2、Icebery

屏幕截图 2022-08-07 150841.jpg

3、Delta Lake

屏幕截图 2022-08-07 150926.jpg

5、关于数据湖

  • 相关概念比较新,且一直处在演进中。面对技术我们该用发展的眼光来对待。有些设施现在没有不代表以后没有。
  • 一开始是HDFS、裸PB、TXT日志等,叫数据湖(管不动叫数据沼泽)。后来出现了上面的三种,数据湖概念就基本等于这些产品了。

二、核心技术

我们设计一个简单的数据湖。

1、文件结构

屏幕截图 2022-08-07 151421.jpg 屏幕截图 2022-08-07 151514.jpg

2、Time Travel

屏幕截图 2022-08-07 151606.jpg 要求:

1、每次写入都生成一个新的元数据文件,记录变更。

2、分区数据在Update时,不要删除旧数据,保证新旧数据共存。

3、元数据中存储具体的文件路径,而不仅仅是区分文件夹。

屏幕截图 2022-08-07 152051.jpg 右面代码是Contains聚合代码。

3、Transaction

屏幕截图 2022-08-07 152243.jpg

屏幕截图 2022-08-07 152308.jpg

屏幕截图 2022-08-07 152330.jpg

4、原子性

屏幕截图 2022-08-07 152429.jpg Commit:重命名成功

5、事务隔离

屏幕截图 2022-08-07 152541.jpg

6、Schema Evolution 进化

屏幕截图 2022-08-07 152651.jpg

屏幕截图 2022-08-07 152736.jpg

屏幕截图 2022-08-07 152813.jpg 4问题答案,删完又加回来,因为ID是唯一的。

drop可读所有,也可选读几列,这是列存储特点。

三、各有所长

1、Icebery 工作重点

屏幕截图 2022-08-07 153044.jpg

filter读某分区数据,快速裁剪定位到某文件上。 (1)Well——designed Matadata Layer

屏幕截图 2022-08-07 153542.jpg (2)Data File Filter

屏幕截图 2022-08-07 153626.jpg

  • Matadata layer是jSON文件
  • Date layer是Partition文件 (3)Hidden Partition

屏幕截图 2022-08-07 153826.jpg (4)Hudi

屏幕截图 2022-08-07 153958.jpg (5)Timeline Service & Update & Incremental

屏幕截图 2022-08-07 154118.jpg (6)Copy on write

屏幕截图 2022-08-07 154201.jpg 把一万列都读出来,找到要找的那列,内存中要把那列更新好,然后再把一万行写会取顺便改那行。 (7)Merge On Read

屏幕截图 2022-08-07 154243.jpg 只读那一行,然后写道一个小文件里,到时候和那个一万行元数据的表一起读这两个文件。

2、Delta Lake工作重点

屏幕截图 2022-08-07 154743.jpg (1)流批一体

屏幕截图 2022-08-07 154823.jpg

四、总结场景

1、三个数据湖异同

屏幕截图 2022-08-07 154925.jpg

2、数据湖热度

屏幕截图 2022-08-07 154948.jpg

3、技术选型

屏幕截图 2022-08-07 155055.jpg

4、字节场景案例-Feature Store

屏幕截图 2022-08-07 155148.jpg

屏幕截图 2022-08-07 155227.jpg

屏幕截图 2022-08-07 155307.jpg