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-master、dolphinscheduler-worker、dolphinscheduler-api、dolphinscheduler-alert-server以及dolphinscheduler-task-all、dolphinscheduler-datasource-all、dolphinscheduler-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:get从org.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.yaml、common.properties、dolphinscheduler_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/libs、alert-server/libs、master-server/libs、worker-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.type | LOCAL | 资源存储类型:LOCAL、HDFS、S3、OSS、GCS、ABS、OBS、COS。LOCAL 是默认类型,本质上是resource.hdfs.fs.defaultFS = file:///的 HDFS 特例 |
resource.storage.upload.base.path | /tmp/dolphinscheduler | 资源文件存储的基础路径,需确保目录存在且具备读写权限,官方建议生产环境使用/dolphinscheduler |
resource.query.interval | 10000 | 资源查询间隔 |
resource.hdfs.root.user | hdfs | 使用 HDFS 存储时,需保证该用户在 HDFS 根路径下有创建目录的权限 |
resource.hdfs.fs.defaultFS | hdfs://mycluster:8020 | 使用 S3 时形如s3a://dolphinscheduler;使用 HDFS 且开启 namenode HA 时,需将core-site.xml、hdfs-site.xml复制到 conf 目录 |
重要限制:LOCAL 模式不支持分布式读写,意味着资源只能在单机使用,除非挂载共享文件系统。这也是 Standalone 定位为"极速体验"而非生产形态的另一个体现。当需要多机共享资源时,应切换为 HDFS/S3/OSS 等分布式存储类型,并为对应存储类型配置合适的
resource.hdfs.fs.defaultFS等参数。
小结:Standalone 的完整体验路径
至此,你已经完成了 DolphinScheduler Standalone 极速体验版的完整搭建:
- 环境准备:安装 JDK 1.8/11 并下载二进制包;
- 插件依赖:通过
install-plugins.sh安装最小化运行所需的dolphinscheduler-task-shell与dolphinscheduler-storage-hdfs; - 用户权限:创建部署用户并配置 sudo 免密,支撑多租户任务执行;
- 启动服务:
dolphinscheduler-daemon.sh start standalone-server一键拉起,浏览器访问http://localhost:12345/dolphinscheduler/ui以admin/dolphinscheduler123登录; - 按需演进: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),仅供参考