数据湖三剑客Delt Lake、Hudi、Iceberg详解|青训营笔记

186 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第2天,学习内容为《数据湖三剑客Delt Lake、Hudi、Iceberg详解》,内容包括 数据湖基本概念和发展历史、数据湖核心技术、数据湖三剑客特点。

数据湖基本概念和发展历史

Hadoop

  1. 数据湖最开始的概念---分布式存储HDFS
  2. 好处:同一公司/组织可以使用共享存储;数据访问方便,灵活性高
  3. 坏处:没有记录文件的schema、难以得知数据集包含哪些文件,是通过什么样的分区组织的、如果多个程序都在修改这个数据集,其他程序难以配合做修改

Hive

  1. 数据湖的演进---Hive Metastore(元数据存入mysql中)
  2. 对数据湖中的数据集进行集中定义
  3. 问题:
  1. 静态表------读取方便,有写操作,不同用户读取的文件可能不同(读写冲突、写写冲突)
  2. 对于schema数据,只能在尾列后面增加列而不能删除或修改列------------重写一张表(支持更多样的schema变更)

湖仓一体

  1. 数据仓库
  1. 数据仓库将数据从数据源提取和转换,加载到目的地
  2. 数据仓库存储+计算不分离
  3. 数据仓库严格控制写入数据的schema
  1. 湖仓一体
  1. 结合数据湖和数据仓库的优势
  2. 将数据仓库中对于数据的严格管理直接实现到了低成本的分布式存储上
  3. 特点:ACID、Schema管理、存储计算分离、支持多种计算引擎和文件格式

数据湖核心技术

Time Travel

更新数据,新数据和旧数据同时跑一下训练

  1. 每次写入都生成一个新的元数据文件,记录变更(以递增版本号命名,记录本次新增/删除的文件)
  2. 分区数据在Update时,不删除旧数据,保证新旧共存
  3. 元数据中存储具体的文件路径,而不仅仅是分区文件夹
  4. 每当产生N个json,做一次聚合,记录完整的分区文件信息
  5. 用checkpoint记录上次做聚合的版本号

数据湖三剑客特点

Iceberg

  1. 工作重点

image.png

image.png

  1. Hidden Partition
  1. 传统的分区:数据中包含date列,按照date分区,如果希望按照hour分区,需要新增hour列
  2. 数据中包含timestamp列,设置好partition transform方式,iceberg会转换为对应的分区
  3. 按需进行partition evolution

image.png

Delta Lake

  1. 工作重点

image.png

Hudi

  1. 工作重点

image.png

Delta Lake

  1. 工作重点

image.png

技术选型

image.png