《3-2 数据湖 Iceberg 在小米的落地及实践.pdf》由会员分享,可在线阅读,更多相关《3-2 数据湖 Iceberg 在小米的落地及实践.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、数据湖ICEBERG在小米的落地与实践小米-李培殿|目录目录CONTENT|01Iceberg 技术简介02Iceberg在小米的应用实践03基于 Iceberg 的流批一体的探索04未来规划Iceberg技术简介01|Iceberg 简介|Apache Iceberg is an open table format for huge analytic datasets.Iceberg adds tables to compute engines including Spark,Trino,PrestoDB,Flink and Hive using a high-performance tab
2、le format that works just like a SQL table.Iceberg 简介|存储与计算分离计算引擎选择更灵活屏蔽底层文件存储细节,对外暴露都是一张Iceberg表文件布局|Metadata(元数据文件)记录了最新的快照信息和历史快照信息,以及最新的Schema信息。Snapshot(快照文件)每次事务提交都会生成一个Snapshot。记录了本次提交新增的清单文件和历史清单文件列表(Manifest List)。Manifest(清单文件)记录了本次事务写入的文件和分区的对应关系,以及字段统计信息(最大值、最小值)。Data File(数据文件)实际写入的数据文件
3、,如Parquet、Avro等格式文件。事务性|避免脏数据读写分离隐式分区|根据数据自动推断分区分区不和目录强绑定灵活的分区变更行级更新|format version更新方式更新方式V1Copy On WriteV2Copy On Write、Merge On ReadIceberg在小米的应用实践02|数据湖在小米应用现状|表数量表数量4000+数据量数据量8PB+v1表数量表数量1000+v2表数量表数量3000+ChangLog 数据入湖|ChangLog 数据入湖优点|近实时分析支持流式消费同步变更Schema 成本低ChangLog 入湖分区的选择-自增 Id 为主键|Bucket分
4、区分区数据均匀分布所有分区都可能需要 Compaction随着数据量增加,分区数不变Truncate分区分区数据只写入最近几个分区只对最近几个分区 Compaction随着数据量增加分区数递增ChangeLog 数据入湖产品化|日志数据入湖|隐式分区避免数据漂移问题隐式分区保证延迟数据正确分区Flink+Iceberg 事务性保证数据不丢不重支持 Schema 同步变更日志数据入湖产品化|Iceberg-governance 服务|Compaction服务服务 合并小文件、merge delete filesExpire Snapshots服务服务 过期 snapshotsOrphan Fil
5、es clean服务服务 清理孤儿文件Hive 升级 Iceberg|压缩方式压缩方式存储格式存储格式Parquet+ZSTD 存储节约存储节约UNCOMPRESSEDTEXT80%SNAPPYSequenceFile30%+SNAPPYParquet30%+GZIPParquet5%在 Compaction 中配置更高的 compression level 获得更高的压缩率Hive 升级 Iceberg 产品化|基于 Iceberg 的流批一体的探索03|Lambda 架构|实时链路提供时效性离线链路提供准确性离线数据支持回溯离线数据可供OLAP查询实时链路不支持OLAP 查询实时链路回溯能
6、力有限两套存储,存储成本高两套代码,开发维护成本高实时离线数据不一致数据湖架构|Iceberg 存储上统一 Flink 计算引擎统一 支持回溯 支持 OLAP 查询 支持构建变更流为什么需要离线作业来修数据?|Flink 状态过期导致没 Join 上Watermark 设置导致延迟数据丢失Lookup Join 完成后维表发生了变更Overwrite VS Merge Into?|MERGE INTO prod.db.target t -a target tableUSING(SELECT.)s -the sour