AI智能总结
Iceberg在湖仓使用中的若干探索 李立伟华为资深工程师 应用探索 整体概述 整体概述 使用传统的目录方案进行数据管理 在传统方案,例如Hive中,表被定义为一个或多个目录的全部数据。组成表的数以目录级别进行跟踪,这些数据被存储在Hive元存储中完成。分区值通过目录路径定义: •适用于几乎所有处理引擎,因为它是村里唯一的希望——自从大数据被更广泛采用以来,一直是事实上的标准。•存储格式无关•分区级别原子性•提供了整个生态系统中的“元数据描述” •即使微小的变更依旧效率低下•多分区修改无法保证安全性•多个作业同时修改一份数据无法保证安全性•列出大表的目录列表需要非常长的时间•用户必须知道表格的物理布局•Hive表统计信息通常是陈旧的•在云对象存储上的性能较差 要达成的目标 Old Way 目录级别的数据表 目标: •表的正确性与一致性•更快的planning and execution•用户无需感知物理结构•表演进•在大规模数据上实现以上目标 New Way Iceberg是什么 -存储引擎 -一种Table Format规范 -计算引擎 -一组API和库,可用于引擎与遵循该规范的表进行交互 -服务 数据流图 批流一体存储逻辑架构 应用探索 流数据接入 基于水位线的自定义提交 'sink.partition-commit.delay'='1 h','sink.partition-commit.trigger'='partition-time','sink.partition-commit.policy.kind'='success-file' 基于水位线的延迟数据处理 在流式处理过程中,时效不同的数据价值也是不同的。时效越高的数据,价值越高。 基于此,当时效较低的数据到达时,将数据进行累积,直到数据量达到一定级别,再行提交。 类Git式的数据管理 •周期稳定快照 •重要历史快照 •实验分支 类GIT式数据管理-进行全量表改造 列更新 关键技术:•元数据关联部分列信息 •根据新列生成部分列数据•读取时或后台异步任务合并部分列数据 使用Puffin完成初步的索引应用 根据规范,Puffin是一种文件格式,旨在保存有关由Apache Iceberg表管理的底层数据文件(例如Parquet文件)的统计信息和索引等信息,以进一步提高性能。该文件包含称为“blob”的任意信息片段,以及分析它们所需的元数据。到目前为止,blob可以是以下类型:apache-datasketches-theta-v1。 利用Puffin文件,将此文件写入到表中,并且在开启外部索引的情况下,将此文件的内容加载到外部索引组件中,加速关联、点查等场景。 不止于Table Format 良好的业务使用体验 极低的维护成本 自动优化 支持多种存储、计算引擎 数据湖服务 配套实时数据湖仓,全面提升相关性能、可视化、运维监控能力: 1.服务规则引擎:使用数据重分布等提升查询性能、进行数据生命周期管理等2.告警规则引擎:基于配置的告警进行相应监控 基于File IO的对象存储优势 基于File IO的对象存储优势 基于File IO的对象存储优势 基于File IO的对象存储优势 隐藏分区 隐藏分区 隐藏分区 更新分区规范纯粹是一种元数据操作,因为不会重写先前的数据,因此非常快速、简单且成本低廉。计划查询时,引擎将拆分工作并为适用于每个分区规范的数据创建不同的计划。由于您可以打破查询计划,因此无需重写所有旧数据,从而使对表架构的增量更改变得简单且成本低廉。 同时也可以随时使用rewriteDataFiles过程重写旧数据以进行压缩和排序。 如何无缝迁移到iceberg 仅需三步: 1.任务添加IcebergRuntime包2.自动生成快照表用于验证3.验证后升级原表到Iceberg (原表将被加上Backup后缀) 感谢您的观看