SlideShare a Scribd company logo
阿里云基于HUDI构建Lakehouse技术探索
王烨(萌豆)
阿里云-数据库-OLAP 高级技术专家
2021/08/28
个人介绍
• 王烨(花名:萌⾖)
• ⽬前:阿⾥云数据库OLAP团队
• 之前:负责数据库、消息、服务等中间件
• 12+年的⾏业⽼兵
“上云就上阿⾥云”
邮箱:ye.wangy@alibaba-inc.co
m

微信:benbenlovelinlin
数据湖与Lakehouse
客户实践
未来展望
阿⾥云Lakehouse技术探索
数据湖与Lakehouse
• 数据的爆炸式增长
• 分析挑战与客户痛点
• Lakehouse的作用
• 围绕HUDI构建Lakehouse
数据的爆炸式增长,蕴含巨大的数据价值
数据规模爆炸性增长
40ZB
2020年全球数据规模
生产/处理实时化 生产/处理智能化 数据加速上云
30%
2025年实时数据占比
80%
非结构化数据占比
49%
2025年数据存储云上规模
430%
2025年 vs 2020年全球数据规模
50%
2022年新业务采用实时分析比例
55%
非结构化数据年增速
75%
2023年数据库云上规模
From 2021阿里云开发者大会,@离哲:《数据库大数据一体化:加速数智化创新》
海量数据下分析面临巨大的挑战
异构数据源连接
基于云原⽣架构
EB级海量数据
差异化数据格式
Serverless+按量付费
差异化客户群
多样化应⽤
全链路安全
客户的声音——海量数据的分析不容易
⾯临的痛点问题,以及需求 优先级
多源头数据统⼀存储管理,需要⾮常简单的融合分析 ⾼
源头元信息不确定或变化⼤,需要⾃动识别和管理;
元信息发现时效性不够;
⾼
全量建仓或直连分析对源库压⼒较⼤,卸载压⼒规避故障 ⾼
建仓延迟⻓,需要T+10m的低延迟⼊湖 ⾼
更新频繁致⼩⽂件多,分析性能差,需要upsert⾃动合并 ⾼
海量数据在事务库或传统数仓中存储成本⾼,低成本归档 中
源库⾏存或⾮分析型格式,分析能⼒弱 中
存储不开放,需要⾃建能⼒,开源可控 中
⾃建⼤数据运维成本⾼,期望产品化的云原⽣⽅案 低
⽆法⾃动化构建索引,加速分析 低
差异化的⼊湖⽅案,运维⼯作较复杂 低
……
T+1 建仓
数据源
OSS
元信息发现
分析 META
云产品投递 ⼈⾁ETL
问题很多,⽅案复杂
DeltaLake与Lakehouse
• 基于WBL+MVCC,在对象存储上实现ACID
• 不同表模式(MOR/COW),Parquet/ORC列存
• 批量INSERT/UPSERT,⽀持近实时写⼊与合并
• Compaction/Clustering等⼤数据⼩⽂件优化
• 快照读、增量读、读优化等读⽅式
• Schema Evolution:元信息持续同步
• Time travel:历史点位读取和回滚
• Caching:对象不可变性+全局唯⼀性
• Data Layout & Indexing:按列聚簇、多维索引等
• ……
《Delta Lake: HighPerformance ACID Table Storage over Cloud Object Stores》
《Lakehouse: A New Generation of Open Platforms that Unify DataWarehousing
and Advanced Analytics》
完整解决客户分析难题
数据湖数据被统⼀访问的范式
Delta Lake Iceberg Hudi
1)论⽂做理论⽀撑;2)核⼼原理相似
Hudi是什么?为什么选择Hudi?
• Hadoop Updates anD Incrementals,低延迟⼊湖
• “万物皆⽇志,流批⼀体”,记录所有操作(data/
meta),事务版本化,状态机控制+异步化执⾏
• 与Lakehouse的领域⽅向不谋⽽合
• 相⽐Delta、Iceberg:
• 较早出来,产品更成熟
• CDC能⼒更适合“数据
库⼊湖”
• Delta社区版不开放
• Iceberg早期能⼒不完整
• ⼤规模线上验证:
• Uber、T3、H3C、腾讯
• 语⾔栈:
• Java
• Spark Runtime
每种格式都在进步,长期能⼒基本对齐!
我们对Lakehouse的理解和实践方向
以开源HUDI列式、多版本格式为基础,将异构数据源增量、低延迟⼊湖,存储在
开放、低成本的OSS数据湖上,并⾃动实现数据布局优化和元信息进化,最终实
现数据统⼀管理,并⽆差别⽀持多种分析计算的整体解决⽅案。
“⼊湖存储,再做分析”已成趋势。
阿里云Lakehouse实践
• 数据库的库、仓、湖一体化
• OLAP的在离线一体化架构
• Lakehouse的基础架构
• 核心能力的建设与完善
阿里云数据库“库、仓、湖一体化”战略
DB
NEWSQL/NOSQL
DataWarehouse
DataLake
结构化、半结构化、非结构化
KV、事实表、文档、实时写
事务、交易、核心元信息
价值密度越来越
高,以元表参与分
析的意义越来越大
数据量越来越大、数据形式越来越
复杂,必须分析才能挖掘数据价值
多维大宽表、联合明细表、指标表
清洗、回流,在线、实
时、高并发查询
低成本大容量存储、备份、
归档,强大的联合分析
打破数据孤岛,数据⼀体化才能让价值⽴体化
操作型数据
业务数据库
⽂档
外部数据
数据集市
Hudi + On OSS
报表
时空
科学预测
在线交互式查询
消息
Lakehouse
⼊湖建仓
数据应⽤
初始数据集
Lakehous
e

增全量ETL
⾼并发多维查询
⽤户上传
分析师
机器学习 & 算法
原始云服务和上传数据 数据清洗、沉淀、聚合 数据计算与分析 数据应⽤
OLAP分层数仓体系中Lakehouse的定位
⾳频数据
⽂件型数据
KV数据
视频数据
⽇志数据
聚合数据集
实时仓库
云
服务
ODS/CDM层 CDM/ADS层
Lakehous
e

ETL
OLAP统⼀
调度
OLAP统
⼀元信息
“贴源层”能⼒是Lakehouse的关键定位
Lakehouse核心领域设计(与K8s概念对比)
“K8s/DevOps” “Lakehouse”
Cluster Dataset
StatefulSet Deployment …
Dataset
Pod Pod …
CronJob
Dump Increment Clustering
Ingestion Optimisation Management
…
Cluster …
…
Indexing Compaction Clean Tiering
Statistics
Paradigm
范式/⽅案层
Instance
实例层
管理Workload
Workload
⼯作负载编排层
管理/关联/调度Job
Pod/Job
原⼦执⾏层
简单且独⽴语义
数据管理员操作这两层
公司决策者关注
系统关注
Spark Job
Docker Container
以Dataset为核⼼,
构建⼀系列写⼊、
存储、分析等能⼒
存算分离,写、存、读完全弹性的整体架构
MySql
Lindorm
Schema
……
……
DeltaLog(MVCC)
Safepoint
Meta
FileGroup
FileGroup.parquet
FileGroup.log
Change.log.1
Change.log.n
Table
OSS / Lindorm HDFS
Compaction
Streaming
Dump
Data layout
Optimization
Serverless Spark Serverless Presto
配置管理
监控报警
数据质量管理
⽣命周期管理
任务调度
弹性计算分析层
写⼊层 存储层(Hudi)+元信息层 管控层
Kafka
数据源
……
Table
Schema
ETL
DLA
元信息
Hudi Hudi
On DLA 弹性Spark
……
On OSS/HDFS(弹性扩缩容) On K8s弹性伸缩
Serverless Spark为计算基础,作业级弹性;OSS/LDFS为存储基础,低成本、⽆限容量、⾼吞吐、⾼可靠
基于VPC安全隔离的分层网络与数据通路
内部公共服务
⽤户VPC/公⽹
共享区
⽤户VPC
多个⽤户数据区
192段或172段
或10段
规划多个独享计算区
172段或10段或192段
POP
Lakehouse独
享安全计算
Lakehouse 内部调度管控
经典⽹络
Console
内
部⽹关
SDK
Lakehouse 接⼊服务
⽤户访问层
云服务接⼊层
接⼊/管控/共享层
隔离独享计算层
服务转发层
Lakehouse VPC
反向访问层
⽤户数据层
相同⽹段规避
Lakehouse VPC
ENI
弹
性⽹卡
⽹络直连
⽀持⽤户多种⽹络打通
规避VPC⽹络冲突
其他云服务VPC/公⽹
SDK
K8s云
服务
调
度
运
⾏
元
信
息
交
互
不同⽤户间数据隔离
差异化负载的自动分离调度、按需弹性
⽣命周期
[{ "id":1,
"type": "jdbc"
"schedule": “one_time” },
{ “id":2,
"schedule":"Long_time",
“after":1 },
{ “id":3,
“schedule”:”cron”,
“at”: “0 1 * * * *”}]
API Server &
Scheduler
DB
单次全量作业 常驻流式作业
DTS
定时异步作业
K8s Pod(Spark Job)
触发异步作业
Spark⽹关
Ka
fk
a
MQ
K8s
创建Spark Job的Pod
拉起
运⾏时作业反馈
数据
数据&元信息
源头
存储
DB⼊湖 Kafka⼊湖 ⽂件布局优化
配置湖仓作业
提交作业和编排模板
按编排模板,
拉起同步Job
根据反馈+编排,
拉起异步Job
自动拆分差异化负载,弹性更容易
……
控制台
DSL编排,组合灵活原子作业
Meta
APP
Cloud
Service
OpenAPI ……
提交作业和编排模板
DSL设计,K8s是榜样
复杂问题简单化
KMS安全加密实例型账密信息,服务型STS授权访问
API Server
KMS
配置湖仓作业
Meta
Spark Job STS
敏感信
息加密
密⽂解密
Spark⽹关
密⽂
密⽂
安全隔
离环境
密⽂存储
作业调度,
密⽂传递
⽤ 户
实例
账密访问
云
服务
STS访问 鉴权
申请STS
实例型数据,KMS安全加密账密,对平台透明
服务型数据,基于STS三⽅鉴权,对平台透明
数据读写可靠隔离,防止多用户、多程序间误篡改
Lakehouse数据空间
⼊湖作业1 ⼊湖作业2
同VPC
其他程序 其他程序
⽤户其
他云服务
API Server
配置湖仓和⼊湖作业
表1数据
表1锁保护
创建OSS Bucket
Policy,内置权限
VPC和UA等权限控制
表2锁保护
表2数据
活跃锁列表
下发访问权限
带权限读写 带权限读写
⽆该表写⼊锁 抢表写锁并注册
删除作业
表锁未释放删除失败
Bucket Policy读写权限控制
删除数据
探测表锁占⽤
没有写权限,拒绝
Lakehouse VPC
用户VPC
授权策略允
许只读数据
管理表锁
表锁,防⼊湖程序误操作
授权策略,防不同⽤户、
不同程序间的误操作
其他⾮Lakehouse程序
Lakehouse
转换
读取
数据源
以”行”为核心的入湖、存储、分析,统一数据和元信息模型
。。。。。。
tb1 I pk1 pk2 c1 c2 c3 c4 …… …… c_n
tb1 D pk1 pk2 c1 c2 c3 c4 …… …… c_n+m
tb2 U pk1 pk2 c1 c2 c3 c4 …… c_n-m
数据读取
映射成行
不同的行有可变的列,但需要有必要的字段
来源描述 变更描述
Domain
过滤
忽略
删除
主键
⽣成
版本
⽣成
多级分
区⽣成
Reader
Reader
Reader
类型
转换
时区
转换
编码
转换
…
写⼊
HUDI
Payload封装
格式转换&⽂
件⽣成
HUDI协议
化变更
分区⽣成&⽂
件上传
元信息和分
区变更
路径:oss://…/${dataset}/${db}/${table}/…/
${partKey}=${partVal}/…/${files}
oss://…/ds1/db1/tb1/1.parq
oss://…/ds1/db1/tb1/2.parq
oss://…/ds2/db1/tb1/y=2021/1.parq
oss://…/ds2/db1/tb3/y=2022/2.parq
oss://…/ds3/db1/tb1/y=2022/m=02/2.parq
oss://…/ds3/db2/tb1/y=2022/m=01/2.parq
……
OSS存储
…
O
ff
set
管理
DB Table Partitions
ds1_db1 tb1
ds2_db1 tb1 y=2021
ds2_db1 tb3 y=2022
ds3_db1 tb1 y=2022/m=02
ds3_db2 tb1 y=2022/m=01
Meta
SQL
Spark
HDFS/HMS
AI
SDK
……
DB入湖,全量与增量位点自动衔接
全量任务
增量任务
Lakehouse
Scheduler
主库
从库 离线库 ……
从库
OSS
/ds/db/table/.lakehouse/offsets
/ds/db/table/.lakehouse/workload/jobs/1.dump
/ds/db/table/.lakehouse/workload/jobs/2.increment
/ds/db/table/1.part
/ds/db/table/2.part
……
管
控服务
3)获取从库
(若需要)延
迟信息以及系
统对时预留
1)获取实例信息
2)调度全量任务
4)写入合理的
watermark,确保覆
盖全量过程中的增量
5)全量dump
6)写入全量数据
7)全量完成,调度增量任务
8)读取watermark
10)消费binlog
11)数据合并写
入,确保幂等
9)设置
watermark,
回退位点
⽀持从库、离线库、只读节
点与端点,规避线上故障
增量位点计算,可靠性确保
前提下,尽快追上新数据
Watermark维护在OSS中,
⽀持表级反复重试消费
执行时间
位点记录
全量
开始
全量
结束
从库
延迟
系统对
时风险
记录位点
增量
开始
读取位点
增量
进行
中
增量
进行
中
增量
恢复
记录位点
记录位点
读取位点
Lakehouse
Kafka/SLS/Lindorm入湖,消息或类消息形式
Ka
f
ka
Schema
推断
OSS
文本/二进制
Spark
Row
嵌套打平、
格式转换
其他转换
逻辑
Hudi
Payload
SLS
增量
推断策略 打平策略 其他策略
OSS
历史全量
shard/partition自动扩
缩容感知与offset协调
二进制
HFile
HLog
Lindorm增全量统一格式
LTS
文本/二进制
Meta
元信息维护
Schema推断、JSON打平、小文件合并、历史全量导入、SchemaEvolution
⽂件写⼊、Schema
合并、⼩⽂件合并
Reader
场景简洁明确,但流量和吞吐很粗暴
灵活的数据格式,带来处理的复杂性
客户最佳实践
• 跨境电商
• 游戏行业
跨境电商——DB入湖,构建统一的湖仓平台
• 痛点:
• 统⼀离线数据平台,融合PolarDB
和MongoDB,算法、ETL、Ad hoc
⼀套平台
• 在离线架构分离,不影响线上
• 挑战:
• 20+个库、3000+张表,各种case
• 灵活⼜复杂的规则定义
游戏客户——Kafka日志近实时分析
• 痛点:
• ⾃建Kafka⼊Hbase,价格贵且⽆全量分析能⼒
• ⾃建Kafka⼊湖架构复杂,链路⻓且维护麻烦
• OSS⼩⽂件太多,分析性能差
• 分区规则复杂,需要⾃定义和映射
• 挑战:
• 读写都需要控制延迟
• 100+的链路配置合并
• 历史数据bulk load
• ⽀持不定期补数据能⼒
• 优化:
• Clustering优化,扫描量是1/20,性能提升4+倍
未来展望
• 更丰富的入湖数据源
• 更可靠、低成本湖存储
• 更强的可分析能力
• 更丰富的场景化应用
更丰富的入湖数据源——其他云产品和数据覆盖
DBMS
PostgreSQL
SQL Server
ORACLE
KV / Document
HBase
MongoDB
TableStore
OSS / DFS raw files
On-Premise Service
Open Upload API
…….
MQ
ONS
MNS
RocketMQ
PolarX
……
Cassandra
……
RabbitMQ
……
多种源头、多种环境,真正实现“贴源”能⼒
Lakehouse
更低成本、更可靠的存储——数据生命周期管理
标准存储,0.12元/GB/月
低频存储,0.08元/GB/月
归档存储,0.03元/GB/月
无用数据,自动删除,不直接可见
存储接口屏蔽差异化,内部自动解冻
SQL/Spark
Lakehouse⽣命周期管理
老的、无效的数据
超过业务逻辑有效期 最近热数据,默认存储
低频访问
偶尔/备案访问
超期自动
逻辑删除
访问频率统计
按需定义有效期
根据成本需求、访问热度,动态计
算分界线,自适应调整存储
OSS上过期,物理删除,不可见
超过OSS物理有效期
OSS
新的、高频访问的数据
超期自动
物理删除
主动删除
放入回收站
主动删除
确保数据可靠性和可恢复性,尽可能降低成本且体验⽆缝
Lakehouse
更强的分析能力——异步Clustering与Compaction
分析 分析 分析 分析
Ingestion
分析
Timeline
10M
单表
分析
10M
单表
分析
10M
单表
分析
10M
单表
10M
10M
10M
10M 10M
10M
Analytics
Ingestion 10M
单表
10M
单表
100M
单表
200M
单表
10M
Clustering
分析
100M
单表
异步调度执⾏
Clustering
性能⾮线性退化
APPEND-ONLY
⼩⽂件写,性能⾼
Analytics
Ingestion
性能线性退化
分析
10M 分析
10M 分析
10M 分析
10M
UPSERT
写⼩⽂件Log,性能⾼
单表 单表 单表 单表
APPEND-ONLY
Ingestion 分析
10M 分析
10M 分析 分析
25M
UPSERT
单表 单表 单表 单表
分析
20M
单表
20M
Compaction Compaction
10M
10M
Async
Scheduler
采集表信息
写延迟保障
异步可弹性
读性能保障
更丰富的场景化应用——扩大ODS层能力建设
全量 day=1 day=2 day=3
源
1=1 day=1
day=2 day=3
T+1逻辑增量建仓
DB1
tbl1
DB2
tbl2 tbl1 tbl2
DB
tbl
Merge
分库分表合并建仓
……
OSS
tbl1
OSS
tbl1 tbl2
SQL Join/Union
A Region (Unit) B Region (Center)
OSS
tbl3
C Region (Unit)
tbl3
跨域数据融合建仓
OSS跨域复制 OSS跨域复制
meta
Realtime
Ingestion
OSS
Incremental
ETL
Incremental
ETL
OSS
OSS
……
Multi-Stage Incremental ETL
……
场景化内置,让客户构建数仓更简单
感谢聆听! 个人微信(技术交流)
数据库开发者社区(业务交流)

More Related Content

PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
HUAWEI Lakehouse architecture description slide
PDF
2024 State of Marketing Report – by Hubspot
PDF
Everything You Need To Know About ChatGPT
PDF
Product Design Trends in 2024 | Teenage Engineerings
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 Trend Updates: What Really Works In SEO & Content Marketing
HUAWEI Lakehouse architecture description slide
2024 State of Marketing Report – by Hubspot
Everything You Need To Know About ChatGPT
Product Design Trends in 2024 | Teenage Engineerings
Ad

Ali cloud Lakehouse architecture description slide