《6-3 网易 Arctic:基于 Apache Iceberg 构建的实时湖仓一体系统.pdf》由会员分享,可在线阅读,更多相关《6-3 网易 Arctic:基于 Apache Iceberg 构建的实时湖仓一体系统.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
1、网易ARCTIC基 于 A PA C H E I C E B E R G 构 建 的 实时 湖 仓 一 体 系 统张永翔网易数帆 资深大数据平台开发|01业务当前的挑战Lambda 架构下流与批割裂带来的问题02基于 iceberg 构建的湖仓一体系统03业务实践Arctic 在网易内外的实践04未来规划目录 CONTENT|网易Arctic业务当前的挑战Lambda 架构下流与批割裂带来的问题01|T+1 离线数据生产hivespark/hive原始数据数据源数据集市明细数据轻度汇聚sparkspark/hivespark/hiveimpala|场景一:初步引入实时化Flink分钟/秒级Hi
2、veHive清洗聚合Kudu消息队列FlinkCDC数据集市小时/天级近 N 天数据全部数据Hivesparkspark数据源LOGspark/impalaspark/impala主键聚合清洗聚合|场景二:更加复杂的实时化Flink分钟/秒级KuduFlinkCDC数据集市小时/天级近 N 天数据数据源LOGspark/impalaspark/impalaHiveHiveHiveHiveHiveHiveHiveHivesparkspark清洗/打宽/聚合HBASEspark全部数据清洗/打宽/聚合|流批计算割裂下的 lambda 架构离线应用层sparkimpalaspark数据源实时应用层存
3、储层(消息队列+kv)KV消息队列服务层(实时数仓)impalaflink数据源应用层:流批合并视图sparkflinkflinkKVKudu数据孤岛(Kudu 等)独立采购和部署冗余存储浪费成本难以数据复用和互通研发体系割裂研发人效低研发规范不通用应用层视图合并复杂指标和语义二义性服务层 Hive存储层 Hive|Arctic 功能特性基于 Apache Iceberg 构建的湖仓一体系统02|Arctic 的定位的定位一句话概括:定义在定义在Hive/Iceberg 表格式之上,计算引擎之下的表格式之上,计算引擎之下的TableService,并提供表结构优化以及,并提供表结构优化以及Ka
4、fka封装的封装的实时湖仓系统实时湖仓系统|Arctic Table Optimize for Hive/IcebergHive 的摄取与计算场景T+1/T+H 场景,每次进行全量的计算|Arctic Table Optimize for Hive/IcebergIceberg/Deltalake 的摄取与计算抽象出 Snapshot 概念,通过快照隔离实现MVCC 和ACID,支持数据实时摄取|Arctic Table Optimize for Hive/IcebergArctic 在 Iceberg 的基础上,将 Batch 和Stream 写入的文件进行区分,分为change store
5、 和 base store.通过异步的 optimizing 对 stream 写入的文件进行合并,并提供了小文件治理、唯一键保证和 upsert 的能力并通过 ArcticTable 封装的接口提供merge on read,实现准实时的读写能力|Arctic Table Primary Key Support支持 Primary Key支持 CDC ingestion实现 Upsert 语义主键唯一性约束实现Merge on read optimize未来扩展 SortKey/AggKey|Arctic Table Auto Optimize Minor Optimize 执行周期短(约1
6、0min 一次)优化小文件数量 eq-del 转换为 pos-del 只针对 change file Major Optimize 执行周期长(约1 day 一次)合并 change file 到 base file 兼容 Hive 读|Arctic Table 流批一体表(支持流批一体表(支持CDC)下游可订阅 Arctic 表变更 支持 Hidden Queue 秒级延迟订阅 通过消息回撤实现最终一致性 arctic-flink-connector 封装双写和回撤实现细节 不开启 Hidden Queue 分钟级延迟订阅|Arctic Table 流批一体表(流批一体表(双写一致性保证双写
7、一致性保证)开启 hidden queue 后,上游消息先写 kafka 再写 change store,change store 在 checkpoint 时提交,此时如果上游任务failed会出现一致性问题。当上游任务 failover 后,会导致部分数据重复写入 kafka,下游重复消费|Arctic Table 流批一体表流批一体表(Retract 实现实现双双写一致性保证写一致性保证)对消息进行封装,带上消息对应Writer 的State 周期下游算子记录每个CK 对应的offset 信息任务failover 后,先写入 Flip 消息,带上任务恢复的CP信息下游任务收到 Flip
8、消息,从 Kafka 找到对应的消息并 retract整个过程由 arctic-flink-connector 封装|Arctic Table 流批一体表流批一体表(支持支持Lookup join)通过 Hidden kv index 支持 lookup join 同样不需要关心实现细节,Arctic Table 可以直接当维表用 未来会实现 Temporal Join 无需依赖外部 KV|Arctic Table 流批一体表流批一体表(支持支持Temprol join 规划中规划中)基于 Flink1.12 Temprol Table(时态表)功能 不需要引入额外的 KV 组件 支持 eve
9、nt time join|Arctic Table 并发写入与一致性保证并发写入与一致性保证id=1,val=?正确的值应该是什么|Arctic Table 并发写入与一致性保证并发写入与一致性保证id=1,val=?正确的值应该是什么应用场景:数据回补(CDC 数据丢失,批任务全量补数)GDPR/CPAA(删除用户在大数据系统内的存量数据)|Arctic Table 并发写入与一致性保证并发写入与一致性保证AMS 分配txId,标记记录写入先后顺序Merge on read 时,确认可见 record 为哪一个Minor/Major Optimize 时,确认应该保留哪一个 record|A
10、rctic Table Hive 兼容兼容Hive兼容的原因-基于Hive的离线数据仓库已经非常成熟,有广泛应用-兼容离线数仓,方便离线数仓到实时数仓的升级对对Hive兼容能力-支持hive表原地升级为arctic表-支持将arctic base store 作为hive表读取-支持将arctic表作为hive表写入(INSERT OVERWRITE)-通过 optimize 实现实时写入到hive表数据的同步-自动识别Hive 写入文件|Arctic Meta ServiceAMS 被定义为新一代的HMS负责Arctic Table Metadata 管理分配事物ID面向计算引擎的元数据服务
11、触发结构优化任务Optimizer 调度与资源管理提供运维友好的 Dashboard|AMS Dashboard Transaction 管理管理Dashboard 上展示某次Transaction提交的文件信息|AMS Dashboard Table Optimizer 管理管理Dashboard 上展示某张表下的 Optimize 任务执行信息|对比总结对比总结Arctic不支持多写不支持秒级CDC不支持实时join不支持流式更新没有 merge on read对 Flink 不友好没有自动合并缺失文件合并功能不支持PrimaryKey多写场景一致性保障缺失存算不分离,无法利用HDFS 资
12、源池数据孤岛,无法实现不同层数据串联写放大导致性能问题基于Iceberg,并兼容Iceberg所有功能Hive 兼容性好,业务升级阻力更低支持自动合并,动态调度合并任务支持 merge on read,提供分钟级延迟实时数仓提供流批一体功能,包括秒级实时订阅和实时join提供方便的运维管理平台对Hive 兼容支持不够友好缺失运维管理平台流批一体功能缺失(实时订阅,实时join)实践案例03|Arctic 应用举例 推送营销分析merge on read推送分析报表changebasekv indexbasebasebase设备库主站埋点日志ods_ua设备明细表圈选明细表曝光明细表点击明细表分
13、拆算法埋点日志baseods_select_userbase清洗ods_devicebase清洗AP 批查询left joinHive 表支持流式更新通过 merge on read 提供实时数仓能力|Arctic 应用举例 推送营销分析实时生产left join维表 joinbase推送归因表营销分析特征加工样本生产ABTestschangebasekv indexbasebasebase设备库主站埋点日志ods_ua设备明细表圈选明细表曝光明细表点击明细表分拆算法埋点日志baseods_select_userbase清洗ods_devicebase清洗批量分析切换到实时生产,生产流程复用优化报表响应时间 10 x-100 x|未来规划04|未来规划未来规划更多流批一体场景Rollup 聚合视图Sort Key 支持,Z-ORDER 排序部分列的 Stream upsert支持 Temprol Join更强的Dashboard任务血缘与数据血缘SQL自助查询安全体系完善支持开放式的权限插件,支持对接Ranger数据湖支持S3/OSS|开源计划开源计划预计6月底,敬请期待非常感谢您的观看|