- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
新一代大数据任务调度Apache DolphinScheduler的架构突破之路
Apache DolphinScheduler 2.0 新架构在社区已经讨论了一个多月,本视频会分享 DolphinScheduler 的架构变迁和 2.0 新方案规划。同时也分享 Apache 之道及以 DolphinScheduler 为例,如何做好一个开源项目,个人为什么要参与开源、如何参与开源等内容
展开查看详情
1 . 新一代大数据任务调度 - Apache DolphinScheduler (incubator) 架构突破之路 演讲人:代立冬 Apache DolphinScheduler PPMC & Committer
2 . 目 录 / CONTENTS 02 04 架构突破之路 如何做好开源项目 01 03 DolphinScheudler 介绍 Roadmap & 用户案例 - 2.0 架构规划
3 .01 DolphinScheduler 介绍 EXECUTION
4 . Apache DolphinScheduler 简介 Apache DolphinScheduler 于 17 年在易观数科立 项, 19 年 3 月开源,8 月进入 Apache 孵化器, 已累计有 400+ 公司在生产上使用。 DolphinScheduler 致力于“解决大数据任务之间错 综复杂的依赖关系,使整个数据处理流程直观可见”。 DolphinScheduler 以 DAG(有向无环图) 的方式将任 务连接起来,可实时监控任务的运行状态,同时支持 重试、从指定节点恢复失败、暂停及 Kill任务等操作
5 .Apache DolphinScheduler 部分用户 (排名不分先后)
6 . Apache DolphinScheduler 社区建设情况 Apache 组织崇尚 “社区大于代码” 易观 头条 阿里 腾讯 京东 滴滴 华为 平安 360 代码贡献者 快手 小米 陌陌 观远 多点 同程 中移动 百度 荔枝 贡献者公司分布 文档贡献者
7 . 研发 Apache DolphinScheduler 的背景 01 可视化DAG 04 简单易操作 依赖 实时查看运行状态 任务自依赖 流程依赖等 02 调用高可用 流程可容错能力 05 任务日志/告警机制 失败重试、回滚、转移 便于排错、提醒 简单易维护 03 06 补数 丰富的任务类型 重刷历史数据 跨语言 自定义插件机制
8 . Apache DolphinScheduler 调度系统优势 高可靠性 简单易用 去中心化的多Master和多Worker, DAG 监控界面,所有流程定义都是可视化, 自身支持HA功能, 采用任务队列来避 通过拖拽任务定制DAG,通过API方式与第 免过载,不会造成机器卡死 三方系统对接, 一键部署 丰富的使用场景 高扩展性 支持暂停恢复操作. 支持多租户,更好 支持自定义任务类型,调度器使用分布式调度, 的应对大数据的使用场景. 支持更多的 调度能力随集群线性增长,Master和Worker支 任务类型,如 spark, hive, mr, python, 持动态上下线 sub_process, shell
9 . Apache DolphinScheduler 调度系统主要能力 • Task以DAG形式关 • 支持Shell、MR、 • 工作流优先级、任 • 工作流可定时、依 务优先级,全局参 联,实时监控任务 Spark、SQL、依赖 数及局部自定义参 赖、手动、暂停/停 数 的状态 等10多种任务类型 止/恢复 • 支持补数、多租户、 • 完善的系统服务监 • 去中心化设计确保 • 支持每日十万数据 系统的稳定、高可 量级任务稳定运行 日志在线查看及资 控,任务超时告警/ 用 源在线管理 失败
10 .Apache DolphinScheduler 可视化流程
11 . 任务管理:任务状态多粒度监控 数据加工平台任务监控总览 流程实例状态查看 任务执行状态回溯 任务执行日志查看 任务执行日志查看,方便运维实时了解任务运行状况,快速定位问题
12 . K8S 支持 云原生是趋势 优点: 弹性伸缩 充分利用服务器资源 环境隔离
13 .02 架构突破之路 EXECUTION
14 . DolphinScheduler 1.2 架构 MasterServer 无中心设计 MasterServer主要负责 DAG 任务 切分、任务提交监控 监听其它MasterServer和 WorkerServer的健康状态及容错处 理 WorkerServer 无中心设计 WorkerServer主要负责维护任务的 生命周期 WorkerServer服务启动时向 Zookeeper注册临时节点,并维持心 跳
15 . DolphinScheduler 1.2 架构不足 Master将任务信息存放到 zk队列中,由 Worker通过分布式锁的方式去消费任务队 列,延迟了任务开始执行的时间(经历了1- 2-3)。 1 Master没有真正意义上 地去管理; 2 Worker却做了许多不必 承担的工作 3 为保证性能,zk的数据节点无法存储执行 4 任务所需的全部信息。因而Worker需要操 作数据库去获取相关信息,增加了数据库 的负担。
16 .DolphinScheduler 1.3.x 架构 数据库减压,减少极端情况下的 可能造成的调度延时 • Worker去数据库操作,只负 责任务的运行,职责更单一 • Master和Worker直接通信进 行任务分配,降低延时 Master多种策略分发任务 - Worker节点负载均衡策略: 随机、循环及CPU和内存的线 性加权负载均衡
17 .DolphinScheduler 1.3.x 与 1.2.x 系统运作的差异 1.3.x 架构(黑线)中 Master职能更 加丰富,Worker则更加专注于执行。 1.2.x 中 Worker不仅要主动“揽 活”,还要负责“善后”工作。 任务的执行状态要通过访问数据库 才能获得,对于那些任务复杂的工 作流来说,时效性,任务吞吐,数 据库压力都会成为调度性能的瓶颈。
18 .DolphinScheduler 1.3.x 细节- 引 Netty 实现Master与Worker的直接通信 Master 与 Worker 间的通信信 息被封装成不同的 Event 实例, 由 Master 的 EventQueue 统 一管理 Event实例在pipeline中流转, Master与Worker在各自的 Netty 服务端与客户端之间完成 了直接通信
19 . Worker 服务容错设计 Worker容错主要是是kill任务,任务在其他机器上重新提交
20 .03 Roadmap & 用户案例 - 2.0 架构规划 EXECUTION
21 . Roadmap – 2.0 架构规划 高性能 - Master 重构 减少数据库轮询 去分布式锁 减少线程使用
22 . Roadmap – 2.0 架构规划 2.0 架构进一步提升性能和扩展性 减少数据库轮询、去分布式锁,新增Scheduler(HA) API 直接与Master通信
23 . Roadmap – 2.0 架构规划 2.0 架构进一步提升性能和扩展性 Master 与 Master 通信,Master 内部减少线程使用 Master执行完工作流/任务,发送结果给别的 Master(检查是否需要),依赖和子工作流需要 Master内部用一个轮询线程,负责轮询其负责的所有工作流的状态。
24 . Roadmap – 2.0 架构规划 2.0 架构进一步提升性能和扩展性 Service Provide Interface, 简称 SPI SPI 优点 1、邮件告警 SPI 化 ,新增短信告警、脚本回调告警实现(doing) 1、SPI 设计保持简洁 2、不依赖过多第三方 JAR 2、注册中心 SPI 化,支持 Etcd、Zookeeper等注册中心 3、各个插件保持独立 3、资源存储 SPI 化,HDFS、各种云等存储 缺点 4、全局队列 SPI 化,支持 Redis、Zookeeper等充当任务队列 可能会存在些冗余代码的存在 5、任务插件 SPI 化,支持扩展任务类型 6、日志存储 SPI 化(优先级低)
25 . Roadmap - 2.0 架构规划 • 支持更多数据组件集成 解决办法: 目前的10多种任务类型可能不能满足需求 任务插件化 热插拔 数据同步任务 SQL任务 存储过程任务 数据质量 KETTLE任务 业务任务1 ...... 业务任务N
26 . Roadmap – 功能规划 任务结果参数传递 任务并发数控制 列表依赖 工作流版本管理 (done) 有个任务队列设置的页面, 页面爆炸 这个页面可以设置多个队列, 只关注自己相关的任务 每个队列里可以设置任务并 发数,每个任务可以指定他 所属的队列
27 . DolphinScheduler 在易观千帆中的应用 易观千帆是一款 App 对标 分析产品。 千帆是每天需要处理数百亿 条数据,月活 6.2亿,6.8 PB 的大数据集群经过每天 上万个任务 ETL 处理加工 而产生的 SaaS 服务应用。 2018年开始使用 DolphinScheduler 来调度 整个 ETL 过程。 右图是其中一条工作流
28 . DolphinScheduler 在360奇安信的应用 任务失败重试/告警 你想重试几次 每次间隔多 久 失败要不要发邮件告诉 5 你? 各种复杂调度 4 资源文件的在线上传,管理 定时调度、依赖调度、手动 调度 6 jar 包不怕丢 3 7 丰富的任务类型 实现集群高可用 spark shell MR HIVE 集群去中心化 python… 工作流 可视化 拖拽生成 DAG 2 8 支持多租户 咱俩不能用一个账号 分布式易扩展 无单点问题 1 9 权限管理 我只能访问授权的项目和资 资源不够了要扩容 源 Why DolphinScheduler ?
29 . DolphinScheduler 在优路科技的应用 在使用 Airflow 的过程中,出现过以下问题: 1)、部署及集群扩容相较于复杂及麻烦; 2)、通过 Python 代码绘制 DAG,当任务数及依赖增多后,不便于维护; 3)、当任务量多的时,容易造成卡死。 万年历 那么 DolphinScheduler 的出现解决了优路的哪些问题呢? 1)、部署及集群扩容简单,本身我司也对 DolphinScheduler 做了一定的定制化; 2)、流程可视化,并且可以通过拖拽的方式来绘制 DAG;