news 2026/9/15 12:37:59

Apache DolphinScheduler Standalone 极速体验版部署指南:单机快速上手元数据持久化与插件依赖配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache DolphinScheduler Standalone 极速体验版部署指南:单机快速上手元数据持久化与插件依赖配置

Apache DolphinScheduler Standalone 极速体验版部署指南:单机快速上手元数据持久化与插件依赖配置

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

本篇技术指南以 Apache DolphinScheduler 官方文档《Standalone 极速体验版》为主体,系统讲解如何在单机环境下以最轻量的方式快速启动 DolphinScheduler 并体验核心功能,涵盖前置环境准备、插件依赖下载、用户免密配置、服务启停、元数据库切换与资源中心配置等完整实操流程,并辅以仓库源码与配置文件佐证底层实现。读者学完后可以独立完成一套可运行的 Standalone 环境搭建,并理解其"内存式 H2 + 内置注册中心"的架构边界,为后续迁移到伪集群或生产集群部署打下基础。

Standalone 是什么:极速体验的定位与适用边界

Standalone 是 DolphinScheduler 专为快速体验设计的单机运行形态。它把调度系统所需的各个服务(API Server、Master Server、Worker Server、Alert Server)打包进一个进程统一启动,用户无需预先安装任何外部中间件即可在几分钟内跑通完整流程。

官方文档对此定位做了明确说明,并给出了与其它部署方式的选型建议:

  • 新手体验功能:推荐使用 Standalone 方式;
  • 体验更完整的功能或更大的任务量:推荐使用伪集群部署;
  • 生产环境使用:推荐使用集群部署或 Kubernetes 部署。

从仓库结构可以佐证 Standalone 的"全家桶"特性:在 dolphinscheduler-standalone-server/pom.xml 中,standalone-server 模块以provided作用域聚合引用了dolphinscheduler-masterdolphinscheduler-workerdolphinscheduler-apidolphinscheduler-alert-server以及dolphinscheduler-task-alldolphinscheduler-datasource-alldolphinscheduler-storage-all等模块;而 StandaloneServer.java 只是一个标准的@SpringBootApplication入口,通过SpringApplication.run将上述所有服务在单进程内拉起。

重要约束:请务必先评估你的使用规模

官方文档明确警告:Standalone 仅建议在 20 个以下工作流时使用。原因是它采用内存式的 H2 Database 和 Zookeeper Testing Server,任务过多可能导致不稳定;并且如果重启或停止 standalone-server,内存中数据库里的数据会被清空(工作流定义、调度记录等元数据丢失)。

但这不是"无法持久化"的死刑:Standalone 支持将元数据持久化到外部数据库(如 MySQL 或 PostgreSQL),具体方法见下文「配置数据库」一节。

前置准备工作

JDK 环境

Standalone 运行需要 JDK 1.8 或 11。安装后需要配置JAVA_HOME环境变量,并将其下的bin目录追加到PATH环境变量中。如果你的环境中已有满足要求的 JDK,可以跳过这一步。

配置完成后可通过以下命令验证:

echo $JAVA_HOME java -version

二进制安装包

在 Apache DolphinScheduler 官方下载页面获取对应版本的二进制包(文件名形如apache-dolphinscheduler-*-bin.tar.gz)。

下载插件依赖

从 3.3.0 版本开始,二进制包不再内置插件依赖,需要用户自行下载。官方提供了一键安装脚本(同样见伪集群部署文档):

bash ./bin/install-plugins.sh 3.3.0

脚本会读取conf/plugins_config配置文件来决定下载哪些插件。从仓库中的 config/plugins_config 可以看到其格式:以--task-plugins----datasource-plugins----storage-plugins----alert-plugins--等分节列出全部可用插件 artifactId,--end--表示该节结束。

例如,如果你只需要 Shell 任务插件,可以精简为:

--task-plugins-- dolphinscheduler-task-shell --end--

Standalone 最小化运行需要下载两个插件依赖

  • dolphinscheduler-task-shell:运行 Shell 任务所需的执行插件;
  • dolphinscheduler-storage-hdfs:资源中心的存储插件(Standalone 默认使用本地文件系统存储,该插件是资源中心功能的实现基础)。

参考 script/install-plugins.sh 的实现,脚本通过 Mavendependency:getorg.apache.dolphinscheduler组拉取指定版本、带shadeclassifier 的插件 jar,并放入plugins/{plugin_dir}目录:

mvnw dependency:get -DgroupId=org.apache.dolphinscheduler -DartifactId=${line} -Dversion=${version} -Dclassifier=shade -Ddest=${DOLPHINSCHEDULER_HOME}/plugins/${plugin_dir}

提示:如果你在启动服务时遇到ClassNotFoundException错误,请检查对应插件依赖是否已下载。例如dolphinscheduler-datasource-mysql中不包含mysql-connector-java.jar,这类与 Apache LICENSE V2 不兼容的第三方驱动需要手动放置。

配置用户免密及权限

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这行,请一并注释掉(否则免密 sudo 可能无法在无 TTY 环境下正常工作);
  • 新手如果暂时不理解多租户机制,可以忽略该步骤,但在生产/伪集群模式下必须配置正确。

该机制在common.properties中有对应开关sudo.enable=true(见 dolphinscheduler-common/src/main/resources/common.properties),注释说明:置为true时以租户用户身份执行、部署用户需要 sudo 权限;置为false时以部署用户身份执行、不需要 sudo 权限。

启动 DolphinScheduler Standalone Server

解压并启动

二进制压缩包中已包含 standalone 启动脚本,解压后即可快速启动:

# 解压并运行 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-standalone-server/src/main/assembly/dolphinscheduler-standalone-server.xml 可以看到,standalone-server 的目录结构在打包时被组装为standalone-server/目录,包含:

  • conf/application.yamlcommon.propertiesdolphinscheduler_env.sh、数据库 SQL 脚本、任务类型配置等;
  • bin/:启动脚本;
  • ui/:前端 UI 静态资源(来自dolphinscheduler-ui/dist);
  • libs/:聚合的各服务依赖 jar。

登录 DolphinScheduler

服务启动成功后,浏览器访问以下地址即可登录系统 UI:

http://localhost:12345/dolphinscheduler/ui

默认的用户名和密码是admin / dolphinscheduler123

启停服务:dolphinscheduler-daemon.sh 全命令

./bin/dolphinscheduler-daemon.sh是统一的启停脚本,除了 standalone 外也支持 api-server、master-server、worker-server、alert-server 等服务的启停。Standalone 相关的全部命令如下:

# 启动 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

深入阅读仓库中的 script/dolphinscheduler-daemon.sh,可以了解脚本的几个关键行为:

  • 脚本用法为dolphinscheduler-daemon.sh (start|stop|status) <api-server|master-server|worker-server|alert-server|standalone-server>,不传参数或参数不足时会打印 usage 并退出;
  • 环境变量覆盖机制:启动前若bin/env/dolphinscheduler_env.sh存在,会用它覆盖<server>/conf/dolphinscheduler_env.sh,让用户只需维护一份全局环境配置;
  • PID 与日志管理:每个服务的 PID 文件存放在$DOLPHINSCHEDULER_HOME/<server>/pid,日志输出到<server>/logs/目录;standalone 的日志文件为standalone-server/logs/standalone-server-${HOSTNAME}.out
  • 优雅停止:stop 时会先pkill -P结束子进程,等待 5 秒(STOP_TIMEOUT=5),若进程仍存活则强制kill -9
  • 重复启动防护:若检测到服务已在运行,会提示 "running as process ... Stop it first" 并拒绝再次启动;
  • 状态查询status通过 PID 文件判断进程是否存活,RUNNING 显示绿色、STOP 显示红色。

注意:Python 网关服务(Python Gateway Service)默认关闭。如果想启动它,需要修改 YAML 配置文件api-server/conf/application.yaml,将python-gateway.enabled设置为true

配置数据库:从内存 H2 切换为外部 MySQL/PostgreSQL

Standalone Server 默认使用H2 数据库存储元数据,这是为了上手简单——启动服务器之前无需先启动任何数据库。但如前所述,内存 H2 在服务重启后数据会清空,因此如果想持久化元数据,必须切换为外部数据库

完整的数据源配置说明见 数据源配置,其中「Standalone 切换元数据库」一节以 MySQL 为例给出了完整步骤。

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

参照数据源配置文档中的「伪分布式/分布式安装初始化数据库」一节创建并初始化数据库。

MySQL 5.6/5.7 示例:

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 示例:

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 示例:

# 采用命令行工具登陆 PostgreSQL psql # 创建数据库 postgres=# CREATE DATABASE dolphinscheduler; # 修改 {user} 和 {password} 为你希望的用户名和密码 postgres=# CREATE USER {user} PASSWORD {password}; postgres=# ALTER DATABASE dolphinscheduler OWNER TO {user}; # 退出 PostgreSQL postgres=#\q # 向配置文件新增登陆权限并重载 PostgreSQL 配置,替换 {ip} 为对应的 DS 集群服务器 IP 地址段 echo "host dolphinscheduler {user} {ip} md5" >> $PGDATA/pg_hba.conf pg_ctl reload

⚠️ 时区配置提醒:避免使用CST等模糊时区标识符,可能造成调度时间错误。推荐使用明确的时区,如serverTimezone=Asia/Shanghai

完成建库后,通过快速 Shell 脚本初始化数据库表结构:

bash tools/bin/upgrade-schema.sh

第二步:设置环境变量并放置 JDBC 驱动

使用 MySQL 时需要手动下载 mysql-connector-java 驱动(元数据库场景要求8.0.16 及以上版本),并移动到各模块的libs目录,包括api-server/libsalert-server/libsmaster-server/libsworker-server/libs,同时将驱动放到./standalone-server/libs/standalone-server/目录下。

然后设定环境变量连接 MySQL:

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}

其中{address}{user}{password}需要替换为实际数据库地址、用户名和密码。

第三步:启动并验证

完成以上配置后启动 standalone-server,此时元数据已连接到 MySQL。重启或停止 standalone-server 不会清空数据库中的数据,工作流定义等元数据将得到持久化。

注意:环境变量配置会覆盖各服务application.yaml中的对应配置。例如SPRING_DATASOURCE_URL对应application.yaml中的spring.datasource.url,以此类推(详见伪集群部署文档中关于配置覆盖规则的说明)。同时注意,若使用 MySQL 作为元数据库,则DATABASE需设置为mysql并同步修改 URL、用户名、密码三个变量;SPRING_JACKSON_TIME_ZONE建议设置为明确的时区值(如Asia/Shanghai)。

资源中心配置:修改默认存储路径

DolphinScheduler 默认使用本地模式的目录/tmp/dolphinscheduler作为资源中心。如果需要修改资源中心目录,请修改配置文件conf/common.properties中 resource 的相关配置项。

从仓库中的 dolphinscheduler-common/src/main/resources/common.properties 可以看到与资源中心直接相关的核心配置:

配置项默认值说明
data.basedir.path/tmp/dolphinscheduler用户数据本地目录路径,需确保目录存在且具备读写权限
resource.storage.typeLOCAL资源存储类型:LOCALHDFSS3OSSGCSABSOBSCOS。LOCAL 是默认类型,本质上是resource.hdfs.fs.defaultFS = file:///的 HDFS 特例
resource.storage.upload.base.path/tmp/dolphinscheduler资源文件存储的基础路径,需确保目录存在且具备读写权限,官方建议生产环境使用/dolphinscheduler
resource.query.interval10000资源查询间隔
resource.hdfs.root.userhdfs使用 HDFS 存储时,需保证该用户在 HDFS 根路径下有创建目录的权限
resource.hdfs.fs.defaultFShdfs://mycluster:8020使用 S3 时形如s3a://dolphinscheduler;使用 HDFS 且开启 namenode HA 时,需将core-site.xmlhdfs-site.xml复制到 conf 目录

重要限制:LOCAL 模式不支持分布式读写,意味着资源只能在单机使用,除非挂载共享文件系统。这也是 Standalone 定位为"极速体验"而非生产形态的另一个体现。当需要多机共享资源时,应切换为 HDFS/S3/OSS 等分布式存储类型,并为对应存储类型配置合适的resource.hdfs.fs.defaultFS等参数。

小结:Standalone 的完整体验路径

至此,你已经完成了 DolphinScheduler Standalone 极速体验版的完整搭建:

  1. 环境准备:安装 JDK 1.8/11 并下载二进制包;
  2. 插件依赖:通过install-plugins.sh安装最小化运行所需的dolphinscheduler-task-shelldolphinscheduler-storage-hdfs
  3. 用户权限:创建部署用户并配置 sudo 免密,支撑多租户任务执行;
  4. 启动服务dolphinscheduler-daemon.sh start standalone-server一键拉起,浏览器访问http://localhost:12345/dolphinscheduler/uiadmin/dolphinscheduler123登录;
  5. 按需演进:20 个工作流以内、可接受重启丢数据的场景直接使用内存 H2;需要元数据持久化时切换 MySQL/PostgreSQL 并通过环境变量注入连接信息;需要更多任务量或完整功能时参考伪集群部署,生产环境则参考集群部署或 Kubernetes 部署。

这套"先 Standalone 体验、再按需升级部署形态"的路径,可以让开发者以最低成本验证 DolphinScheduler 的建模、调度、告警等核心能力,再平滑过渡到更完整的部署架构。

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 12:30:30

Introduction

Introduction 【免费下载链接】curriculum The open curriculum for learning web development 项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum This file should flag 3 errors due to the "Lesson overview", "Knowledge check", …

作者头像 李华
网站建设 2026/9/15 12:28:43

WTF-Solidity 教程:ERC-2612 ERC20Permit 签名授权实战与源码剖析

WTF-Solidity 教程&#xff1a;ERC-2612 ERC20Permit 签名授权实战与源码剖析 【免费下载链接】WTF-Solidity WTF Solidity 极简入门教程&#xff0c;供小白们使用。Now supports English! 官网: https://wtf.academy 项目地址: https://gitcode.com/GitHub_Trending/wt/WTF-…

作者头像 李华