数据湖是⼀个以原始格式(通常是对象块或⽂件)存储数据的系统或存储库。数据湖通常是所 有企业数据的单⼀存储。⽤于报告、可视化、⾼级分析和机器学习等任务。数据湖可以包括来⾃关系数据库的结构 化数据(⾏和列)、半结构化数据(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 架构

截屏2022-02-16 下午11.10.13

2.3. Hudi & Iceberg & DeltaLake

业界流⾏的数据湖框架有三个:

  • Hudi
  • Iceberg
  • DeltaLake
截屏2022-02-16 下午11.15.34

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

截屏2022-02-16 下午11.16.33

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

截屏2022-02-16 下午11.17.12

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

截屏2022-02-16 下午11.18.07

六、基于 Hudi 的实时数仓解决方案

6.1. 传统实时数仓解决方案

截屏2022-02-16 下午11.20.43

6.2. Hudi+实时OLAP引擎

截屏2022-02-16 下午11.22.03

6.3. 纯Hudi,准实时数仓,分钟级

截屏2022-02-16 下午11.23.04

七、基于 Hudi 的湖仓一体化解决方案

数仓一体化:数仓直接构建在数据湖里(可离线、可实时),同时提供实时计算能力

截屏2022-02-16 下午11.24.45

Hudi是一个数据湖,但是不是传统数据湖,所以他对非结构化的数据支持的不好。是一个现代化的数仓一体化框架。