1.简介
简介来自官方文档,进行简单整理:
一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。
旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
1.1 特性
- 可视化 DAG: 用户友好的,通过拖拽定义工作流的,运行时控制工具
- 模块化操作: 模块化有助于轻松定制和维护。
- 支持多种任务类型: 支持Shell、MR、Spark、SQL等10余种任务类型,支持跨语言,易于扩展
- 丰富的工作流操作: 工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。
- 高可靠性: 去中心化设计,确保稳定性。 原生 HA 任务队列支持,提供过载容错能力。 能提供高度稳健的环境。
- 高扩展性: 支持多租户和在线资源管理。支持每天10万个数据任务的稳定运行。
1.2 建议配置
作为一款开源分布式工作流任务调度系统,可以很好地部署和运行在 Intel 架构服务器及主流虚拟化环境下,并支持主流的Linux操作系统环境
1.2.1 Linux 操作系统版本要求
操作系统 | 版本 |
Red Hat Enterprise Linux | 7.0 及以上 |
CentOS | 7.0 及以上 |
Oracle Enterprise Linux | 7.0 及以上 |
Ubuntu LTS | 16.04 及以上 |
注意: 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上
1.2.2 服务器建议配置
DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:
CPU | 内存 | 硬盘类型 | 网络 | 实例数量 |
4核+ | 8 GB+ | SAS | 千兆网卡 | 1+ |
注意: 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置;硬盘大小配置建议 50GB+ ,系统盘和数据盘分开。
1.2.3 网络要求
DolphinScheduler正常运行提供如下的网络端口配置:
组件 | 默认端口 | 说明 |
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
注意: MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可;管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口。
1.2.4 客户端 Web 浏览器要求
DolphinScheduler 推荐 Chrome 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面。
1.3 名词解释
- DAG:全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。
- 流程定义:通过拖拽任务节点并建立任务节点的关联所形成的可视化DAG
- 流程实例:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成。每运行一次流程定义,产生一个流程实例
- 任务实例:任务实例是流程定义中任务节点的实例化,标识着某个具体的任务
- 任务类型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中 SUB_PROCESS类型的任务需要关联另外一个流程定义,被关联的流程定义是可以单独启动执行的
- 调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。 其中 恢复被容错的工作流 和 恢复等待线程 两种命令类型是由调度内部控制使用,外部无法调用
- 定时调度:系统采用 quartz 分布式调度器,并同时支持cron表达式可视化的生成
- 依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,支持流程间的自定义任务依赖
- 优先级:支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出
- 邮件告警:支持 SQL任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知
- 失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束
- 补数:补历史数据,支持区间并行和串行两种补数方式,其日期选择方式包括日期范围和日期枚举两种
1.4 模块介绍
- dolphinscheduler-master master模块,提供工作流管理和编排服务。
- dolphinscheduler-worker worker模块,提供任务执行管理服务。
- dolphinscheduler-alert 告警模块,提供 AlertServer 服务。
- dolphinscheduler-api web应用模块,提供 ApiServer 服务。
- dolphinscheduler-common 通用的常量枚举、工具类、数据结构或者基类。
- dolphinscheduler-dao 提供数据库访问等操作。
- dolphinscheduler-remote 基于 netty 的客户端、服务端。
- dolphinscheduler-service service模块,包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用。
- dolphinscheduler-ui 前端模块。
2.部署(单机版)
安装版本为3.1.5
,以下内容均以此版本进行说明。
2.1前置准备工作
- JDK:下载JDK (1.8+),安装并配置
JAVA_HOME
环境变量,并将其下的bin
目录追加到PATH
环境变量中。如果你的环境中已存在,可以跳过这步。 - 二进制包:在下载页面下载 DolphinScheduler 二进制包
安装环境如下:
[root@tcloud ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) [root@tcloud ~]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
官网 https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/installation/standalone 部署文档:
2.2 下载
清华大学开源软件镜像站下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/dolphinscheduler/3.1.5/
2.3 安装
2.3.1 解压并启动 DolphinScheduler
二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。本次以最新版本apache-dolphinscheduler-3.1.5-bin.tar.gz
进行说明。
# 1.解压 tar -zxvf apache-dolphinscheduler-3.1.5-bin.tar.gz # 2.启动 [root@tcloud apache-dolphinscheduler-3.1.5-bin]# cd apache-dolphinscheduler-3.1.5-bin [root@tcloud apache-dolphinscheduler-3.1.5-bin]# bash ./bin/dolphinscheduler-daemon.sh start standalone-server Begin start standalone-server...... starting standalone-server, logging to /opt/install/apache-dolphinscheduler-3.1.5-bin/standalone-server/logs Overwrite standalone-server/conf/dolphinscheduler_env.sh using bin/env/dolphinscheduler_env.sh. End start standalone-server. # 启动 Standalone Server 服务 bash ./bin/dolphinscheduler-daemon.sh start standalone-server # 停止 Standalone Server 服务 bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
2.3.2 登录 DolphinScheduler
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 admin/dolphinscheduler123
登录后的首页:
2.3.3 配置数据库
Standalone server 使用 H2 数据库作为其元数据存储数据,这是为了上手简单,用户在启动服务器之前不需要启动数据库。但是如果用户想将元数据库存储在 MySQL 或 PostgreSQL 等其他数据库中,他们必须更改一些配置。请参考 数据源配置Standalone 切换元数据库
创建并初始化数据库
3.实例
3.1 以下操作为管理员用户
- 创建队列
- 创建租户
- 创建普通用户
- 创建告警组实例
- 创建告警组
- 创建 Worker 分组
- 创建环境
- 创建 Token 令牌
3.2 以下操作为普通用户执行
点击右上角用户名“退出”,重新使用普通用户登录。
- 项目管理->创建项目->点击项目名称
- 点击工作流定义->创建工作流定义->上线工作流定义
- 任务->任务实例->查看日志
- 工作流->工作流实例->点击工作流实例名称->右键可以查询日志
任务脚本内容:
# 1.进入/opt/install目录 cd /opt/install # 2.执行保存文件ChangeTime的脚本 bash ./saveChangeTime.sh # 保存文件ChangeTime的脚本内容 #!/bin/bash stat /opt/install/apache-dolphinscheduler-3.1.5-bin.tar.gz | grep Change > /opt/install/changetime.log
3.3 问题处理
Permission denied
[INFO] 2023-05-22 08:49:36.055 +0000 - task run command: sudo -u testTenant -E bash ... [INFO] 2023-05-22 08:49:37.064 +0000 - -> /opt/install/saveChangeTime.sh: line 2: changetime.log: Permission denied
问题说明,运行shell脚本时会使用租户的名称testTenant
进行运行,此用户没有文件的写入权限。