网易大数据海量任务调度和智能运维实践
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 大数据海量任务调度和智能运维实践
分享人:陈苏安
网易资深研发工程师,2018年加入网易有数团队,先后深度参与并主导任务调
度系统、任务运维中心等服务的架构建设与改造升级工作。
3. • 网易有数为什么要选择 Azkaban
• 针对开源 Azkaban 做了哪些优化
• 智能任务运维中心系统介绍
4. Azkaban 介绍
Azkaban 是 LinkedIn 公司于 2012 年开源
的工作流调度引擎。
⺴易于 2015 年开始使用 Azkaban 作为大
数据平台的工作流调度引擎。
日均调度总量 50W+,全年可用率 99.9%
5. Azkaban 优劣势对比
• 社区较为活跃 • Web、Executor 存在单点问题
• 友好的用户界面 • 部署复杂、缺乏监控、升级困难
• 执行服务器水平扩容 • 工作流之间无法相互依赖
• 支持插件扩展 • 工作流报警方式单一
• 实例运维能力差,无法满足运维需求
6. • 网易有数为什么要选择 Azkaban
• 针对开源 Azkaban 做了哪些优化
• 智能任务运维中心系统介绍
7. Web High Availability
参考 HDFS 的 HA 机制,新增 ZkFC 进
行,实现 Azkaban Web 高可用方案。
Azkaban Web 存在 Active 与 StandBy 两
种状态,仅处于 Active 状态的 Azkaban
Web 才触发调度实例的逻辑。
8. Executor High Availability
宕机场景下实例重新下发
实例下发阶段幂等性
9. 部署、监控方案
通过自研 EasyOps 系统,利用 Agent
实现快速部署、扩容
EasyOps 通过 Agent 采集服务的
mertic 信息,然后汇聚到 Server 端
进行 mertic 信息展示、报警监控。
10. Executor 滚动升级方案
滚动升级步骤:
1. 将 Executor 服务置为退役状态
2. 等待 Executor 服务上实例运行完毕
3. 升级 Executor 服务到指定版本
4. 将 Executor 服务置为工作状态
11. 工作流相互依赖方案
支持两种工作流依赖方式:
• 工作流依赖节点
• 节点依赖节点
12. 报警解耦、优化方案
报警类型:失败报警、超时报
警、数据质量报警
接收方式:具体接收人、任务
负责人、项目报警组、项目值
班组
基于事件的报警实现
13. • 网易有数为什么要选择 Azkaban
• 针对开源 Azkaban 做了哪些优化
• 智能任务运维中心系统介绍
14. 任务运维中心数据流向图
复杂 blob 字段类型
多个表的简单字段
基于最新数据进行预
测、监控、统计
15. 预计完成时间推算模型
依赖打平前
依赖打平后
16. 预计完成时间推算模型
当前节点预计运行时长 = Avg(近14天运行时长)
当前节点预计完成时间 =
Max(上游预计完成时间) + 预计运行时长
依赖打平后
17. 实例运行概况(大盘)
宏观展示项目下所有任务产出进度
18. 基线运维
提前预警、提前解决、将事故扼杀在摇篮中
19. 关键链路
寻找任务链路瓶颈、优化关键任务、保障数据按时产出
20. 产出影响
将任务血缘、数据血缘进行打通,评估任务产出影响
21. 冻结池、加速器
冻结池:用于大规模数据错误恢复
加速器:优先保障核心任务产出
22.