DolphinScheduler
定义:分布式易扩展的可视化工作流任务调度平台
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
架构图:
master
master 采用分布式无中心设计理念,master 主要负责 DAG 任务切分、任务提交监控,并同时监听其它 master 和 worker 的健康状态。
master 服务启动时向 Zookeeper 注册临时节点,通过监听 Zookeeper 临时节点变化来进行容错处理。
该服务内主要包含:
- Distributed Quartz 分布式调度组件,主要负责定时任务的启停操作,当 quartz 调起任务后,Master 内部会有线程池具体负责处理任务的后续操作
- MasterSchedulerThread 是一个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进行不同的业务操作
- MasterExecThread 主要是负责 DAG 任务切分、任务提交监控、各种不同命令类型的逻辑处理
- MasterTaskExecThread 主要负责任务的持久化
worker
worker 也采用分布式无中心设计理念,worker 主要负责任务的执行和提供日志服务。worker 服务启动时向 Zookeeper 注册临时节点,并维持心跳。
该服务包含:
- FetchTaskThread 主要负责不断从 Task Queue 中领取任务,并根据不同任务类型调用 TaskScheduleThread 对应执行器。
- LoggerServer 是一个 RPC 服务,提供日志分片查看、刷新和下载等功能
特性一览
- 高可靠性
去中心化的多Master和多Worker服务对等架构, 避免单Master压力过大,另外采用任务缓冲队列来避免过载
- 简单易用
DAG监控界面,所有流程定义都是可视化,通过拖拽任务完成定制DAG,通过API方式与第三方系统集成, 一键部署
- 丰富的使用场景
支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供Spark, Hive, M/R, Python, Sub_process, Shell等近20种任务类型
- 高扩展性
支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线
Apache DolphinScheduler 能力
- 以 DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
- 支持丰富的任务类型:Shell、MR、Spark、Flink、SQL(mysql、postgresql、hive、sparksql)、Python、Http、Sub_Process、Procedure 等
- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作
- 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
- 支持工作流全局参数及节点自定义参数设置
- 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
- 支持任务日志在线查看及滚动、在线下载日志等
- 实现集群 HA,通过 Zookeeper 实现 Master 集群和 Worker 集群去中心化
- 支持对
Master/Worker
cpu load,memory,cpu 在线查看 - 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
- 支持补数
- 支持多租户
- 支持国际化