vivo实时计算平台建设实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 陈涛 | vivo互联网大数据平台计算方向负责人
2. 目录 vivo实时 计算业务现状 vivo实时计算 平台建设实践 应用场景简介 探索与展望
3. Chapter 1
4. vivo实时计算现状 OS+ APPs 月活2.5亿 实时数仓 月活1.24亿 月活2.5亿 实时智能推荐 月活1.2亿 月活7.5千万 商业化实时广告 实时安全 实时计算平台(vStream) 在网用户2.8亿 实时监控 数据集成 实时计算运营数据 5.5万亿 4000+ 日处理数据量 实时任务数 7万+ 1.5亿/秒 使用CPU总核数 峰值流量 数据时间:2022年8月 离线计算 多维分析 日处理数据量(亿) 有效任务数 大数据存储服务 数据来源:vivo
5. 实时计算平台面临挑战 • 持续提升实时开发体验,快速落地实时业务, • 数据量大且增速快,实时业务规模年平均增量 满足高速发展的实时业务需求 大于100% • 关注任务运维效率,高效排查线上问题,自动 • 业务场景多,覆盖业界所有主要实时应用场景 • 业务延迟和稳定性要求高 稳定 易用 • 大数据架构复杂,依赖组件多 化与自助化的提升能够显著提升人效 • 丰富的扩展能力,满足丰富业务场景需求 • 较高的可观测性要求,掌握全链路运行情况 实时计算平台 面临挑战 • 持续提升存储、计算资源利用效率,降低实时 • 保障数据安全,确保合适的人以合适的方式访 业务运行成本 问合适的数据 • 提升业务运营效率,帮助用户持续优化成本与 质量 • 数据时效性保障,低延迟业务提供高优保障 • 保障系统安全,确保核心关键业务具备高可用、 高效 安全 高可靠、高可恢复的能力 • 安全审计,风险溯源
6. vivo实时计算平台建设历程 vStream 是 vivo 基于 Apache Flink 流批一体计算引擎自研的覆盖集成、开发、部署、运维&运营全流程的一站式实时 数据开发平台,通过支撑 vivo 实时数仓、实时智能推荐、商业化实时广告、实时安全、实时监控等五大业务中台服务于 vivo 全 网2.8亿用户。 启动 2021 2019.07 Flink 1.13 Flink on K8s 超大状态任务支持 Flink 1.9 Flink JAR、ETL 监控告警 2023 云原生湖仓一体 弹性计算 Flink Batch 2020 Before Spark Streaming Storm Flink 1.10 稳定性建设 Flink SQL 2022 流批一体 资源诊断 异常诊断
7. Chapter 2
8. 大数据体系架构 BDSP 应用商店 数据集成 浏览器 游戏中心 短视频 钱包 实时计算 汇聚层 数 据 采 集 多维分析 大数据存储服务 离线计算 Spark ETL Hive ClickHouse Presto 实时计算 数据调度 YARN 推荐 计算层 Druid 广告 安全 Kubernetes …… Hudi HDFS BI AI OLAP Flink …… 在线业务 离线计算 平台层 对象存储 Kafka 大数据平台 Pulsar HBase 存储层 数据应用
9. vivo实时计算平台简介 实时开发全流程 接入 开发 部署 运维 运营
10. vivo实时计算平台建设思路 5 安全能力建设 数据安全、系统安全、安全审计 效率提升 4 平台建设思路 3 2 易用性建设 Flink SQL能力、SQL调试、全链路监控、作业运维能力 稳定性建设 组件服务稳定性、任务稳定性、平台稳定性、超大状态任务稳定性 基础服务建设 1 实时开发全流程 流批一体、Flink on K8s、任务诊断 后端架构、统一元数据服务、监控告警服务 接入 开发 部署 运维 运营
11.
12. 实时计算平台服务架构 核心能力 任务生命周期管理 • 任务提交支持多Flink版本 • 任务状态实时上报、更新 • 任务多版本支持,回滚支持 支持多种任务类型 • SQL • JAR • 画布 API Server Doctor Server StateMachine DB 统一元数据服务 Poller Submission Server 完善的数据管理能力 • 实时元数据库、表管理 • 数据权限 • 基于项目的任务权限管理 HMS Control Server YARN Flink Job K8S Flink Job 性能与扩展性 • 服务高可用 • 任务状态更新秒级延迟 • 任务容量横向扩展 Metrics Server 实时计算平台服务架构 实时监控告警服务
13. 统一元数据服务 背景 BDSP • 实时、离线元数据独立重复建设 • 数据管理、数据治理、数据安全能力不统一 • 流批融合场景数据使用需要连接两套元数据 统一使用Hive MetaStore作为元数据存储 元数据规模:分区数亿级、表数量百万级 作业管理模块 • • • • 权限信息 分类分级信息 血缘信息 变更信息 MetaStore服务优化性能, 分区表ALTER TABLE性能提升10倍 多引擎兼容Flink(3版本)、Spark(3版本)、 Presto、Hive等 服务高可用,支持横向扩展,毫秒级读写性能 实时计算 任务调度模块 多维分析 数据集成 即席查询模块 元数据管理 权限管理 离线任务提交服务 实时任务提交服务 DB 离线计算集群 实时计算集群 Spark SQL JOB Flink SQL JOB Spark SQL JOB Flink SQL JOB Presto集群 数据调度任务 (Bees-X) Hive MetaStore • Schema • Hive/Hudi/Flink • Connectors 离线计算 TiDB
14. 实时监控告警服务 核心能力 全链路延迟、数据质量、业务指标、A/B效果等 业务监控 • 告警延迟达到亚秒级 • 支持自定义上报指标、自定义告警规则 • 规则动态生效 • 丰富完善的内置监控面板,覆盖任务各个层面 • 支持通过表达式配置的复杂规则 任务状态、延迟、背压、任务负载、CP等 任务监控 服务监控 HDFS、YARN、ZK、DB等的可用性、容量 操作系统、CPU、IO、网络、VGW等 基础设施监控 监控面板 DB Druid 用户任务 Metrics Reporter vStream Metrics Server • 告警规则 • 监控模板 Kafka Flink CEP Alert Job Groovy动态规则 vivo CEP Framework 实时告警程序 Alerter v消息 短信 电话
15.
16. 大数据组件服务稳定性提升 HDFS 面临 问题 措施 Kafka • StaleNode问题,DN节点不可用 • 节点上下线导致资源不均衡问题,影响 • HDFS 2.x不支持truncate,流式 • ZK Leader切换导致大规模任务重启 问题 消费生产性能 写无法恢复问题 • Broker故障导致Flink任务重启问题 • HA切换残留JobManager进程导致 • 小文件问题导致Flink读写慢 • Broker重启容忍度提升 双主问题,导致任务状态不一致 HDFS升级3.x版本 资源组隔离 Flink提升ZK切换容忍度 优化Flink GC线程数 自动负载均衡 调优HA相关参数,解决Flink BUG 小文件自动合并服务 Broker重启容忍度提升 收敛Flink版本 异常 效果 Zookeeper 任务稳定性提升 运行 调度 目标 任务正常运行时长/理论运行时长 >= 99.98% 减少任务异常次数 找到异常根因并解决 减少单个任务异常时长 快速发现,快速解决
17. 超大状态任务稳定性提升 Topic A 背 景 Flink Job Task 存储 Topic B Redis 内存模型理解 RocksDB内存易超限 外部系统 监控建设 大流量样本拼接场景 超大状态 大窗口双流Join场景 高稳定性要求 依赖外部Redis做状态存储的场景 RocksDB状态后端 实时模型训练场景 增量CP开启 RocksDB版本升级 ManagedMemory Size 目标: RocksDB运行时各部分内存情况 与性能指标 迭代器内存使用不确定 Block Cache无法限制BUG ManagedMemory使用逻辑 扩展支持自定义RocksDB native 指标采集上报 Histogram类型指标采用 取avg值方式 持续调优&状态清理 5.17.2 升级到 6.20.3 效果: 稳定性提升 读写性能略有下降 磁盘目录分布设置 write buffer调优 分区索引等等 CP/SP状态治理: 重点: 自动清理、限制策略 名称设计与社区风格保持一致 明确RocksDB使用的最大内存计算逻辑 任务稳定性显著提升,大状态任务稳定性达到99.99% 状态持续治理,存储水位健康,保障集群稳定运行 在内容推荐、商业化广告的多个业务场景上线,业务价值有效提升 后续规划 • 通过优化前缀匹配策略提升读写性能 • 通过增加统一Cache提升读性能
18. 业务稳定性提升思路 SLI 任务正常运行时长/理论运行时长 业务 稳定性 任务稳定性 数据 准时率 解决任务异常问题,比如引擎BUG、磁盘写满、 系统资源用尽 建设服务高可用能力 建设双机房主备或双活 提升团队故障排查能力 运营投入大、打扰用户 准时到达数据量/理论准时到达数据量 任务 稳定性 数据准时率 建设自动化故障处理流程,降低人力投入 业务按重要性分级,提供更精准的延迟保障 告警收敛,在准时要求以内的延迟不打扰用户 指导建设更精细监控告警,覆盖更多风险 业务稳定性保障范围提升、用户感知更好
19.
20. Flink SQL 用户体验 • • • • SQL编辑器支持语法解析、高亮、格式化等 元数据同时支持可视化与DDL脚本 支持Schema探测,高效建表 调试采用Standalone模式,高效执行 SQL Editor SQL能力 SQL语法 • 新增SET语法支持参数设置 • 改造DDL语法兼容多版本Flink Parser • 改进CSV format增强schema变 更兼容性 • 改进JSON format支持多层嵌套 数据类型 DDL HMS Catalog • 扩展Catalog连接实时表、函数等 • HiveCatalog改造兼容Hudi元数据 • 新增EMIT语法支持 Format 元数据/UDF管理 Connector Planner SQL Backend z • 扩展支持Redis、ES、RMQ、Druid、 ClickHouse、HTTP、Pulsar、Hudi等 • 增强异步IO支持Redis、HBase、MySQL等 • 增强Kafka Broker故障容忍 • HiveSink性能优化 Catalog Format Optimizer Submitter Schemas/UDFs Connector Detector Lineage Debugger UDF • 扩展支持10+平台级UDF YARN/K8S SQL调试 • SQL调试支持抽样、上传、数据生成、DAG图展示等特性 • 任务血缘支持 • 任务异常检测支持 JM JobManager TaskManager TM Standalone Cluster
21. 全链路血缘 全链路延迟 采集任务 延迟发生任务 某任务全链路血缘图 任务处理延迟 当前任务
22.
23. Flink on K8s 模式 扩展 • Flink on Native K8s • Application Mode 背景 资源效率 隔离性与安全性 DevOps效率 • JAR任务支持 • 日志、Dashboard访问支持 资源 易用 • Namespace模拟YARN队列 • 用户体验与YARN一致 Docker Registry vStream Submission Kubernetes Cluster K8s Master Submitter K8s Client Flink Job Deployment Service InitContainer Pod JobManager Flink Dashboard InitContainer TaskManager HA Zookeeper HDFS • Flink状态存储 • 任务Jar文件存储
24. 流批一体 背景 两份存储,两次计算 两套模型,两套代码 数据一致性问题 任务调度 + 任务血缘 核心能力痛点 离线数仓 HMS 报表/大屏 Nginx ODS 数 据 源 DWD DWS 内容推荐 Tomcat 数据集成 安全风控 MySQL 实时数仓 Registry Container ODS DWD 实时分析 DWS 数 据 应 用
25. 流批一体 流批融合数仓 HMS 调度+血缘 计算引擎 数据源 数据集成 ODS DWD HDFS 统一存储引擎 • 支持Flink SQL流式计算与Spark SQL批式计算 • 针对业务场景进行引擎优化 • 调研Flink Batch作为批计算引擎(进行中) • 建设流批统一的数据调度平台(Bees-X),配置 化入湖 • 数据集成链路由二合一(进行中) 对象存储 统一计算引擎 • 使用Apache Hudi作为统一存储中间层 统一入湖 数据应用 DWS 统一元数据 核心价值 提效 降本 能力、质量提升 • Hudi与Hive元数据统一到HMS • Flink与Spark元数据兼容 2个业务试用中
26. 任务诊断 背景 资源浪费 机器故障 流量突增 背压 异常任务 机器资源耗尽 启动异常 FailOver 依赖服务故障 …… 经验 知识 能力 资源诊断 数据 算法 任务异常诊断 规则 核心价值 • 掌握作业运行健康状况 • 为用户提供资源调优指导,有效减少资源浪费 • 帮助业务从异常中快速恢复 • 提升集群资源利用效率 Dashboards & Suggestions API Server DB Doctor Server Heuristic Rules Detector Metrics Fetcher 单位资源处理数据量提升 异常任务拦截数量每周 20% 100+ Job Metrics Log Fetcher Logs Container Metrics Advisor ExternalData Fetcher RM Metrics ClusterInfo Fetcher PAAS Cluster Metrics
27.
28. 安全能力建设 数据安全 • 实时数据访问、读写权限控制 • 存储安全,离线存储支持列加密,实时存储ACL 控制 • 数据分类分级,具备分级自动检测能力 • 通过数据加密确保埋点上报安全、采集安全 安全审计 系统安全 • 所有服务具备高可用能力 • 关键作业支持双机房主备或双活部署 • 具备CPU/MEM资源隔离能力 • 系统全局登录安全,具备密码安全策略 • 软件漏洞及时修复 • 安全日志记录,访问、操作日志 • 风险溯源 • 敏感数据检测
29. Chapter 3
30. 实时数仓 服务 报表服务 标签服务 中间层开放 毫秒提速 数据质量保障 流程规范审计 质量监控预警 容灾 故障模拟演练 用户 ODS 数据源 Nginx Tomcat 埋点日志 DWD DWS ADS 实时大屏 智能营销 数据集成 ClickHouse ClickHouse 服务端日志 精准推荐 实时决策 MySQL Binlog 规范 工具 HDFS HDFS 实时建模规范 通用去重组件 通用扩维组件 商业化 HDFS 实时业务开发规范/SQL规范 通用日志清洗组件 通用分流组件
31. 短视频实时内容推荐 在线服务 在线预估 数据集成 在线模型存储 离线数仓 离线特征计算 特征存储 离线样本拼接 离线模型存储 实时数仓 实时特征计算 离线样本存储 离线训练 vPilot 实时样本拼接 实时样本存储 用户特征快照 实时增量训练
32. Chapter 4
33. 基于云原生的弹性能力 背景 业务是弹性的 任务级弹性 任务 集群级弹性 计算 类型 平均 利用率 高峰 时段 延迟 计算 特点 任务 粒度 离线计算 高 00时-10时 延迟容忍 IO密集 短期任务 实时计算 较低 10时-22时 延迟敏感 CPU密集 长期运行 在线计算 低 10时-22时 延迟非常敏感 CPU密集 长期运行 流批混部 集群 统一集群资源管理 time time 离线集群 实时集群 在离线混部 资源隔离 资源调度 • K8s批任务调度能力 • 网络与磁盘IO的隔离能力 • 感知任务优先级 • Spark/Flink on K8s • Linux内核能力支持 • Task均衡调度 • 集群规模能力 • 异构硬件 • 资源管理能力 • 业务特征配置
34. 湖仓一体 BI AI 在线预估 样本和特征通过大数据批计算和流计算完成 多维分析 批计算 流计算 样本拼接 特征计算 模型训练 批存储 流存储 样本存储 特征存储 模型存储 分析型计算 分析型存储 批存储和流存储难支持直接在线分析, 需数据迁移 模型/样本数据的统一管理 核心特性 统一存储抽象 统一资源抽象 统一数据管理 核心价值 统一计算抽象 技术架构内聚 低运营成本 AI场景融合
35.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 04:21
浙ICP备14020137号-1 $Map of visitor$