常见任务调度系统对比(后续逐个介绍)
特点 | DolphinScheduler | Xxl-job | Azkaban | Airflow | Oozie |
定位 | 解决数据处理流程中错综复杂的依赖关系 | 一个轻量级分布式的任务 调度框架 | 为了解决Hadoop的任务 依赖关系问题 | 通用的批量数据处理 | 管理Hadoop作业(job)的工作流程调度 管理系统 |
任务监控支持 | 任务状态、任务类型、重试次数、任务运 行机器、可视化变量等关键信息一 目了然 | 无 | 只能看到任务状态 | 不能直观区分任务类型 | 任务状态、任务类型、任务运行机器、创建时 间、启动时间、完成时间等。 |
任务类型支持 | 支持传统的shell任务,同时支持大数据平 台任务调度:MR、Spark、SQL (mysql、postgresql、hive/sparksql)、 python | Java | Command、Hadoop- Shell、Java、HadoopJa- va、Pig、Hive等,支持插 件式扩展 | Python、Bash、HTTP、 Mysql等,支持Operator的 自定义扩展。 | 统一调度hadoop系统中常见的mr任务启动、 Java MR、Streaming MR、Pig、Hive、 Sqoop、Spark、Shell等 |
可视化流程定义 | 是 | 否 | 否 | 否 | 否 |
所有流定时操作都是可视化的,通过拖拽 来绘制DAG,配置数据源及资源,同时对 于第三方系统,提供api方式的操作。 | 可配置任务级联触发 | 通过自定义DSL绘制DAG并 打包上传 | 通过python代码来绘制 DAG,使用不便 | 配置相关的调度任务复杂,依赖关系、时间触 发、事件触发使用xml语言进行表达 | |
自定义任务类型支持 | 是 | 是(需要java先开发具体执行器) | 是 | 是 | 是 |
暂停/恢复/补数 | 支持暂停、恢复补数操作 | 支持暂停、恢复操作 | 否(只能先将工作流杀死再重新运行) | 否(只能先将工作流杀死再重新运行) | 支持启动/停止/暂停/恢复/重新运行:(Oozie支持Web,RestApi,Java API操作) |
高可用支持 | 支 持 H A | 支持HA | 通过DB支持HA | 通过DB支持HA | 通过DB支持HA |
去中心化的多Master和多Worker | 调度中心HA和执行器HA | 但 W e b Server存在单点故障 风险 | -但Scheduler存在单点故障 风险 | ||
多租户支持 | 支 持 | 否 | 否 | 否 | 否 |
dolphinscheduler上的用户可以通过租 户和hadoop用户实现多对一或一对一的 映射关系,这对大数据作业的调度是非常 重 要 。 | |||||
过载处理能力 | 任务队列机制,单个机器上可调度的任务 数量可以灵活配置,当任务过多时会缓存 在任务队列中,不会操作机器卡死 | 任务队列机制,轮询 | 任务太多时会卡死服务器 | 任务太多时会卡死服务器 | 调度任务时可能出现死锁 |
集群扩展支持 | 是 | 是 | 是 | 是 | 是 |
调度器使用分布式调度,整体的调度能力 会随集群的规模线性增长,Master和 Worker支持动态上下线 | 新注册执行器即可 | -只Executor水平扩展 | -只Executor水平扩展 |