DolphinScheduler下载-分布式工作流调度系统下载地址-DolphinScheduler安装部署方法
1. DolphinScheduler简介与版本说明
Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台,致力于解决数据处理流程中复杂的依赖关系。DolphinScheduler提供了可视化的工作流编排界面,支持丰富的任务类型和调度策略。更多学习教程www.fgedu.net.cn
DolphinScheduler最新版本:
DolphinScheduler 3.2.0 (2024年稳定版)
DolphinScheduler 3.1.9 (2023年稳定版)
DolphinScheduler 3.1.8 (2023年稳定版)
DolphinScheduler 2.0.7 (历史LTS版本)
DolphinScheduler支持的作业类型:
– Shell任务
– Python任务
– SQL任务(MySQL、PostgreSQL、Hive、SparkSQL等)
– Spark任务
– MapReduce任务
– Flink任务
– DataX任务
– Sqoop任务
– Hive任务
容器与云原生:
– Kubernetes任务
– Docker任务
– HTTP任务
– SubProcess子流程
其他类型:
– 条件任务
– 依赖任务
– 参数传递任务
– 补数任务
2. DolphinScheduler下载方式
DolphinScheduler提供多种下载方式,包括官方下载、Docker镜像、Helm Chart等。学习交流加群风哥微信: itpux-com
方式一:官方下载
$ mkdir -p /fgeudb/software/dolphinscheduler
$ cd /fgeudb/software/dolphinscheduler
# 下载DolphinScheduler 3.2.1
$ wget https://archive.apache.org/dist/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-bin.tar.gz
# 下载源码包(可选)
$ wget https://archive.apache.org/dist/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-src.tar.gz
# 查看下载文件
$ ls -lh
输出示例如下:
total 850M
-rw-r–r– 1 root root 850M Apr 4 10:00 apache-dolphinscheduler-3.2.1-bin.tar.gz
-rw-r–r– 1 root root 150M Apr 4 10:00 apache-dolphinscheduler-3.2.1-src.tar.gz
方式二:国内镜像下载
$ wget https://mirrors.aliyun.com/apache/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-bin.tar.gz
# 使用华为云镜像
$ wget https://mirrors.huawei.com/apache/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-bin.tar.gz
# 使用清华大学镜像
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-bin.tar.gz
方式三:Docker镜像下载
$ docker pull apache/dolphinscheduler-standalone-server:3.2.1
# 拉取Master镜像
$ docker pull apache/dolphinscheduler-master:3.2.1
# 拉取Worker镜像
$ docker pull apache/dolphinscheduler-worker:3.2.1
# 拉取API Server镜像
$ docker pull apache/dolphinscheduler-api:3.2.1
# 拉取Alert Server镜像
$ docker pull apache/dolphinscheduler-alert-server:3.2.1
# 查看镜像列表
$ docker images | grep dolphinscheduler
输出示例如下:
apache/dolphinscheduler-standalone-server 3.2.1 abc123def456 7 days ago 1.2GB
apache/dolphinscheduler-master 3.2.1 def456ghi789 7 days ago 850MB
apache/dolphinscheduler-worker 3.2.1 ghi789jkl012 7 days ago 900MB
方式四:Docker Compose部署
$ wget https://github.com/apache/dolphinscheduler/raw/3.2.1/deploy/docker/docker-compose.yml
# 启动服务
$ docker-compose up -d
输出示例如下:
Creating network “dolphinscheduler_default” with the default driver
Creating dolphinscheduler-zookeeper … done
Creating dolphinscheduler-db … done
Creating dolphinscheduler-api … done
Creating dolphinscheduler-master … done
Creating dolphinscheduler-worker … done
Creating dolphinscheduler-alert … done
3. DolphinScheduler安装部署
DolphinScheduler支持单机部署和集群部署两种模式。学习交流加群风哥QQ113257174
步骤1:解压安装
$ cd /fgeudb
$ tar -zxvf /fgeudb/software/dolphinscheduler/apache-dolphinscheduler-3.2.1-bin.tar.gz
$ mv apache-dolphinscheduler-3.2.1-bin dolphinscheduler
# 查看目录结构
$ ls -la /fgeudb/dolphinscheduler/
输出示例如下:
total 32
drwxr-xr-x 2 root root 4096 Apr 4 10:00 bin
drwxr-xr-x 2 root root 4096 Apr 4 10:00 conf
drwxr-xr-x 2 root root 4096 Apr 4 10:00 lib
drwxr-xr-x 2 root root 4096 Apr 4 10:00 licenses
drwxr-xr-x 2 root root 4096 Apr 4 10:00 script
drwxr-xr-x 2 root root 4096 Apr 4 10:00 sql
drwxr-xr-x 2 root root 4096 Apr 4 10:00 tools
步骤2:创建数据库
$ mysql -h 192.168.1.51 -u root -proot123
# 创建DolphinScheduler数据库
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 创建用户
mysql> CREATE USER ‘dolphin’@’%’ IDENTIFIED BY ‘dolphin123’;
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO ‘dolphin’@’%’;
mysql> FLUSH PRIVILEGES;
# 导入数据库脚本
$ mysql -h 192.168.1.51 -u dolphin -pdolphin123 dolphinscheduler < /fgeudb/dolphinscheduler/sql/dolphinscheduler_mysql.sql
# 验证表创建
mysql> USE dolphinscheduler;
mysql> SHOW TABLES;
输出示例如下:
+---------------------------+
| Tables_in_dolphinscheduler|
+---------------------------+
| t_ds_access_token |
| t_ds_alert |
| t_ds_alert_plugin_instance|
| t_ds_command |
| t_ds_datasource |
| t_ds_environment |
| t_ds_error_command |
| t_ds_process_definition |
| t_ds_process_instance |
| t_ds_project |
| t_ds_queue |
| t_ds_resources |
| t_ds_schedules |
| t_ds_task_definition |
| t_ds_task_instance |
| t_ds_tenant |
| t_ds_udf_func |
| t_ds_user |
| t_ds_version |
+---------------------------+
步骤3:配置环境变量
$ vi ~/.bash_profile
export DOLPHINSCHEDULER_HOME=/fgeudb/dolphinscheduler
export PATH=$DOLPHINSCHEDULER_HOME/bin:$PATH
# 使环境变量生效
$ source ~/.bash_profile
# 配置Java环境
$ vi /fgeudb/dolphinscheduler/conf/env/dolphinscheduler_env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/fgeudb/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export HIVE_HOME=/fgeudb/hive
export PATH=$HIVE_HOME/bin:$PATH
export SPARK_HOME=/fgeudb/spark
export PATH=$SPARK_HOME/bin:$PATH
export FLINK_HOME=/fgeudb/flink
export PATH=$FLINK_HOME/bin:$PATH
export PYTHON_HOME=/usr/bin/python3
export PATH=$PYTHON_HOME:$PATH
步骤4:配置DolphinScheduler
$ vi /fgeudb/dolphinscheduler/conf/datasource.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.1.51:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=dolphin
spring.datasource.password=dolphin123
# 编辑Master配置
$ vi /fgeudb/dolphinscheduler/conf/master.properties
master.listen.port=5678
master.exec.threads=100
master.exec.task.num=20
master.dispatch.task.num=3
master.host.selector=lowerWeight
master.heartbeat.interval=10
master.task.commit.retryTimes=5
master.task.commit.interval=1000
master.max.cpuload.avg=-1
master.reserved.memory=0.3
# 编辑Worker配置
$ vi /fgeudb/dolphinscheduler/conf/worker.properties
worker.listen.port=1234
worker.exec.threads=100
worker.heartbeat.interval=10
worker.max.cpuload.avg=-1
worker.reserved.memory=0.3
worker.groups=default
# 编辑API Server配置
$ vi /fgeudb/dolphinscheduler/conf/api-server.properties
server.port=12345
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB
步骤5:启动服务
$ mkdir -p /fgeudb/dolphinscheduler/logs
# 启动所有服务
$ cd /fgeudb/dolphinscheduler
$ sh bin/dolphinscheduler-daemon.sh start master-server
$ sh bin/dolphinscheduler-daemon.sh start worker-server
$ sh bin/dolphinscheduler-daemon.sh start api-server
$ sh bin/dolphinscheduler-daemon.sh start alert-server
输出示例如下:
Start master-server starting…
Start master-server successfully!
Start worker-server starting…
Start worker-server successfully!
Start api-server starting…
Start api-server successfully!
Start alert-server starting…
Start alert-server successfully!
# 验证服务状态
$ jps
输出示例如下:
12345 MasterServer
12346 WorkerServer
12347 ApiApplicationServer
12348 AlertServer
# 检查端口
$ netstat -tlnp | grep -E “12345|5678|1234”
输出示例如下:
tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 12347/java
tcp 0 0 0.0.0.0:5678 0.0.0.0:* LISTEN 12345/java
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 12346/java
4. DolphinScheduler配置详解
DolphinScheduler配置包括Master、Worker、API Server和Alert Server四个组件。风哥提示:正确配置各组件参数是系统稳定运行的关键。
Master配置说明
master.listen.port=5678 # Master监听端口
master.exec.threads=100 # Master执行线程数
master.exec.task.num=20 # 每个流程最大并行任务数
master.dispatch.task.num=3 # 每次分发的任务数
master.host.selector=lowerWeight # Worker选择策略
master.heartbeat.interval=10 # 心跳间隔(秒)
master.task.commit.retryTimes=5 # 任务提交重试次数
master.task.commit.interval=1000 # 任务提交间隔(毫秒)
master.max.cpuload.avg=-1 # 最大CPU负载(-1表示不限制)
master.reserved.memory=0.3 # 预留内存比例
Worker配置说明
worker.listen.port=1234 # Worker监听端口
worker.exec.threads=100 # Worker执行线程数
worker.heartbeat.interval=10 # 心跳间隔(秒)
worker.max.cpuload.avg=-1 # 最大CPU负载
worker.reserved.memory=0.3 # 预留内存比例
worker.groups=default # Worker所属组(多个用逗号分隔)
worker.tenant.auto.create=true # 是否自动创建租户
ZooKeeper配置
$ vi /fgeudb/dolphinscheduler/conf/zookeeper.properties
zookeeper.quorum=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181
zookeeper.dolphinscheduler.root=/dolphinscheduler
zookeeper.session.timeout=60000
zookeeper.connection.timeout=30000
zookeeper.retry.sleep=1000
zookeeper.retry.maxtime=3
5. 项目创建与工作流配置
DolphinScheduler使用项目来组织工作流,每个项目可以包含多个工作流定义。更多学习教程公众号风哥教程itpux_com
步骤1:访问Web界面
# URL: http://192.168.1.51:12345/dolphinscheduler
# 默认登录信息
用户名: admin
密码: dolphinscheduler123
# 首次登录后建议修改密码
# 点击右上角用户名 -> 修改密码
步骤2:创建项目
# 1. 点击”项目管理” -> “创建项目”
# 2. 输入项目名称: fgedu_etl
# 3. 输入项目描述: ETL Workflow
# 4. 点击”确定”保存
# 项目管理功能:
# – 工作流定义:创建和管理DAG工作流
# – 工作流实例:查看工作流执行历史
# – 任务实例:查看任务执行详情
# – 资源文件:上传和管理资源文件
# – 数据源:配置数据库连接
# – UDF管理:管理用户自定义函数
步骤3:创建数据源
# 1. 进入项目 -> 数据源中心 -> 创建数据源
# 2. 选择数据源类型: MySQL
# 3. 配置连接信息:
数据源名称: fgedu_mysql
主机地址: 192.168.1.51
端口: 3306
用户名: root
密码: root123
数据库名: fgedu_db
# 4. 点击”测试连接”
# 5. 连接成功后点击”确定”保存
# 支持的数据源类型:
MySQL、PostgreSQL、Oracle、SQL Server
Hive、Spark、ClickHouse
Presto、H2、DB2
步骤4:创建工作流
# 1. 进入项目 -> 工作流定义 -> 创建工作流
# 2. 拖拽任务节点到画布
# 3. 配置任务参数
# 4. 连接任务节点形成DAG
# 5. 保存工作流
# 示例:创建ETL工作流
# 任务1: Shell任务 – 数据准备
任务名称: prepare_data
脚本内容:
#!/bin/bash
echo “开始准备数据…”
date +%Y%m%d > /tmp/data_date.txt
echo “数据准备完成”
# 任务2: SQL任务 – 数据清洗
任务名称: clean_data
数据源: fgedu_mysql
SQL类型: 非查询
SQL内容:
DELETE FROM orders WHERE status = ‘cancelled’;
UPDATE orders SET status = ‘completed’ WHERE update_time < DATE_SUB(NOW(), INTERVAL 30 DAY);
# 任务3: Spark任务 - 数据分析
任务名称: spark_analysis
Spark版本: SPARK2
主函数: com.fgedu.spark.OrderAnalysis
部署方式: cluster
Spark参数: --executor-memory 4G --executor-cores 2 --num-executors 4
# 任务4: Python任务 - 生成报告
任务名称: generate_report
脚本内容:
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据并生成报告
df = pd.read_csv('/tmp/analysis_result.csv')
df.plot(kind='bar')
plt.savefig('/tmp/report.png')
print("报告生成完成")
# 连接任务形成DAG
# prepare_data -> clean_data -> spark_analysis -> generate_report
步骤5:配置任务参数
# 在工作流定义页面点击”全局参数”
参数名称: data_date
参数值: ${system.biz.date}
参数描述: 业务日期
# 任务参数传递
# 在任务中使用${data_date}引用全局参数
# 本地参数配置
# 在任务配置中添加本地参数
参数名称: input_path
参数值: /user/hadoop/data/${data_date}
# 内置参数说明:
${system.biz.date} # 业务日期(前一天)
${system.biz.curdate} # 当前日期
${system.datetime} # 当前时间戳
6. 定时调度配置
DolphinScheduler支持灵活的定时调度配置,支持cron表达式。from:www.itpux.com
步骤1:创建定时任务
# 1. 进入工作流定义页面
# 2. 点击工作流右侧的”定时”按钮
# 3. 配置调度时间:
选择时区: Asia/Shanghai
失效方式: 无失效时间
Cron表达式: 0 0 2 * * ? # 每天凌晨2点执行
# 4. 配置时区
# 5. 点击”创建”保存
# Cron表达式说明:
秒 分 时 日 月 周 年
0 0 2 * * ? * # 每天凌晨2点
0 0 */2 * * ? * # 每2小时执行一次
0 30 9 * * MON-FRI # 周一到周五9:30执行
0 0 0 1 * ? * # 每月1号0点执行
步骤2:配置告警通知
# 1. 进入安全中心 -> 告警组管理 -> 创建告警组
告警组名称: etl_alert
组类型: 邮件
备注: ETL任务告警组
# 2. 配置告警实例
# 进入安全中心 -> 告警实例管理 -> 创建告警实例
实例名称: email_alert
插件类型: EMAIL
主机: smtp.fgedu.net.cn
端口: 25
发送者: dolphinscheduler@fgedu.net.cn
用户名: dolphinscheduler@fgedu.net.cn
密码: mail123
# 3. 在工作流中配置告警
# 工作流定义 -> 选择工作流 -> 点击”定时” -> 配置告警组
步骤3:补数功能
# 执行补数步骤:
# 1. 进入工作流定义页面
# 2. 点击工作流右侧的”补数”按钮
# 3. 选择补数时间范围:
开始时间: 2026-03-01
结束时间: 2026-03-31
# 4. 选择执行方式:
并行执行: 是
并行度: 5
# 5. 点击”确定”开始补数
# 补数场景:
# – 数据修复:修复历史数据问题
# – 新增任务:对历史数据重新执行新增的任务
# – 任务重跑:重新执行失败的历史任务
7. DolphinScheduler监控运维
DolphinScheduler提供完善的监控和管理功能。
步骤1:查看工作流实例
# 可以查看所有工作流执行记录
# 工作流状态说明:
等待依赖: WAIT_DEPEND
等待线程: WAIT_THREAD
成功: SUCCESS
失败: FAILURE
停止: STOP
暂停: PAUSE
运行中: RUNNING
# 查看工作流执行日志
# 点击工作流实例 -> 查看日志
输出示例如下:
[INFO] 2026-04-04 10:00:00.000 – Start process instance [fgedu_etl_daily]
[INFO] 2026-04-04 10:00:00.100 – Task [prepare_data] start
[INFO] 2026-04-04 10:00:05.000 – Task [prepare_data] success
[INFO] 2026-04-04 10:00:05.100 – Task [clean_data] start
[INFO] 2026-04-04 10:00:30.000 – Task [clean_data] success
[INFO] 2026-04-04 10:00:30.100 – Task [spark_analysis] start
[INFO] 2026-04-04 10:01:00.000 – Task [spark_analysis] success
[INFO] 2026-04-04 10:01:00.100 – Process instance [fgedu_etl_daily] success
步骤2:监控服务状态
# 可以查看Master、Worker、ZooKeeper状态
# Master状态
主机: 192.168.1.51
端口: 5678
状态: 活跃
CPU使用率: 25%
内存使用率: 45%
进程数: 10
# Worker状态
主机: 192.168.1.51
端口: 1234
状态: 活跃
Worker组: default
CPU使用率: 30%
内存使用率: 50%
执行线程数: 5
# 查看服务日志
$ tail -f /fgeudb/dolphinscheduler/logs/dolphinscheduler-master.log
$ tail -f /fgeudb/dolphinscheduler/logs/dolphinscheduler-worker.log
$ tail -f /fgeudb/dolphinscheduler/logs/dolphinscheduler-api.log
步骤3:使用API管理
$ curl -X POST “http://192.168.1.51:12345/dolphinscheduler/login” \
-H “Content-Type: application/x-www-form-urlencoded” \
-d “userName=admin&userPassword=dolphinscheduler123”
输出示例如下:
{“msg”:”success”,”code”:0,”data”:{“sessionId”:”abc123def456″}}
# 获取项目列表
$ curl -X GET “http://192.168.1.51:12345/dolphinscheduler/projects/list” \
-H “sessionId: abc123def456”
输出示例如下:
{“msg”:”success”,”code”:0,”data”:[{“id”:1,”name”:”fgedu_etl”,”description”:” ETL Workflow”}]}
# 执行工作流
$ curl -X POST “http://192.168.1.51:12345/dolphinscheduler/executors/start-process-instance” \
-H “sessionId: abc123def456” \
-H “Content-Type: application/x-www-form-urlencoded” \
-d “processDefinitionCode=123456789&projectCode=987654321”
输出示例如下:
{“msg”:”success”,”code”:0,”data”:1}
# 查询工作流状态
$ curl -X GET “http://192.168.1.51:12345/dolphinscheduler/executors/query-process-instance-by-id?processInstanceId=1” \
-H “sessionId: abc123def456”
输出示例如下:
{“msg”:”success”,”code”:0,”data”:{“id”:1,”name”:”fgedu_etl_daily”,”state”:”SUCCESS”,”startTime”:”2026-04-04 10:00:00″,”endTime”:”2026-04-04 10:01:00″}}
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
