小米数据湖一体化智能
治理实践
DataLake Governance
多湖表格式治理挑战01
一体化智能治理实践02
总结与展望03
目 录
C O N T E N T
S
多湖表格式治理挑战
现状
• 小米数据湖平台集成了 Iceberg、Paimon、Fileset 等多种数据湖格式,以满足多样化的用数需
求。
• 目前已管理 10万+ 表格、百PB 数据,日均产生 40万+ 优化任务
离线场景
实时场景
AI 场
景
Filese
t
P
aimon
Iceber
g
10w + 表
格
百 PB 数
据
日均40w + 优化任
务
挑战
• 随着数据规模和湖表格式的增加,我们的治理体系也面临了诸多挑战
元数据访问接口不统一,随着湖表格式增加,访问将越发复杂
治理需求更加多样化,对智能识别能力提出了新的挑战
治理链路不断扩展,运维监控日益复杂,亟需统一的调度执行体系
一体化智能治理实践
治理体系全貌
• DataLake Governance 通过 Gravitino 访问湖表元数据,针对所有表智能产生优化任务,再
交由具 体的组件执行
Iceber
g
P
aimon
Filese
t
...
Graviti
no
DataLake
Governance
Spark
Job
Map
Reduce
HDF
S
...
湖表格式
元数据访问
任务产生调度
任务执行
Gravitino: 统一元数据访问接口
• 元数据管理组件多样,需开发和维护各种的访问接口。随着湖表格式增多,系统变得臃肿。
• 依赖多个外部服务状态,系统稳定性降低,运维压力增加。
Iceber
g
Pai
mon
Filese
t
H
MS
HDF
S
RDB
MS
Gravitino: 统一元数据访问接口
• Apache Gravitino 一种是高性
能
的元数据湖。
统一的元数据访问 API √
统一的访问控制 √
屏蔽了底层存储的差异 √
智能治理:提供多样化治理能力
Iceberg 治理需求
• Iceberg 有 Snapshot、Manifest、Data File 等不同层级
的文件
• 对于每一层级,都需要进行治理,使得表达到健康的状态
Snapsh
ot
过期快照清理
Manifest
s
Rewrite Manifests
Data
File
小文件合并,Z-Order 聚类
…
Orphan Clean
智能治理:提供多样化治理能力
Iceberg 治理需求 - 文件治
理
小文件合并 Z-Order聚类
目的 减少 HDFS 压力、提高MOR 表格的查询效率 提高表格的查询效率
资源要求 低 (简单重写,不需要进行排序) 高 (需要排序后重写)
触发条件 文件数量超过阈值后触发 基于规则触发
适用对象 小文件较多的表或者MOR 的表格 基于查询模式筛选的表
• Z-Order 聚类相较于直接合并文件,需要消耗更多的资源,因此我们设置了一定的规则进行触
发
智能治理:提供多样化治理能力
Iceberg 治理需求 - Z-Order 聚
类
收集表查询次数
Sum
Query1
Query2
...
QueryN
Field1 > X1
Field2 = X2
Field3 <= X3
...
Tab
le1
收集每个字段使用次数
C[N]
判断 Sum > Threshold
(热点表)
选择TopX(C)
(热点字段)
Tab
leN
...
• 根据用户查询模式,筛
选出热点表和热点字段
智能治理:提供多样化治理能力
Partition 1
Pk1=20231218,Pk2=...
Partition 2
Pk1=20231217,Pk2=...
Row Count
NDV
收集数据特征
ND
VRow
Count
>Threshold ?
Iceberg 治理需求 - Z-Order 聚类
• 计算出分区Row Count 和热点字段的NDV,筛选出NDV / Row Count 大于阈值的字段,以其
为 key
对表进行 Z-Order 聚类
Table
智能治理:提供多样化治理能力
Iceberg 治理需求 – 分区信息展示
• 在用户使用 Iceberg 过程中,经常有查看分区的需求,需要聚合元数据计算
• 之前的架构中,我们在元数据服务进行分区计算,压力巨大
• 我们在 Iceberg 源码中添加了分区计算的 Procedure,由治理服务触发分区计算,并将结果写入 Iceberg
metadata, 元数据服务可直接查看分区结果返回,不再承担计算任务
Partition
Statistic
File
metadat
a
T
able
快照更新
DataLake
Governanc
e
S
park
前端
分区计算
X
元数据服务
Call
ProcedureIceber
g
API
智能治理:提供多样化治理能力
• 热数据:近期访问或写入的数据,对读写速度要求较高,存储在 HDFS 上
• 冷数据:近期访问少或者无访问的数据,我们的治理服务异步搬迁到公有云上,降低成本
• 过期数据:超过一定日期的分区数据,自动进行清理
Iceberg 治理需求 - 数据生命理
• 根据数据的访问时间和用户的设定参数将数据进行分层
热数据 冷数据 过期数据
智能治理:提供多样化治理能力
Colum
n--------
- dat
eprice
xx
Table
Partitions
规则校验
用户指定
生命 校
验字段
DataLake
Governanc
e
上云
转储
数据
过期
Sp
ark
Call
Procedure
Delete 语
句
Date=2025032
6
Iceberg 治理需求 – 数据生命理
• 用户指定生命校验字段 [ 仅支持分区字段 ]
• 获取分区信息后通过规则校验,对冷数据采取上云转储的任务,对过期数据执行 Delete 语句删除数
据
智能治理:提供多样化治理能力
Paimon 治理需求
• Paimon 会自动清理过期快照,自动进paction,因此在实践中我们暂时不将这部分
内容纳入治理服务
• 我们在实践中将 孤儿文件清理、过期数据清理 等功能加入了治理服务
• 和 Iceberg 类似,Paimon 同样有数据降本需求,我们正在逐步完善Paimon 异步转储上
云 能力
智能治理:提供多样化治理能力
Fileset 治理需
求
• Fileset 是Gravitino 中为管理非结构化数据而设立的资源格式
• Fileset 提供了 AI 和大数据场景 下非表格数据的统一读写客户端、生命理、资产管理和
审计等能力。
• 对于 Fileset, 目前我们支持了过期数据的清理和冷数据上云来减少成本
统一调度体系:优化资源与运维成本
• 如果每个湖表格式单独构建治理链路会带来较大的服务部署和监控的成本
(部署服务数量 = 集群数 * 湖表种类数 * 单链路服务数量)
• 一个统一的任务调度体系是必要的,下面以任务的 产生 – 调度 – 执行 三个层次来介绍我们
的 调度体系
Iceberg 优化服
务
Paimon 优化服
务
Fileset 优化服
务
集群1
Iceberg 优化服
务
集群2 …
统一调度与监控:优化资源与运维成本
任务产生
• 在实践中,我们将任务分成 任务 和 触发式任务
• 任务:产生的优化任务,适用于对及时性要求高(文件合并任务)或者判断逻辑简单
(快照清理)的任务
• 触发式任务:可以接受外部投递的消息,产生优化任务并调度,适用于判定规则复杂(Z-Order 聚
类 任务)或者特定条件才触发的任务
统一调度与监控:优化资源与运维成本
Table 1
Table 2
Table 3
文件合并
快照清理
孤儿文件清理
…
务
• 在早期的版本中,我们使用定时线程处理一次性处理所有表
• 随着表数量的增加,一轮处理时间带来的延迟已经会造成表优化不及时的情况出现,但是为每个表建立定时线程又
不现实
第 N 次执行 第 N + 1 次执
行
一轮表处理时间 定时间隔
第 N 次执行 第 N + 1 次执
行
一轮表处理时间 定时间隔
规模增大
统一调度与监控:优化资源与运维成本
务
• 折衷方案 – 分桶模型
• 将一定数量的表分别映射到不
同功能类型的桶中,利用
Quartz构建每个桶的定时任务
• 分散单个任务需要扫描的表数
量,避免单次扫描过多的表引
入较大处理延迟。
统一调度与监控:优化资源与运维成本
触发式任务
Watcher
务 触发式任务
统一调度
Z-Order 聚类触
发
数据转储触发
Manifest 重写触
发
• 复杂计算外置,比如 Z-Order 聚类的判定,涉及
到用户查询模式的收集等一系列链路,将该部分独
立出来更容
• 部分优化任务只在表快照更新时才触发,触发式任
务减少了轮询带来的资源损耗
• 更加灵活的拓展性,可以快速增加新的优化任务
统一调度与监控:优化资源与运维成本
Iceberg / Paimon
过期数据清理
Iceberg / Paimon
孤儿文件清理
Iceberg 快照清理
...
Spark Job
Fileset 冷数据上云
...
Map Reduce
Fileset 过期数据清理
...
HDFS Client
任务调度
• 调度层将任务分发到执行组件执行
• 需要与多种组件交互,并防止各组件之间因交互,执行时间的差异而互相阻塞
统一调度与监控:优化资源与运维成本
Created Submmiting Running Finished
Iceber
g
P
aimon
Filese
t
...
Process
or
Spark Yarn HDFS
Iceberg
Task
Paimon
Task
Fileset Task
Cha
nger
基于状态机的任务调度
• 将 Task 分为 4 种状态,Changer 根据不同状态 / 不同湖表格式的 Task,选择不同的处理逻辑并切换
状态
统一调度与监控:优化资源与运维成本
• 在具体的任务执行阶段,我们也做了针对性的优化,
整体上增加了吞吐量,并减少 Core 资源需求
• 优化 Iceberg / Paimon 的源码,使优化任务支持两种模式:
Local : 即只在 Driver 上运行,提升小任务吞吐量
Distributed : 利用分布式计算能力提升计算速度,防止
单 点 OOM
Driv
er
Driv
er
Execut
or
Execut
or
任务执行优化
Small
T
able
Smal
l
Tab
leSmal
l
Tab
le
Larg
e
Tab
le
任务执行时间:秒级/毫秒级
任务执行时间:分钟级
总结与展望
总结
• 小米数据湖平台集成了 Iceberg、Paimon、Fileset 等多种数据湖格式,以满足多样化的用数需
求
• 这同时也带来了治理上的挑战,为降低运维成本并提升治理效率,我们构建了统一的智能治理体系
• 目前已稳定支撑 10万+ 表格、百PB 数据的治理。
展望
AI 数
据
管理
元数据
湖建设
持续推动治理体系升级,支撑更庞大的资产规模,更
多样的优化目标
引入更多湖表结构支撑AI 数据管理,统一纳入当前治理体系
继续推动Gravitino 元数据架构的统
一
治理体
系升级
看
感用心观看