1、Iceberg在湖仓使用中的若干探索李立伟 华为 资深工程师2023 整体概述应用探索整体概述使用传统的目录方案进行数据管理在传统方案,例如Hive中,表被定义为一个或多个目录的全部数据。组成表的数以目录级别进行跟踪,这些数据被存储在Hive元存储中完成。分区值通过目录路径定义:适用于几乎所有处理引擎,因为它是村里唯一的希望自从大数据被更广泛采用以来,一直是事实上的标准。存储格式无关分区级别原子性提供了整个生态系统中的“元数据描述”即使微小的变更依旧效率低下多分区修改无法保证安全性多个作业同时修改一份数据无法保证安全性列出大表的目录列表需要非常长的时间用户必须知道表格的物理布局Hive 表统计
2、信息通常是陈旧的在云对象存储上的性能较差要达成的目标Old WayNew Way文件级别的数据表目录级别的数据表目标:表的正确性与一致性 更快的planning and execution 用户无需感知物理结构 表演进 在大规模数据上实现以上目标Iceberg是什么-一种Table Format 规范-一组API和库,可用于引擎与遵循该规范的表进行交互-存储引擎-计算引擎-服务数据流图中间层中间层支持支持OLAPOLAP分析及实时化分析及实时化将DWD数据明细层与DWS数据服务层从批式T+1处理,演进为流式增量处理,数据时延大大降低支持支持ACIDACID语义语义完善的ACID语义支持,修改操
3、作不会影响读取等支持高效回溯支持高效回溯Hive/Kafka等无法有效回溯历史版本,无法查看历史的表格式与数据存储成本更低存储成本更低一套存储在OBS上完成业务数据落地数据数据延迟未达到实时延迟未达到实时业务系统改造业务系统改造对接对接针对针对IcebergIceberg表的定制表的定制优化优化Pulsar/DMQHDFS/OBS数据入湖贴源数据明细数据模型数据clickhouseesAPP增量处理增量处理批流一体存储逻辑架构数据入湖HDFSOBSStorage Cache(数据加速层)数据源业务库文件消息按需加载实时加载实时检索HBaseELasticSearchClickhouse图数据库
4、RedisIOT DB数据清洗大屏展示清单/详单查询挖掘建模数据管理固定报表BIAI分析专题分析实时应用自助分析贴源数据明细数据模型数据File StoreLog StoreService生命周期管理数据重分布数据压实告警监控应用探索流数据接入通知式告知完成状态分区数据未写入完成,不希望下游可查询等场景随时感知数据的写入位基于水位线的自定义提交sink.partition-commit.delay=1 h,sink.partition-commit.trigger=partition-time,sink.partition-commit.policy.kind=success-file基于水位
5、线的延迟数据处理在流式处理过程中,时效不同的数据价值也是不同的。时效越高的数据,价值越高。基于此,当时效较低的数据到达时,将数据进行累积,直到数据量达到一定级别,再行提交。类Git式的数据管理周期稳定快照重要历史快照实验分支类GIT式数据管理-进行全量表改造痛点:数据冗余存储,每天都存储了一份全量的历史数据,表数据保存的周期越长,冗余数据越多1lisi2Zhangsan(1,lisi2),(3,wangwu)1lisi22Zhangsan3wangwu1lisi22Zhangsan3wangwu4xiaohong(4,xiaohong)优势:每天只存储增量数据,无需全量存储存储占用降低为原本的
6、25%以下升级列更新IDCol21b13b34b4c.file Partial FileSEQ 1IDCol11a12a23a34a4IDCol1Col21a1b12a23a3b34a4b4IDCol11a12a23a3IDCol14a4a.file Data FileSEQ 0b.file Data FileSEQ 0IDCol11a12a23a3IDCol14a4a.file Data FileSEQ 0b.file Data FileSEQ 0Add Col2 column关键技术:关键技术:元数据关联部分列