基于Hudi的湖仓一体化解决方案
数据湖是⼀个以原始格式(通常是对象块或⽂件)存储数据的系统或存储库。数据湖通常是所 有企业数据的单⼀存储。⽤于报告、可视化、⾼级分析和机器学习等任务。数据湖可以包括来⾃关系数据库的结构 化数据(⾏和列)、半结构化数据(CSV、⽇志、XML、JSON)、⾮结构化数据(电⼦邮件、⽂档、pdf)和⼆进制数据(图 像、⾳频、视频)
- 原始格式:数据不做预处理,保存数据的原始状态
- 单⼀存储:存储库中会汇总多种数据源,是⼀个单⼀库
- ⽤于机器学习:除了 BI 、报表分析,数据湖更适⽤于机器学习
一、概述
1.1. OLTP -> OLAP -> HTAP -> 数据湖
概念 | 场景 | 典型代表 | 主要优缺点 |
---|---|---|---|
数据库 | OLTP | 三大数据库(Oracle、 MySQL、SQLServer) | OLTP支持的非常好, OLAP支持弱 |
数据仓库 | OLAP | Teradata、Greenplum、 Hive+HDFS、ClickHouse、 Kylin | OLAP支持非常好,OLTP 不支持或者支持的弱 |
混合数据库 | HTAP=OLTP+OLAP | Kudu(先OLAP在OLTP)、 TiDB(先OLTP在OLAP) | OLTP+OLAP都支持但都 为支持到极致,折中方案 嘛,毕竟是有所取舍 |
数据湖(现代) | 统一数据存储 | Hudi、Iceberg、 DeltaLake | 除了HTAP的一些场景, 还能能支持各种格式,支 持多种计算引擎 |
1.2. 数据湖的适⽤场景
- ⾮结构化海量数据需要统⼀存储(图像、⾳频等)
- 除了 BI 、报表分析等,机器学习需求⽐较多(BI->AI)
- 实时性需求占主要地位
注意:数据湖对于数仓并不是一个绝对替换关系,是可以搭配使用的
二、Hudi
Apache Hudi 是 Uber 开源的数据湖框架,能在 hadoop 兼容的存储之上存储⼤量数据,同时它 还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进⾏流处理。这两种原语分别是:
- Update/Delete记录:Hudi使⽤细粒度的⽂件/记录级别索引来⽀持Update/Delete记录,同时还提供写操作 的事务保证。查询会处理最后⼀个提交的快照,并基于此输出结果。
- 变更流:Hudi对获取数据变更提供了⼀流的⽀持:可以从给定的时间点获取给定表中已 updated/inserted/deleted的所有记录的增量流,并解锁新的查询姿势(类别)。
2.1. Hudi 特性
- 快速 upsert,可插⼊索引
- 以原⼦的⽅式操作数据并具有回滚能⼒
- 写⼊器之间的快照隔离
- savepoint 用户数据恢复的保存点
- ⾃动管理⽂件⼤⼩,合并⼩⽂件
- ⾏式存储异步压缩+列式存储
- 时间轴数据跟踪血统
2.2. Hudi 架构
2.3. Hudi & Iceberg & DeltaLake
业界流⾏的数据湖框架有三个:
- Hudi
- Iceberg
- DeltaLake

三、传统离线数仓解决方案

四、基于 OLAP 的离线数仓解决方案

五、基于Hudi的离线数仓解决方案

六、基于 Hudi 的实时数仓解决方案
6.1. 传统实时数仓解决方案

6.2. Hudi+实时OLAP引擎
6.3. 纯Hudi,准实时数仓,分钟级
七、基于 Hudi 的湖仓一体化解决方案
数仓一体化:数仓直接构建在数据湖里(可离线、可实时),同时提供实时计算能力
Hudi是一个数据湖,但是不是传统数据湖,所以他对非结构化的数据支持的不好。是一个现代化的数仓一体化框架。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!