1、小米数据湖一体化智能治理实践演讲人:包锴楠 小米-软件研发工程师DataLake Governance多湖表格式治理挑战01一体化智能治理实践02总结与展望03目 录CONTENTS多湖表格式治理挑战现状 小米数据湖平台集成了Iceberg、Paimon、Fileset等多种数据湖格式,以满足多样化的用数需求。目前已管理10万+表格、百PB 数据,日均产生40万+优化任务离线场景实时场景AI 场景FilesetPaimonIceberg10w+表格百 PB 数据日均40w+优化任务挑战 随着数据规模和湖表格式的增加,我们的治理体系也面临了诸多挑战元数据访问接口不统一,随着湖表格式增加,访问将越
2、发复杂治理需求更加多样化,对智能识别能力提出了新的挑战治理链路不断扩展,运维监控日益复杂,亟需统一的调度执行体系一体化智能治理实践治理体系全貌DataLake Governance 通过Gravitino访问湖表元数据,针对所有表智能产生优化任务,再交由具体的组件执行IcebergPaimonFileset.GravitinoDataLake GovernanceSpark JobMap ReduceHDFS.湖表格式元数据访问任务产生调度任务执行Gravitino:统一元数据访问接口元数据管理组件多样,需开发和维护各种的访问接口。随着湖表格式增多,系统变得臃肿。依赖多个外部服务状态,系统稳定
3、性降低,运维压力增加。IcebergPaimonFilesetHMSHDFSRDBMSGravitino:统一元数据访问接口 Apache Gravitino 一种是高性能的元数据湖。统一的元数据访问 API 统一的访问控制屏蔽了底层存储的差异智能治理:提供多样化治理能力Iceberg 治理需求 Iceberg 有Snapshot、Manifest、Data File 等不同层级的文件 对于每一层级,都需要进行治理,使得表达到健康的状态Snapshot过期快照清理ManifestsRewrite ManifestsData File小文件合并,Z-Order 聚类 Orphan Clean智能
4、治理:提供多样化治理能力Iceberg 治理需求-文件治理小文件合并Z-Order聚类目的减少 HDFS 压力、提高 MOR 表格的查询效率提高表格的查询效率资源要求低(简单重写,不需要进行排序)高(需要排序后重写)触发条件文件数量超过阈值后触发基于规则触发适用对象小文件较多的表或者 MOR 的表格基于查询模式筛选的表 Z-Order 聚类相较于直接合并文件,需要消耗更多的资源,因此我们设置了一定的规则进行触发智能治理:提供多样化治理能力Iceberg 治理需求-Z-Order 聚类收集表查询次数SumQuery1Query2.QueryNField1 X1Field2=X2 Field3 T
5、hreshold(热点表)选择TopX(C)(热点字段)TableN.根据用户查询模式,筛选出热点表和热点字段智能治理:提供多样化治理能力Iceberg 治理需求-Z-Order 聚类Partition 1Pk1=20231218,Pk2=.TablePartition 2Pk1=20231217,Pk2=.Row CountNDV收集数据特征NDVRow CountThreshold?计算出分区 Row Count 和 热点字段的 NDV,筛选出 NDV/Row Count 大于阈值的字段,以其为key 对表进行 Z-Order 聚类智能治理:提供多样化治理能力Iceberg 治理需求 分区
6、信息展示 在用户使用 Iceberg 过程中,经常有查看分区的需求,需要聚合元数据计算 之前的架构中,我们在元数据服务进行分区计算,压力巨大 我们在 Iceberg 源码中添加了分区计算的 Procedure,由治理服务触发分区计算,并将结果写入 Iceberg metadata,元数据服务可直接查看分区结果返回,不再承担计算任务metadataPartition Statistic FileTable快照更新DataLakeGovernanceSpark元数据服务前端Call ProcedureIceberg API分区计算X智能治理:提供多样化治理能力Iceberg 治理需求-数据生命周期