DolphineScheduler是国产的、分布式的、DAG工作流任务调度开源系统,致力于解决数据处理流程中的依赖关系。在官方网页介绍中,DophineScheduler可提供超过30+类型的任务
1. 特性
- 简单易用:可视化DAG、模块化操作
- 丰富场景:支持多种任务类型、多样工作流操作
- 高可靠性:去中心化设计、原生HA任务队列支持
- 高扩展性:支持多租户和在线资源管理
2. 模块
DophineScheduler模块包括:
- dolphinscheduler-master: 提供工作流管理和编排服务
- dolphinscheduler-worker: 提供任务执行管理服务
- dolphinscheduler-alert: 告警模块,提供AlertServer服务
- dolphinscheduler-api: web应用模块,提供ApiServer服务
- dolphinscheduler-common: 通用模块,提供常量枚举、工具、数据结构和基类
- dolphinscheduler-dao: 提供数据库访问操作
- dolphinscheduler-remote: 基于netty的客户端、服务端
- dolphinscheduler-service: service模块,包括Quartz、zookeeper、日志客户端访问服务
- dolphinscheduler-ui: 前端模块
3. 架构
1)MasterServer
主要负责DAG任务切分、任务提交监控,并监听其他MasterServer、WorkerServer的健康状况
- DistributedQuartz: 负责定时任务的启停操作
- MasterSchedulerService: 扫描线程,定时扫描数据表t_ds_command
- WorkflowExecuteRunnable: 负责DAG任务切分、任务提交监控
- TaskExecuteRunnable: 负责任务处理和持久化,并生成任务事件提交到事件队列
- EventExecuteService: 负责事件队列的轮询
- StateWheelExecuteThread: 负责工作流、任务超时、任务重试、任务依赖的轮询,并生成对应工作流或任务事件提交到事件队列
- FailoverExecuteThread: 负责Master容错和Worker容错
2)WorkerServer
主要负责任务的执行和提供日志服务
- WorkerManagerThread: 负责任务队列提交,不断领取任务,提交线程池处理
- TaskExecuteThread: 负责任务执行流程
- RetryReportTaskStatusThread: 负责定时轮询向Master汇报任务状态
3)Zookeeper
MasterServer和WorkerServer通过ZK进行集群管理和容错。 系统也基于Zookeeper进行事件监听和实现分布式锁。
4)AlertServer
提供告警服务,可以插件实现
5)ApiServer
API接口层,负责处理UI层请求
6)UI
提供可视化操作界面
4. 目录
DolphinScheduler目录结构
├── LICENSE
│
├── NOTICE
│
├── licenses licenses存放目录
│
├── bin DolphinScheduler命令和环境变量配置存放目录
│ ├── dolphinscheduler-daemon.sh 启动/关闭DolphinScheduler服务脚本
│ ├── env 环境变量配置存放目录
│ │ ├── dolphinscheduler_env.sh 当使用`dolphinscheduler-daemon.sh`脚本起停服务时,运行此脚本加载环境变量配置文件 [如:JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
│ │ └── install_env.sh 当使用`install.sh` `start-all.sh` `stop-all.sh` `status-all.sh`脚本时,运行此脚本为DolphinScheduler安装加载环境变量配置
│ ├── install.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本自动安装服务
│ ├── remove-zk-node.sh 清理zookeeper缓存文件脚本
│ ├── scp-hosts.sh 安装文件传输脚本
│ ├── start-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本启动所有服务
│ ├── status-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本获取所有服务状态
│ └── stop-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本终止所有服务
│
├── alert-server DolphinScheduler alert-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler alert-server启动脚本
│ ├── conf
│ │ ├── application.yaml alert-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh alert-server环境变量配置加载脚本
│ │ └── logback-spring.xml alert-service日志配置文件
│ └── libs alert-server依赖jar包存放目录
│
├── api-server DolphinScheduler api-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler api-server启动脚本
│ ├── conf
│ │ ├── application.yaml api-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh api-server环境变量配置加载脚本
│ │ └── logback-spring.xml api-service日志配置文件
│ ├── libs api-server依赖jar包存放目录
│ └── ui api-server相关前端WEB资源存放目录
│
├── master-server DolphinScheduler master-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler master-server启动脚本
│ ├── conf
│ │ ├── application.yaml master-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh master-server环境变量配置加载脚本
│ │ └── logback-spring.xml master-service日志配置文件
│ └── libs master-server依赖jar包存放目录
│
├── standalone-server DolphinScheduler standalone-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler standalone-server启动脚本
│ ├── conf
│ │ ├── application.yaml standalone-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh standalone-server环境变量配置加载脚本
│ │ ├── logback-spring.xml standalone-service日志配置文件
│ │ └── sql DolphinScheduler元数据创建/升级sql文件
│ ├── libs standalone-server依赖jar包存放目录
│ └── ui standalone-server相关前端WEB资源存放目录
│
├── tools DolphinScheduler元数据工具命令、配置和依赖存放目录
│ ├── bin
│ │ └── upgrade-schema.sh DolphinScheduler元数据创建/升级脚本
│ ├── conf
│ │ ├── application.yaml 元数据工具配置文件
│ │ └── common.properties 公共服务(存储等信息)配置文件
│ ├── libs 元数据工具依赖jar包存放目录
│ └── sql DolphinScheduler元数据创建/升级sql文件
│
├── worker-server DolphinScheduler worker-server命令、配置和依赖存放目录
│ ├── bin
│ │ └── start.sh DolphinScheduler worker-server启动脚本
│ ├── conf
│ │ ├── application.yaml worker-server配置文件
│ │ ├── bootstrap.yaml Spring Cloud 启动阶段配置文件, 通常不需要修改
│ │ ├── common.properties 公共服务(存储等信息)配置文件
│ │ ├── dolphinscheduler_env.sh worker-server环境变量配置加载脚本
│ │ └── logback-spring.xml worker-service日志配置文件
│ └── libs worker-server依赖jar包存放目录
│
└── ui 前端WEB资源目录