首页
/ Apache DolphinScheduler Standalone 极速体验版部署指南:单机快速上手与元数据库切换实战

Apache DolphinScheduler Standalone 极速体验版部署指南:单机快速上手与元数据库切换实战

2026-09-14 12:23:48作者:庞队千Virginia

Standalone 是 Apache DolphinScheduler 官方提供的极速体验部署形态:一个进程内同时承载 API、Master、Worker、Alert 等核心组件,配合内置的内存 H2 数据库与内置 Zookeeper,无需任何外部依赖即可在几分钟内启动一套可用的调度平台。本文以仓库中的官方文档 Standalone 安装指南 为主体,完整讲解前置环境准备、用户权限配置、解压启动、Web UI 登录、服务启停管理,并深入结合仓库源码剖析 Standalone 的进程模型与配置项,最后给出切换到 MySQL/PostgreSQL 外部元数据库、调整资源中心目录的实战方案,帮助初学者以最低成本完整体验 DolphinScheduler 的核心功能。

适用场景判断:官方文档明确给出了三种部署形态的推荐路径——新手快速体验 DolphinScheduler 功能,首选 Standalone;想体验更完整功能、调度更大规模任务,推荐伪集群部署;生产环境则推荐集群部署Kubernetes 部署。Standalone 并非生产部署形态,请勿将其直接用于生产环境。

Standalone 的定位与限制

适用规模与默认存储特性

Standalone 的定位是"快速体验",因此官方对其使用规模有明确建议:

  • 建议工作流数量控制在 20 个以下。原因在于 Standalone 默认使用内存型 H2 数据库作为元数据存储,同时内置 Zookeeper Testing Server,任务量过大可能导致系统不稳定。
  • 数据易失性:当 Standalone 停止或重启时,内存型 H2 数据库中的数据会被清空。如果希望元数据持久化,必须切换到外部数据库(MySQL 或 PostgreSQL),详见本文"元数据库切换"一节。

进程模型:单进程聚合全部服务

Standalone 之所以"开箱即用",是因为它将分布式形态下的多个独立进程聚合到了一个 JVM 中。从源码中的 StandaloneServer.java 可以看到,它是一个标准的 Spring Boot 应用入口:

@Slf4j
@SpringBootApplication
public class StandaloneServer {

    public static void main(String[] args) throws Exception {
        try {
            SpringApplication.run(StandaloneServer.class, args);
        } catch (Exception ex) {
            log.error("StandaloneServer start failed", ex);
            System.exit(1);
        }
    }
}

从打包结构可以进一步确认 Standalone 的内部组成。在 dolphinscheduler-standalone-server.xml 这个 Maven assembly 配置中,Standalone 发布包被组装为 standalone-server 目录,其中:

  • dolphinscheduler-dao 引入 sql/**/*(建表 SQL 脚本,用于初始化元数据库);
  • dolphinscheduler-common 引入 common.properties(资源中心、sudo、Kerberos 等公共配置,见下文);
  • dolphinscheduler-api 引入 task-type-config.yamldynamic-task-type-config.yaml(任务类型注册配置);
  • 直接引入 dolphinscheduler-ui 的构建产物 dist./ui 目录(前端静态资源由 API 进程一并托管);
  • 依赖统一打入 libs 目录。

也就是说,Standalone 本质上是一个"内置 API + Master + Worker + Alert + 前端 UI + 元数据库"的单进程发布物,这正是它解压即用、无需预装 Zookeeper 和数据库的原因。

前置准备工作

开始部署前,需要准备以下两项环境要素:

  1. JDK:下载 JDK 1.8 或 11,安装并配置 JAVA_HOME 环境变量,同时将 JAVA_HOME 下的 bin 目录追加到 PATH 环境变量中。若环境中已存在符合条件的 JDK,可跳过此步。
  2. 二进制安装包:从 Apache DolphinScheduler 官方下载页面获取对应版本的二进制包(apache-dolphinscheduler-*-bin.tar.gz)。

下载插件依赖

Standalone 与伪集群部署一样,需要下载插件依赖。完整操作请参考伪集群部署的"下载插件依赖"章节

特别注意:Standalone 最小化运行必须下载两个插件依赖

  • dolphinscheduler-task-shell:Shell 任务插件,Standalone 体验流程中创建 Shell 工作流需要它;
  • dolphinscheduler-storage-hdfs:HDFS 存储插件。结合 common.properties 可以看到,Standalone 默认的资源存储类型为 LOCAL,而官方文档注释明确指出 LOCAL 是 HDFS 的一个特殊实现(resource.hdfs.fs.defaultFS = file:///),因此即使使用本地目录也需要该插件支撑资源中心的基础能力。

配置用户免密及权限

DolphinScheduler 通过 sudo -u {linux-user} -i 切换不同的 Linux 用户来执行任务,从而实现多租户运行作业。因此部署用户必须具备免密的 sudo 权限。以创建 dolphinscheduler 用户为例:

# 创建用户需使用 root 登录
useradd dolphinscheduler

# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler

# 配置 sudo 免密
sed -i '$dolphinscheduler  ALL=(ALL)  NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requiretty/#Defaults    requiretty/g' /etc/sudoers

# 修改目录权限,使部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
chmod -R 755 apache-dolphinscheduler-*-bin

注意事项:

  • 如果 /etc/sudoers 文件中存在 Defaults requiretty 这一行,必须将其注释掉(上面第 4 条命令已处理),否则 sudo -u 切换执行任务时会因为无法分配伪终端而失败;
  • 初学者如果暂不理解多租户机制,可以暂时忽略 sudo 配置,等后续深入时再补齐。

sudo.enable 这一行为在 common.properties 中有对应开关:默认 sudo.enable=true,即执行用户为租户用户、部署用户需要 sudo 权限;若设置为 false,则执行用户固定为部署用户,不再需要 sudo。生产环境可按安全策略调整。

启动 DolphinScheduler Standalone Server

解压并启动

二进制压缩包中已包含 Standalone 的启动脚本,解压后即可快速启动。务必切换到具有 sudo 权限的用户后执行:

# 解压并运行 Standalone Server
tar -xvzf apache-dolphinscheduler-*-bin.tar.gz
chmod -R 755 apache-dolphinscheduler-*-bin
cd apache-dolphinscheduler-*-bin
bash ./bin/dolphinscheduler-daemon.sh start standalone-server

启动脚本 dolphinscheduler-daemon.sh 是整个 Standalone(以及各独立服务)的守护进程管理入口。从源码看,其运行机制包括:

  • 支持的动作与目标:(start|stop|status) <api-server|master-server|worker-server|alert-server|standalone-server>
  • 启动时先通过 overwrite_server_envbin/env/dolphinscheduler_env.sh 覆盖各服务的 conf/dolphinscheduler_env.sh,实现统一环境变量管理;
  • 日志输出到 standalone-server/logs/standalone-server-${HOSTNAME}.out,PID 写入 standalone-server/pid
  • 若进程已在运行,再次 start 会被拒绝并提示先停止;
  • stop 采用优雅停止:先 pkill -P 发送终止信号,等待 STOP_TIMEOUT(5 秒)后仍未退出才使用 kill -9 强制结束。

登录 DolphinScheduler Web UI

启动完成后,在浏览器访问:

http://localhost:12345/dolphinscheduler/ui

默认账号密码为:admin / dolphinscheduler123

UI 的访问端口与上下文路径由 Standalone 的 application.yaml 定义:server.port=12345server.servlet.context-path=/dolphinscheduler/。前端静态资源正是由该进程托管的 dolphinscheduler-ui 构建产物(对应 assembly 中 dist -> ./ui 的打包配置)。

启停服务命令

./bin/dolphinscheduler-daemon.sh 除了快速启动,也支持停止与状态查询,全部命令如下:

# 启动 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# 停止 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
# 查看 Standalone Server 状态
bash ./bin/dolphinscheduler-daemon.sh status standalone-server

关于 Python 网关服务:Python 网关服务默认关闭。如果需要通过 pydolphinscheduler 以 Python 方式提交工作流,请修改 YAML 配置,将 python-gateway.enabled 设置为 true,配置文件路径为 api-server/conf/application.yaml(Standalone 发布包中即为 standalone-server/conf/application.yaml)。

配置数据库:从 H2 切换到外部元数据库

为什么需要外部数据库

Standalone 默认使用 H2 内存数据库作为元数据存储,好处是用户无需在启动前预装任何数据库即可体验。但如前所述,H2 内存库在 Standalone 停止或重启后会清空全部元数据。若希望元数据持久化,必须切换到 MySQL 或 PostgreSQL。完整配置请参考数据源设置文档中的"Standalone Switching Metadata Database Configuration"章节,以下以 MySQL 为例展开。

第一步:创建并初始化数据库

首先需要创建数据库与用户。MySQL 5.6 / 5.7 的初始化 SQL:

mysql -uroot -p

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

# 将 {user} 和 {password} 替换为你的用户名和密码
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';

mysql> flush privileges;

MySQL 8 的初始化 SQL(用户创建方式与 5.x 不同):

mysql -uroot -p

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

# 将 {user} 和 {password} 替换为你的用户名和密码
mysql> CREATE USER '{user}'@'%' IDENTIFIED BY '{password}';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%';
mysql> CREATE USER '{user}'@'localhost' IDENTIFIED BY '{password}';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost';
mysql> FLUSH PRIVILEGES;

PostgreSQL 的初始化方式:

# 使用 psql 工具登录 PostgreSQL
psql
# 创建数据库
postgres=# CREATE DATABASE dolphinscheduler;
# 将 {user} 和 {password} 替换为你的用户名和密码
postgres=# CREATE USER {user} PASSWORD {password};
postgres=# ALTER DATABASE dolphinscheduler OWNER TO {user};
# 退出 PostgreSQL
postgres=#\q
# 在终端执行以下命令,将配置追加到 pg_hba.conf 并重载,{ip} 替换为 DS 集群的 IP 地址
echo "host    dolphinscheduler   {user}    {ip}     md5" >> $PGDATA/pg_hba.conf
pg_ctl reload

第二步:下载 JDBC 驱动

使用 MySQL 时,需要手动下载 mysql-connector-java 驱动(8.0.16) 并放入 DolphinScheduler 的以下 libs 目录:

  • api-server/libs
  • alert-server/libs
  • master-server/libs
  • worker-server/libs

同时按官方文档要求,还需将驱动复制到 ./standalone-server/libs/standalone-server/,因为 Standalone 将上述服务聚合为单个进程。

版本约束:如果在"数据源中心"中仅将 MySQL 作为业务数据源使用,对 JDBC 驱动版本没有硬性要求;但如果将 MySQL 作为 DolphinScheduler 的元数据库,则仅支持 8.0.16 及以上版本。

第三步:设置环境变量并启动

在终端中设置以下环境变量(替换 {address}{user}{password}):

export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://{address}/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME={user}
export SPRING_DATASOURCE_PASSWORD={password}

时区配置提示:官方文档特别提醒,避免使用 CST 这类有歧义的时区标识,否则可能导致调度时间错误,应使用明确的时区,例如 serverTimezone=Asia/Shanghai。因此更稳妥的 MySQL 配置为:

export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone={your_timezone}"
export SPRING_DATASOURCE_USERNAME={user}
export SPRING_DATASOURCE_PASSWORD={password}

PostgreSQL 的对应配置为:

export DATABASE=${DATABASE:-postgresql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
export SPRING_DATASOURCE_USERNAME={user}
export SPRING_DATASOURCE_PASSWORD={password}

随后按标准流程初始化元数据库表结构:

bash tools/bin/upgrade-schema.sh

完成以上步骤后重新启动 standalone-server,即可使用外部数据库持久化元数据,停止或重启 Standalone 不再丢失数据。

调整资源中心目录

DolphinScheduler 默认使用本地模式目录 /tmp/dolphinscheduler 作为资源中心。如需修改资源中心目录,请修改 conf/common.properties 中 resource 的相关配置项。该文件在源码仓库中对应 common.properties,关键配置项包括:

配置项 默认值 说明
data.basedir.path /tmp/dolphinscheduler 用户数据本地目录,需确保目录存在且有读写权限
resource.storage.type LOCAL 资源存储类型:LOCAL、HDFS、S3、OSS、GCS、ABS、OBS、COS。LOCAL 是默认类型,是 resource.hdfs.fs.defaultFS = file:/// 的 HDFS 特殊实现;注意 LOCAL 模式不支持分布式读写,仅在单机可用,除非挂载共享文件系统
resource.storage.upload.base.path /tmp/dolphinscheduler 资源在存储端的基础路径,需保证目录存在且有读写权限,推荐 /dolphinscheduler
resource.query.interval 10000 资源查询间隔(毫秒)
sudo.enable true 是否使用 sudo:为 true 时执行用户为租户用户、部署用户需 sudo 权限;为 false 时执行用户为部署用户、无需 sudo

其他与任务执行相关的常用配置(同一文件内)还包括:shell.kill.wait.timeout=10(Shell 进程超时后使用 kill -9 强杀)、remote.logging.enable=false(是否启用远程日志)、development.state=false(开发模式是否保留任务执行目录)等,可按需调整。

常见问题与注意事项汇总

  1. 数据丢失是预期行为:Standalone 默认使用内存 H2,重启即清空,务必不要将其用于保存重要工作流数据;
  2. sudo 配置不可省略:多租户任务执行依赖 sudo -u {linux-user} -i,部署用户必须免密 sudo,并注意注释 /etc/sudoers 中的 Defaults requiretty
  3. 20 个工作流上限是体验边界:超出该规模请转向伪集群部署集群部署
  4. MySQL 元数据库版本约束:JDBC 驱动需 8.0.16 及以上,且要同时放入 Standalone 的 libs/standalone-server 目录;
  5. 时区必须显式指定:避免 CST 等歧义时区导致调度时间错乱,使用 serverTimezone=Asia/Shanghai 等明确时区;
  6. 资源中心目录:默认 /tmp/dolphinscheduler,修改 conf/common.properties 的 resource 相关配置项即可,注意 LOCAL 存储类型不支持分布式读写。

至此,你已经可以在一台机器上快速启动并完整体验 Apache DolphinScheduler 的工作流编排能力;当你需要更完整的分布式功能或大规模调度时,基于本文掌握的进程模型、元数据库与资源中心配置知识,也能平滑迁移到伪集群或集群部署形态。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
34
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.21 K
2.81 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
945
1.86 K
docsdocs
暂无描述
Markdown
906
5.84 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
537
607
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
864
1.36 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
4.28 K
1.03 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.39 K
1.48 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
550
401
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.19 K
347