standalone模式适合刚上手、想5分钟看到ui界面的用户,它将master、worker、api、zookeeper和h2内存数据库集成于单进程,仅需jdk 1.8配置java_home即可启动。

直接说结论:单机快速验证用 standalone 模式,生产环境必须用伪集群或集群模式,且 MySQL 5.7 + JDK 1.8 是最稳组合。
standalone 模式适合谁?
适合刚上手、想 5 分钟看到 UI 界面的用户。它把 master、worker、api、zookeeper 和 H2 内存数据库全塞进一个 standalone-server 进程里。
- 不用装 MySQL、ZooKeeper,只要 JDK 1.8 配好
JAVA_HOME就能跑 - 启动命令是
bin/dolphinscheduler-daemon.sh start standalone-server,不是startall - 默认访问地址是
http://localhost:12345/dolphinscheduler/ui,账号密码是admin/dolphinscheduler123 - ⚠️ 注意:
H2数据库重启就丢数据,切勿在测试以外的任何场景使用
伪集群模式怎么配 MySQL?
这是本地开发和预发环境的主力部署方式,所有服务(master、worker、api)仍跑在同一台机器,但元数据必须外接 MySQL。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- MySQL 版本选
5.7.x,别碰8.0+—— 官方驱动适配不全,容易卡在java.sql.SQLException: Unknown system variable 'query_cache_size' - 建库时指定字符集:
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 配置文件是
conf/datasource.properties,关键项必须写全:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver(JDK 1.8 下用cj版本)、useSSL=false、allowPublicKeyRetrieval=true - MySQL 驱动 JAR 必须手动放进
libs/目录,不能只靠 Maven 依赖 —— 否则worker启动时报ClassNotFoundException: com.mysql.cj.jdbc.Driver
为什么 worker 启不来?常见三类原因
伪集群或集群部署中,worker 是最容易挂的组件,问题基本集中在环境链路上。
-
ps -ef | grep dolphinscheduler看不到进程?先查logs/dolphinscheduler-worker.log,90% 是Cannot find Java—— 因为dolphinscheduler用户没继承JAVA_HOME,得在bin/env/dolphinscheduler_env.sh里硬编码写死路径 - 日志里出现
Connection refused?确认 ZooKeeper 已启动,且conf/zookeeper.properties中的zk.quorum指向的是真实 IP(不是localhost),尤其在 Docker 或云主机环境下 - Worker 注册成功但任务不执行?检查
conf/common.properties的worker.groups是否和 Web UI 中“租户管理”里设置的 worker 分组名完全一致(区分大小写)
集群模式下 master 和 worker 怎么分?
不是“越多越好”,而是按角色隔离资源。Master 负责调度决策,Worker 负责任务执行,混部会相互干扰。
- Master 节点只需保障高可用,CPU 4 核 / 内存 8GB 足够;不要在 Master 上部署 Worker,否则调度延迟会上升
- Worker 节点内存要给足,特别是跑 Spark 或 Flink 任务时 ——
worker进程的 JVM 参数在bin/env/dolphinscheduler_env.sh里调,别只改common.properties - ZooKeeper 必须独立部署(至少 3 节点),不能和 DolphinScheduler 共用一台机器 —— 否则节点宕机时注册中心跟着挂,整个集群失联
- 所有节点的系统时间误差必须 chronyd 同步,别用
ntpdate一次性校正 —— 时间跳变会导致worker心跳超时被踢出集群
真正麻烦的从来不是“怎么装”,而是“装完之后哪条链路断了”。从 worker 日志第一行开始读,比反复重启服务有用得多。










