网易流批一体的实时数据湖实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 网易流批一体的实时数据湖实践 网易数帆,周劲松
2.
3. 目录 1 3 网易数据开发现状与痛点 案例与成果 2 4 网易流批一体的实时数据湖——Arctic 未来规划
4. 01 网易数据开发现状与痛点
5. T+1 离线数据生产 原始数据 轻度汇聚 明细数据 数据源 数据集市 spark spark/hive spark/hive impala spark/hive hive
6. 初步引入实时化 近 N 天数据 数据集市 数据源 Kudu 清洗聚合 Flink CDC 分钟/秒级 消息队列 spark / impala LOG spark / impala Flink 全部数据 清洗聚合 Hive spark Hive 主键聚合 spark Hive 小时/天级
7. 更加复杂的实时化 清洗/打宽/聚合 近 N 天数据 数据集市 数据源 Kudu HBASE 分钟/秒级 Flink spark / impala CDC LOG Flink spark Hive Hive Hive Hive 清洗/打宽/聚合 全部数据 Hive Hive spark Hive spark Hive spark / impala 小时/天级
8. 流批分割的Lambda架构 应用层:流批合并视图 实时应用层 离线应用层 spark • 数据孤岛(Kudu 等) impala impala 服务层 Hive spark 独立采购和部署 • 冗余存储浪费成本 • 难以数据复用和互通 服务层(实时数仓) KV Kudu flink 存储层 Hive spark • 存储层(消息队列 + kv) KV 数据源 消息队列 flink 数据源 flink • 研发体系割裂 • 研发人效低 • 研发规范不通用 • 应用层视图合并复杂 • 指标和语义二义性
9. 02 网易流批一体的实时数据湖 Arctic
10. Arctic核心功能 痛点 数据孤岛 实时数据更新 功能 流批研发体系割裂 流批一体功能封装 • 支持主键定义 • 毫秒级延迟的实时写入/读取接口 • 提供唯一性保障 • 分钟级延迟的批量写入/读取接口 • 结构自由化,保障读写效 • Flink/Spark/trino等引擎的支持
11. Arctic架构 Arctic 是由网易开源的流式湖仓系统,Arctic 在 Iceberg 和 Hive 之上添加了更多实时场景的能力, 并且面向 DataOps 提供流批统一,开箱即用的元数据服务,让数据湖更加好用和实用 。
12. Arctic核心功能:Primary Key • 支持 Primary Key • 支持 CDC ingestion • 实现 Upsert 语义 • 主键唯一性约束实现 • Merge on read • optimize • 未来扩展 SortKey / AggKey
13. Arctic架构 • AMS:元数据服务 - 三元组的元数据中心 - 支持和 HMS 同步,一起服务 - 事务和冲突解决 API • Optimizer 机制 - Optimizer container - Optimizer group • 配套 Dashboard,注重管理体验 • Table format 完全兼容
14. Arctic核心功能:Optimizer •Minor Optimize •执行周期短(约10min 一次) •eq-del 转换为 pos - del •针对 change store •Major Optimize •执行周期长(约1 day 一次) •消除delete 文件 •优化小文件情况 •针对base store
15. Arctic核心功能:文件索引 Snpshot id : 1000 1 0 Key:11010011 0 0 0 1 12M 1 0 1 change node:11 1 。。。。。。 000 001 011 111 108M 82M 96M base node :111 base node:011 change node base node change file base file 94M
16. Arctic核心功能:文件索引 Snpshot id : 1001 1 0 Spark impala presto Merge on read 0 0 0 1 1 0 1 1 。。。。。。 000 001 0 1 111 11 57M 0011 change node base node 1011 000 001 11 11 57M 0011 merge read task 92M 1011 111
17. Arctic核心功能:流批一体 lookup join batch join 流批一体功能封装 seconds • 毫秒/秒级延迟流计算 • 分钟级延迟流计算 seconds stream write stream read minutes minutes hours hours • 小时级延迟批计算 • 流和批场景下的关联计算 batch write batch read
18. Arctic核心功能:hidden queue •下游可订阅 Arctic 表变更 •支持 Hidden Queue •秒级延迟订阅 •通过消息回撤实现最终一致性 •arctic-flink-connector 封装双写和回撤 实现细节 •不开启 Hidden Queue •分钟级延迟订阅
19. Arctic核心功能:hidden queue 任务Failover 后,先写入 Flip 消息,带上任务恢复 的CP信息 下游任务收到 Flip 消息,从 Kafka 找到对应的消息 并 retract 整个过程由 arctic-flink-connector 封装
20. Arctic核心功能:多写一致性保障 ? 事务开始时从AMS分配事务ID,Merge-On-Read/Optimize时根据事务ID判定写入顺序
21. 性能测试
22. 性能测试
23. Arctic总结 • 格式兼容:百分百兼容 Iceberg / Hive 的表格式和语法 • 引擎平权:支持 Spark 和 Flink 读写数据,支持 Trino/impala 查询数据 streaming lakehouse service • 基于主键高效地流式更新 • 支持将数据湖和消息队列封装成统一的表,流批表合一 • 数据自动分桶,结构自优化 • 提供流式数仓标准化的度量,dashboard 和相关管理工具 • Spark/Trino merge-on-read,查询分钟级新鲜度 • 解决并发写入冲突,实现事务一致性语义
24. 03 案例与成果
25. 案例:推送营销分析 设备明细表 设备库 kv index ods_device 维表 join 清洗 change base 算法埋点日志 推送分析报表 base 圈选明细表 ods_select_user 清洗 AP 批查询 base base left join 曝光明细表 主站埋点日志 base ods_ua 分拆 点击明细表 base • Hive 表支持流式更新 • 通过 merge on read 提供实时仓能力数 base
26. 案例:推送营销分析 设备明细表 设备库 kv index ods_device 维表 join 清洗 change base base ABTests 算法埋点日志 推送归因表 圈选明细表 ods_select_user 清洗 base base 营销分析 实时生产 left join base 曝光明细表 主站埋点日志 特征加工 样本生产 base ods_ua 分拆 点击明细表 base base • 批量分析切换到实时生产,生产流程复用 • 优化报表响应时间 10x-100x
27. 04 未来规划
28. 未来规划 • 更多流批一体场景 • Rollup 聚合视图 • Sort Key 支持,Z-ORDER 排序 • 部分列的 Stream upsert • 不依赖外部 KV 实现 Flink lookup join • 拓展与集成 • 更多SQL语法支持(MERGE INTO) • 扩展更多的Table format(Hudi、Delta) • 支持开放式的权限插件,支持对接 Ranger • 更多 optimizer container 支持
29. GitHub: https://github.com/NetEase/arctic Document: https://arctic.netease.com/ch/
30.
31.
32.
33.
34.
35.
36.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 14:07
浙ICP备14020137号-1 $Map of visitor$