1. DolphinScheduler单机部署概述
DolphinScheduler作为一款开源的分布式工作流任务调度系统,其单机部署模式是开发者快速体验和测试的首选方案。不同于生产环境复杂的集群部署,单机版将所有组件(Master、Worker、API、Alert、Logger)集成在单一节点运行,特别适合功能验证、开发调试和小规模场景使用。最新3.2.1版本修复了包括#15627在内的多个关键问题,稳定性显著提升。
我在实际部署中发现,单机模式虽然简化了架构复杂度,但配置细节直接影响服务可用性。例如默认内存配置可能引发OOM,数据库字符集设置错误会导致初始化失败。本文将基于3.2.1版本,详解从环境准备到服务调优的全流程,并分享排查"串行优先"等调度策略异常的实战经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与依赖安装
2.1 硬件与操作系统要求
- 最低配置:2核CPU/4GB内存/50GB磁盘(实测低于此配置可能引发任务堆积)
- 推荐配置:4核CPU/8GB内存/SSD存储(保障调度响应速度)
- 操作系统:CentOS 7+/Ubuntu 18.04+(需内核3.10+)
注意:避免使用Windows系统部署,尽管有开发者成功在Windows11运行单机大模型推理,但DolphinScheduler对Linux支持更完善
2.2 基础依赖安装
bash复制# JDK 1.8+ (推荐OpenJDK 11)
sudo yum install -y java-11-openjdk-devel
# MySQL 5.7+ (必须设置utf8mb4字符集)
sudo yum install -y mysql-server
systemctl start mysqld
mysql_secure_installation
# 初始化数据库(关键步骤!)
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'ds_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'ds_user'@'%';
2.3 安装Zookeeper(3.4.6+版本)
单机模式下可使用内置Zookeeper,但建议独立部署:
bash复制wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
cd apache-zookeeper-3.7.1-bin/conf
cp zoo_sample.cfg zoo.cfg
./bin/zkServer.sh start
3. 部署包获取与配置
3.1 下载与解压
bash复制wget https://dlcdn.apache.org/dolphinscheduler/3.2.1/apache-dolphinscheduler-3.2.1-bin.tar.gz
tar -zxvf apache-dolphinscheduler-3.2.1-bin.tar.gz
cd apache-dolphinscheduler-3.2.1-bin
3.2 关键配置文件修改
1. 数据库连接配置(conf/application.yaml)
yaml复制spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
username: ds_user
password: your_password
2. 服务端口调整(conf/application.yaml)
yaml复制server:
port: 12345 # 避免与现有服务冲突
3. 内存参数优化(bin/env/dolphinscheduler_env.sh)
bash复制export MASTER_JAVA_OPTS="-Xms2g -Xmx4g -Xmn1g"
export WORKER_JAVA_OPTS="-Xms4g -Xmx8g -Xmn2g"
4. 系统初始化与启动
4.1 执行数据库初始化脚本
bash复制./script/create-dolphinscheduler.sh
常见报错解决:若出现"Specified key was too long"错误,需确认MySQL已设置
innodb_large_prefix=ON
4.2 启动所有服务
bash复制# 单节点启动所有组件
./bin/dolphinscheduler-daemon.sh start-all
4.3 验证服务状态
bash复制# 检查进程
jps | grep -E 'MasterServer|WorkerServer|LoggerServer|AlertServer|ApiServer'
# 查看日志(关键排查点)
tail -f logs/dolphinscheduler-master.log
tail -f logs/dolphinscheduler-worker.log
5. 访问与基础配置
5.1 登录Web UI
- 访问地址:http://服务器IP:12345/dolphinscheduler
- 默认账号:admin/dolphinscheduler123
5.2 初始化环境配置
- 创建租户:对应Linux系统用户(需提前创建)
- Worker分组:单机部署使用
default分组 - 告警设置:配置邮件/SMTP服务器信息
6. 常见问题排查手册
6.1 服务启动失败排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| Master启动超时 | Zookeeper连接失败 | 检查conf/registry.properties配置 |
| Worker无法注册 | 网络策略限制 | 开放端口5678,1234,50051 |
| 数据库连接异常 | 字符集不匹配 | 确认数据库为utf8mb4 |
6.2 任务调度异常处理
串行优先策略失效:
- 检查工作流定义中的"串行等待"选项
- 确认
conf/master.properties配置:
properties复制master.execution.serial.wait=true
资源不足导致任务堆积:
bash复制# 调整worker执行线程数
vim conf/worker.properties
task.execute.threads=100 # 默认值50可能不足
7. 性能调优建议
7.1 内存优化方案
- Master服务器:增加
-XX:MaxDirectMemorySize参数避免Netty堆外内存溢出 - Worker服务器:根据任务类型调整:
- CPU密集型:减少
-Xmx增加并行度 - IO密集型:增大堆内存减少GC频率
- CPU密集型:减少
7.2 数据库连接池优化
yaml复制spring:
datasource:
hikari:
maximum-pool-size: 50 # 默认10在高负载时不足
connection-timeout: 30000
7.3 日志管理策略
properties复制# 限制日志文件大小(conf/logback-worker.xml)
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/dolphinscheduler-worker.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
8. 安全加固措施
8.1 网络层防护
bash复制# 仅开放必要端口
sudo firewall-cmd --permanent --add-port=12345/tcp # API
sudo firewall-cmd --permanent --add-port=5678/tcp # Worker通信
sudo firewall-cmd --reload
8.2 账号安全策略
- 修改默认管理员密码
- 开启LDAP集成(conf/application.yaml):
yaml复制security:
authentication:
type: LDAP
ldap:
url: ldap://your_ldap_server
base-dn: "ou=users,dc=example,dc=com"
经过完整部署和调优后,单机版DolphinScheduler可稳定支持日均数千任务的调度需求。对于需要更高可用性的场景,建议参考官方文档逐步扩展为集群模式
