新一代大数据任务调度平台 Apache DolphinScheduler 架构实践经验

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 新一代大数据任务调度平台 - Apache DolphinScheduler 架构实践经验 代立冬 Apache DolphinScheduler PMC Chair & Apache 孵化器导师
2.
3. • Apache DolphinScheduler 简介 • 架构演进历程 • Apache DolphinScheduler 2.0 架构优化 – 如何让性能提升 20 倍? • Apache DolphinScheduler 应用案例实践 • 云原生下的调度思考
4. 01 DolphinScheduler 介绍 DolphinScheduler 简介 研发 DolphinScheduler 的背景 DolphinScheduler 的功能一瞥
5. • Apache DolphinScheduler 简介 Apache DolphinScheduler 是一个云原生的分布式易 扩展并带有强大可视化界面的大数据工作流调度系 统。 2021 年 04 月 09 日正式成为 Apache 顶级项目。 首个由国人主导并贡献到 Apache 基金会的大数据工 作流领域的顶级项目。
6. DolphinScheduler 部分用户案例
7. 调度的痛点? 任务依赖 补数 日志 Oozie/Airflow 的任务日志不是一般人想看就看的 Why DolphinScheduler ? 来自奇安信讲师在 Meetup 上的分享
8. DolphinScheduler 功能一瞥 总览 任务执行状态回溯 工作流运行状态查看 任务执行日志查看 任务执行日志查看,方便运维实时了解任务运行状况,快速定位问题
9. DolphinScheduler 功能一瞥 2.0 以前版本
10. DolphinScheduler 功能一瞥 2.0 版本
11. 02 DolphinScheduler 架构迭 代 DolphinScheduler 1.2 架构 1.2 架构缺点 DolphinScheduler 1.3 架构 1.3 架构改进了哪些 耗时 10 个月,性能提升 20 倍的 2.0 架构都做了 些什么
12. DolphinScheduler 设计特点 高可靠性   简单易用 去中心化的多 Master 和多 Worker,  一键部署 – 简化部署,易维护 自身高可用能力  可视化 DAG 界面,所有流程定义都是可视 化,通过拖拽任务形成工作流模板 采用任务队列来避免过载,不会造成机器 卡死 丰富的使用场景  支持 Open API 方式与第三方系统对接 高扩展性、云原生能力  支持暂停恢复操作  支持自定义任务类型  支持多租户,权限管理等大数据应用场景  调度器使用分布式调度,调度能力随集群线性  支持近 20 种任务类型,如 Spark, Hive, MR, Python, Sub-Process, Shell 等 增长  弹性伸缩, Master 和 Worker 支持动态上下 线
13. DolphinScheduler 1.2 架构 MasterServer 无中心设计  MasterServer主要负责 DAG 任务切 分、任务提交监控  监听其它MasterServer和 WorkerServer的健康状态及容错处理 WorkerServer 无中心设计  WorkerServer主要负责维护任务 的生命周期  WorkerServer服务启动时向 Zookeeper注册临时节点,并维 持心跳
14. DolphinScheduler 1.2 架构不足 • • • • 1 • Master 将任务信息存放到 zk 队列中 Worker 通过分布式锁的方式 去消费任务队列,延迟了任务 开始执行的时间(经历了1-2- 3)。 • 2 • 3 • 4 • Master没有真正 意义上地去管理; Worker却做了许 多不必承担的工作 为保证性能,zk 数据节点无法 存储执行任务所需的全部信 息。因而 Worker 需要操作数 据库去获取相关信息,增加了 数据库的负担。
15. DolphinScheduler 1.3 架构
16. DolphinScheduler 1.3.x 与 1.2.x 系统运作的差异 1.3.x 架构(黑线)中 Master职能更加丰 富,Worker则更加专注于执行。 1.2.x 中 Worker不仅要主动“揽活”, 还要负责“善后”工作。 任务的执行状态要通过访问数据库才能 获得,对于那些任务复杂的工作流来 说,时效性,任务吞吐,数据库压力都 会成为调度性能的瓶颈。
17. • DolphinScheduler 1.3.x 架构待优化  Master 分布式锁,抢锁问题  Master 使用线程多的问题  频繁查询数据库问题  任务类型的易扩展性
18. 03 DolphinScheduler 2.0 耗时 10 个月,性能提升 20 倍的 2.0 架构都做了 些什么
19. 耗时 10 个月完成的 2.0 架构 高性能 - Master 重构 减少数据库轮询 去分布式锁 减少线程使用
20. 2.0 以前版本瓶颈- 分布式锁
21. 2.0 重构 - 去分布式锁尝试之 Scheduler HA
22. 2.0 重构 - 去分布式锁采用方案
23. 2.0 重构 - Master 中的线程模型 2.0 以前 Master 实现  使用一个主线程池执行所有 DAG 工作流  主线程池执行过程中为每个工作流创建一 个 任 务线程池  Master 能并发处理的工作流为 m, 并发处理的 任务为 n,会产生m * n 个线程
24. 2.0 重构 - Master 中线程池如何工作 MasterSchedulerService 负责从 Command 表中分片获取 command, 构造工作流实 例,启动 WorkFlowExecuteThread 处理 WorkFlowExecuteThread 负责构建 DAG, DAG 拆分,生成任务实例,提交到任务队列; 同时负责处理任务状态和工作流状态变化 ThreadPool API StateEventExecuteService ThreadPool 负责接收其他 Master / Worker 发过来的任务状态和工作流 状态变化事件,并提交 WorkFlowExecuteThread 状态处理 StateWheelExecuteService 负责任务/工作流 超时监控
25. DolphinScheduler 2.0 Master 端有哪些变化  大幅减少 Master 的线程使用  使用分片机制获取命令队列  增加状态事件的处理机制  增加 Master 与 Master 之间的通信  增加 Master 的缓存机制
26. 2.0 DAG 拆解
27. DolphinScheduler 2.0 Master 运行流程
28. 改造后的 2.0 架构效果 – 吞吐 20 倍提升 Master:100 threads Worker:100 threads
29. 2.0 新增可扩展能力 所有扩展点都采用插件化实现 Service Provide Interface, 简称SPI SPI 优点 1、SPI 设计保持简洁 2、不依赖过多第三方 JAR 3、各个插件保持独立 可扩展的地方 • • 告警 SPI • 注册中心 SPI • 资源存储 SPI • 任务插件 SPI • 数据源 SPI Waterdrop
30. 告警插件 Email DingTalk Feishu Http Script …
31. 2.0 跨集群、跨机房调度  多种环境变量配置  环境变量和任务绑定  WorkerGroup 适配环境变量
32. 2.0 功能新增主要 Feature • 任务结果参数传递 • 工作流间的血缘关系,如右图 • 增加数据同步组件 Waterdrop、多分支等任务组件能力支持 • 工作流定义和任务关系拆分,更易通过 open API 生成工作流 • 添加工作流版本控制,如下图
33. 体验版极速部署 • 只需要 2 步即可体验 • 1、安装 JDK • 2、sudo 用户一键启动 • sh ./bin/dolphinscheduler-daemon.sh start standalone-server
34. 04 用户实践案例 社区用户案例
35. DolphinScheduler 在联通的大规模应用实践 •    目的:集中调度 Spark、Hive、MR job、存储过程、Shell 等资源,支撑 跨系统、跨应用、跨语言的作业任务协同执行,实现调度全局化、透明化 复杂多样的作业定义与调度策略:包括父子流程、并行、串行、依赖、和干涉等方式 资源负载均衡,实现高效调度:按资源对任务调度分组、并发控制、优先级动态调整 一天数十万任务量级调度,对稳定性要求极高
36. 联通 2020 年技术选型 重点调研过的产品: 存在的问题 是否适合原调度替换基座框架 Oozie 1.配置工作流的过程是编写大量的xml 语言配置,社区活跃度低 不适合 2.代码复杂度比较高,不易于二次开 发 Azkaban 1.创建 job 需要手动完成固定格式文 件 2.任务执行中信息存储在内存中并没 有持久化,所以一旦失败会丢失所有 工作流。 Airflow Dolphinscheduler 重点讨论 不适合
37. 联通技术选型 Airflow DolphinScheduler 二开成本 Python 开发成本较高 Java,流程清晰,代码简洁,成本相对较低 社区活跃度 比较活跃 比较活跃 集群扩展 需重启 Worker 节点 单点故障 主从模式,存在一定的单点风险 多 Master 多 Worker,注册 Zookeeper,一个节 点挂了不影响其他节点 过载处理 任务量大,调度的性能会急剧下降,甚至卡死服务器 任务过多会依靠队列排队 作业编排 流程定义需要编写 Python 脚本 支持任务拖拽配置,本土化亮点突出,用户交互友 好 节点类型 可随时在 ZK 中注册和删除 Master、Worker, 操作简单,稳定向高,可扩展性强 BashOperator、PythonOperator、SSHOperator、 Shell节点、子流程节点、存储过程、SQL节点、 HiveOperator,DockerOperator,OracleOperator, Spark节点、MR、Python节点、依赖节点、HTTP MysqlOperator,DummyOperator,SimpleHttpOperator、 节点、自定义节点 自定义节点 暂停与重跑 否 支持暂停流程、支持任意节点重跑 全局变量 支持全局变量,项目内所有流程可见,缺乏变量权限控制 暂不支持(注:联通已贡献给社区)
38. • 联通技术选型结果 - DolphinScheduler
39. DolphinScheduler 在 T3 出行数据湖建设中的实践 • T3 2019 年在建设数据湖时,从易用性、社区活跃度、可拓展性、与 Hadoop 生态圈集成以及维护成本几个维度进行了调研对比 Oozie 易用性 一般 社区活跃度 中 可扩展性 hadoop集成 维护代价 一般 Azkaban 较好 Airflow 较好 中 高 Dolphin 好 活跃 一般 高 深入 一般 一般 高 中 中 调度系统对比表 活跃 深入 低
40. DolphinScheduler 在 T3 出行数据湖建设中的实践 • • • • • 流式 消费 低延迟的数据摄入 Hudi 与 Spark 解耦 支持 Flink 引擎流式写入 • 流式 生产 调度 加工 • • • • 高效快速的数据加工 写 commit 通知 调度集成 摘自Apache Hudi PMC 杨华/赵玉威同学分享:T3出行在数据湖上进行准实时分析 查询 分析 • • • 低延迟的交互式查询分析 Zeppelin 集成 Alluxio 加速
41. 05 云原生下的调度方向 Roadmap 云原生下如何发展 DolphinScheduler 发展历程 参与开源有啥用
42. Roadmap(近期) 任务并行度控制 任务列表配置 任务全局优先级 血缘分析智能生成 DAG 优化文档结构 SDK 开发 • 如果对 Roadmap 有更多建议,欢迎讨论
43. Roadmap (长期) • 毫秒级超低延迟 • 更高的调度吞吐量 • 智能化
44. 云原生时代 – 调度的方向 容器调度 任务 去 ZK 多云的能 力 弹性伸缩、 任务隔离 易扩展、 高性能
45. DolphinScheduler 项目发展历程 DolphinScheduler 架构设计 决定开源 花了2个月进行重构 升级 1.0.1、1.0.2、1.0.3 相继推出1.0.1、 1.0.2、1.0.3版本 Apache第一个版本 1.2.0 2019.02 2019.05 2019.12 2017.12 • • 2018.05 内部使用 千帆产品线使用 2019.03 外部种子用户使用 3月30号正式对外开 源 – 1.0.0版本 2019.08 进入apache孵化 器 … 1. Apache 顶级项目 3. 2021.04.09 4 、 1. 3. 5
46. 为什么要参与开源 技术能力提升 成就感、自信心 个人影响力、 个人晋升 1 2 开源 3 丰富简历,利于找工作 4 5 6 结交高手、提高交流技巧 创新
47. 参与开源贡献的方式 Apache DolphinScheduler 社区参与贡献的方式,包括: 文档 翻译 答疑 测试 代码 实践文章、原理文章等 DolphinScheduler 开源社区非常期待您的参与 - 中国开源崛起 会议分享等
48. DolphinScheduler 2020 年荣誉
49.
50. DolphinScheduler 资源  开源地址: https://github.com/apache/dolphinscheduler  公众号 : 海豚调度  Twitter: @dolphinschedule  Slack workspace: https://s.apache.org/dolphinscheduler-slack

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