- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache DolphinScheduler 2.0介绍
代立冬-Apache DolphinScheduler PMC Chair & Apache孵化导师
展开查看详情
1 .
2 .Apache DolphinScheduler 2.0 代立冬 Apache DolphinScheduler PMC Chair Apache 孵化器导师 2
3 .分享内容 01 项目介绍 02 要解决的问题 03 发展现状 04 优势与特性 05 2.0 新特性 06 用户案例 07 发展路线 08 相关资源
4 . PART 1 DolphinScheduler 介绍
5 .Apache DolphinScheduler 简介 Apache DolphinScheduler 是一个分布式、易扩展并 带有强大的可视化界面的大数据工作流调度系统。 2021 年 04 月 09 日正式成为 Apache 顶级项目。 首个由国人主导并贡献到 Apache 基金会的大数据工作 流领域的顶级项目。 已累计有 400+ 公司在生产上使用。 DolphinScheduler 致力于在数据工作流编排中“解决 复杂的大数据任务依赖及触发关系,让各种大数据任务 类型开箱即用”。
6 .PART 2 痛点
7 .Apache DolphinScheduler 起源 – 痛点 01 可视化DAG 04 简单易操作 依赖 实时查看运行状态 任务自依赖 每天数万任务运行 流程依赖等 02 调用高可用 流程可容错能力 05 任务日志/告警机制 失败重试、回滚、转移 便于排错、提醒 简单可维护 03 06 补 丰富的任务类型 数 重刷历史数据 跨语言 自定义插件机制
8 . PART 3 用户及社区现状
9 .DolphinScheduler 部分用户案例(排名不分先后)
10 .DolphinScheduler 社区建设情况 Apache 组织崇尚 “社区大于代码” EBay 头条 阿里 腾讯 京东 代码贡献者 滴滴 华为 平安 360 快手 小米 陌陌 观远 多点 同程 中移动 趣加 荔枝 贡献者公司分布 文档贡献者
11 . PART 4 优势与特性 2021/10/21 11
12 .优势 高可靠性 简单易用 ⚫ 一键部署 – 简化部署,易维护 ⚫ 去中心化的多 Master 和多 Worker, ⚫ 可视化 DAG 界面,所有流程定义都是 自身高可用能力 可视化,通过拖拽任务形成工作流模板 ⚫ 采用任务队列来避免过载,不会造 ⚫ 支持 Open API 方式与第三方系统对 成机器卡死 接 丰富的使用场景 高扩展性、云原生能力 ⚫ 支持暂停恢复操作 ⚫ 支持自定义任务类型 ⚫ 支持多租户,权限管理等大数据应用场景 ⚫ 调度器使用分布式调度,调度能力随集 ⚫ 支持近 20 种任务类型,如 Spark, Hive, MR, 群线性增长 Python, Sub-Process, Shell 等 ⚫ 弹性伸缩, Master 和 Worker 支持动 态上下线
13 .Apache DolphinScheduler 调度系统主要能力 • 支持Shell、MR、 • 工作流优先级、任务 • 工作流可定时、依赖、 • Task以DAG形式关 优先级,全局参数及 Spark、SQL、依赖 手动、暂停/停止/恢 联,实时监控任务的 局部自定义参数 等10多种任务类型。 复 状态。 • 支持补数、多租户、 • 完善的系统服务监控, • 去中心化设计确保系 • 支持每日千万量级任 统的稳定、高可用。 务稳定运行 日志在线查看及资源 任务超时告警/失败。 在线管理
14 .工作流运行过程可视化
15 . PART 5 2.0 新特性 2021/10/21 15
16 . DolphinScheduler 2.0 新架构 接 调用 务 、 、 、容 ✓ Master 重构 错、分布式 调用 ✓ 减少数据库轮询 ✓ 去分布式 分, 任务状态 ✓ 大幅减少线程使用 务 、 、
17 .1.3 版本 - 分布式锁
18 .2.0 版本 – 去分布式锁
19 .DolphinScheduler 2.0 新 UI
20 .DolphinScheduler 2.0 - DAG 大 JSON 拆解 拆分前 ✓ 工作流中所有任务在一个 JSON,工作流很大 JSON 急剧膨胀,耗性能 ✓ API 拼装十分费劲 ✓ 任务很难重用 ✓ 工作流/任务版本新需求实现费劲 ✓ 工作流定义表、任务定义表、任务关系表 工作流定义表:描述工作流的基本信息,比如全局参数、DAG 中节点的位置信息 任务定义表:描述任务的详情信息,比如任务类别、任务容错信息、优先级等 任务关系表:描述任务的关系信息,比如当前节点、前置节点等
21 .2.0 新增扩展能力 • 目前的10多种任务类型可能不能满足需求 解决办法: 任务插件化 数据同步任务 SQL任务 存储过程任务 数据质量 KETTLE任务 业务任务1 ...... 业务任务N
22 .2.0 新增能力 所有扩展点都采用插件化实现 • SPI • 中 SPI • 资源存储 SPI • 任务插件 SPI • 数据源 SPI •…… Waterdro p
23 .2.0 新增主要 Feature • 任务结果参数传递 • 工作流间的关系,如右图 • 增加数据同步组件 Waterdrop、多分支等任务 组件能力支持 • 工作流定义和任务关系拆分,更易通过 open API 生成工作流 • 添加工作流版本 制,如下图
24 . PART 6 用户案例 2021/10/21 24
25 .DolphinScheduler 在联通的大规模应用实践 目的:集中调度Spark、Hive、Pig、MR job、存储过程、Shell 等资源,支撑跨系统、跨 应用、跨语言的作业任务协同执行,实现调度全局化、透明化 ⚫ 复杂多样的作业定义与调度策略:包括父子流程、并行、串行、依赖、和干涉等方式 ⚫ 资源负载均衡,实现高效调度:按资源对任务调度分组、并发控制、优先级动态调整 ⚫ 一天数十万任务量级调度,对稳定性要求极高
26 .DolphinScheduler在联通的大规模实践 – 技术选型 重点调研过的产品: 存在的问题 是否适合原调度替换基座框架 Oozie 1.配置工作流的过程是编写大量的xml 不适合 语言配置,社区活跃度低 2.代码复杂度比较高,不易于二次开发 Azkaban 1.创建job需要手动完成固定格式文件 不适合 2.任务执行中信息存储在内存中并没有 持久化,所以一旦失败会丢失所有工 作流。 Airflow 重点讨论 Dolphinscheduler
27 .联通做的技术选型 – 技术对比 Airflow DolphinScheduler 二开成本 Python 开发成本较高 Java,流程清晰,代码简洁,成本相对较低 社区活跃度 比较活跃 比较活跃 集群扩展 需重启 Worker 节点 可随时在 ZK 中 和删除 Master、Worker , 操作简单,稳定向高,可扩展性强 单点故障 主从模式,存在一定的单点风险 多 Master 多 Worker, Zookeeper,一个 节点挂了不影响其他节点 过载处理 任务量大,调度的性能会急剧下降,甚至卡死 务器 任务过多会依靠队列排队 作业编排 流程定义需要编写 Python 脚本 支持任务拖拽配置,本土化亮点突出,用户交互 友好 节点类型 BashOperator、PythonOperator、SSHOperator、 Shell节点、子流程节点、存储过程、SQL节点、 HiveOperator,DockerOperator,OracleOperator, Spark节点、MR、Python节点、依赖节点、 MysqlOperator,DummyOperator, HTTP节点、自定义节点 SimpleHttpOperator、自定义节点 暂停与重跑 否 支持暂停流程、支持任意节点重跑 全局变量 支持全局变量,项目内所有流程可见,缺乏变量权限 制 暂不支持
28 .联通框架选型结果 - Dolphinscheduler
29 .DolphinScheduler 在奇安信的实践 简单、易用、可靠、扩展型强… 任务失败重试/告警 资源文件的在线上传,管理 你想重试几次 每次间隔多久 jar 包不怕丢 失败要不要发邮件告诉你? 实现集群高可用 各种复杂调度 集群去中心化 定时调度、依赖 调度、手动调度 丰富的任务类型 支持多租户 spark shell MR 咱俩不能用一个账号 HIVE python… 可视化 拖拽生成 DAG 分布式易扩展 权限管理 无单点问题、资源不 我只能访问授权的 够了要扩容 项目和资源