初识DolphinScheduler

184 阅读5分钟

DolphineScheduler是国产的、分布式的、DAG工作流任务调度开源系统,致力于解决数据处理流程中的依赖关系。在官方网页介绍中,DophineScheduler可提供超过30+类型的任务

image.png

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. 架构

image.png

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资源目录

参考

【1】DolphineScheduler简介

【2】DolphineScheduler架构

【3】DolphineScheduler配置

【4】DolphineScheduler模块