首页
/ 基于 Rainbond 一键部署 Apache DolphinScheduler 高可用集群:从应用到源码的完整实践指南

基于 Rainbond 一键部署 Apache DolphinScheduler 高可用集群:从应用到源码的完整实践指南

2026-09-14 19:58:33作者:田桥桑Industrious

适用场景:本文面向不熟悉 Kubernetes、容器化等复杂技术的用户,讲解如何通过 Rainbond 云原生应用管理平台在 K8s 上一键部署高可用的 Apache DolphinScheduler 集群,并完成节点伸缩、配置修改、Python 3 支持与 Hadoop/Spark/DataX 大数据组件接入。读完本文,你将掌握从应用市场安装、拓扑可视化管理、Worker 横向扩容到大数据生态集成的完整实战路径,并能结合源码理解其底层工作机制。

本文内容以仓库内官方文档 rainbond.md(中文版见 docs/docs/zh/guide/integration/rainbond.md)为核心,结合 DolphinScheduler 源码进行原理级补充。Rainbond 是一款云原生应用管理平台,它把 Kubernetes 的能力封装为可视化操作,用户无需直接面对 PodDeploymentService 等概念,即可获得生产级的容器编排能力——这正是 DolphinScheduler 通过 Rainbond 一键部署的核心价值。

一、前置条件:一个可用的 Rainbond 平台

使用本文方案的前提是已经具备一套可访问的 Rainbond 云原生应用管理平台。Rainbond 官方提供了快速安装指引(见官方文档 "Rainbond Quick install"),常见安装方式包括:

  • 在已有 Kubernetes 集群上通过 Helm 或安装脚本部署 Rainbond 控制台;
  • 在单机上以 Docker 方式拉起一个最小化的 Rainbond 演示环境。

安装完成后,你会获得 Rainbond 的 Web 控制台地址与管理员账号。平台就绪后即可进入下一节的一键部署流程。

为什么选择 Rainbond 而不是直接操作 K8s? 从 DolphinScheduler 官方部署形态看,项目同时维护了 Kubernetes Helm ChartDocker Compose 两套部署资产。Helm 方案功能完整但对使用者的 K8s 熟练度有要求;而 Rainbond 将"选择集群、选择应用、选择版本、点击安装"这一系列动作封装为图形化流程,把 Helm/原生 YAML 的复杂度收敛到按钮之下,显著降低了运维门槛。

二、DolphinScheduler 集群一键部署

2.1 从开源应用商店搜索并安装

登录 Rainbond 控制台后,按以下路径进入应用市场:

平台管理 → 应用市场 → 开源应用商店

在应用商店中搜索关键字 dolphinscheduler,即可找到 DolphinScheduler 应用,如下图所示:

在 Rainbond 开源应用商店中搜索 dolphinscheduler

点击应用右侧的 安装 按钮,进入应用安装页面。安装页面需要填写以下四项信息:

选择项 说明
团队名称 用户自建的工作空间,以命名空间(namespace)隔离
集群名称 选择 DolphinScheduler 被部署到哪一个 K8s 集群
选择应用 选择 DolphinScheduler 被部署到哪一个应用,一个应用内可包含若干相互关联的组件
应用版本 选择 DolphinScheduler 的版本

填写完成后点击 确定,系统即开始安装,并自动跳转至应用视图:

DolphinScheduler 应用安装页面

2.2 等待安装完成并查看拓扑

安装过程通常需要几分钟时间。安装完成后,应用视图会以拓扑图的形式展示 DolphinScheduler 各服务组件(API、Master、Worker、Alert 等)及其依赖关系:

DolphinScheduler 组件拓扑视图

结合 docker-compose.yml 可以看到,DolphinScheduler 集群由 dolphinscheduler-apidolphinscheduler-masterdolphinscheduler-workerdolphinscheduler-alert 等独立服务构成,并依赖 PostgreSQL(元数据库)与 ZooKeeper(注册与调度协调)两个基础组件。Rainbond 的拓扑图正是对这一架构的可视化映射,组件之间的连线即服务依赖关系。

2.3 访问 DolphinScheduler-API

点击应用内的 访问 按钮,即可通过 Rainbond 默认提供的域名访问 DolphinScheduler-API 组件,进入 DolphinScheduler Web UI。

默认登录账号密码为:

  • 用户名:admin
  • 密码:dolphinscheduler123

提示:生产环境首次登录后请务必修改默认密码。默认凭据同时出现在仓库 README_zh_CN.md 的快速上手章节中,属于公开的初始口令,不应长期保留。

三、API / Master / Worker 节点伸缩与高可用

DolphinScheduler 的 API、Master、Worker 三类组件均支持横向伸缩(Scale)为多个实例,多实例共同承担负载即可保证整个集群的高可用性。其高可用能力有明确的架构支撑:

在 Rainbond 中伸缩操作非常直观。以 Worker 为例:

  1. 进入 Worker 组件
  2. 打开 伸缩 页面;
  3. 设置实例数量(例如从 1 调整为 3),保存后 Rainbond 会自动创建对应数量的实例并接入负载均衡。

Worker 组件伸缩设置

如何验证伸缩是否生效? 进入 DolphinScheduler Web UI 的 监控中心 → Worker 页面,可以看到当前注册在线的所有 Worker 节点及其详细状态(主机、端口、心跳等):

DolphinScheduler 监控中心 Worker 节点列表

从源码看 Worker 注册机制:Worker 在启动时会向注册中心注册自己的地址与能力信息,Master 通过注册中心发现可用 Worker 并执行任务分发。因此每新增一个 Worker 实例,它都会自动出现在监控中心的节点列表中,无需人工登记——这就是"设置实例数即完成扩容"这一体验背后的实现原理。

四、配置文件:API 与 Worker 共用 common.properties

DolphinScheduler 的 API 与 Worker 服务共用同一份配置文件 /opt/dolphinscheduler/conf/common.properties。修改配置时,只需修改 API 服务的那一份,即可同步影响 Worker 服务。

这一设计可以结合 Docker 镜像结构理解:以 worker-server.dockerfile 为例,镜像将二进制发布包解压至 /opt/dolphinscheduler 目录(ENV DOLPHINSCHEDULER_HOME=/opt/dolphinscheduler),配置目录正是 $DOLPHINSCHEDULER_HOME/conf。在 Rainbond 部署中,API 与 Worker 通过共享配置卷或配置同步机制保持 common.properties 一致,因此只需维护 API 侧的一份配置。

常见的可配置项包括:

  • 资源相关:本地资源存储路径、HDFS/S3 等远端存储地址;
  • 注册中心相关:ZooKeeper 连接串等(也可通过环境变量覆盖);
  • 任务相关:任务日志保留策略、任务执行相关默认参数等。

实操建议:修改配置后需要重启对应组件(或触发 Rainbond 的滚动更新)使配置生效;修改前建议先在测试环境验证,避免影响线上任务。

五、让 Worker 支持 Python 3

DolphinScheduler 的 Python 任务类型(dolphinscheduler-task-python)默认通过 PYTHON_LAUNCHER 环境变量指定 Python 解释器路径。官方 Rainbond 镜像中的 Worker 服务默认已安装 Python 3,使用时只需为 Worker 组件添加环境变量:

PYTHON_LAUNCHER=/usr/bin/python3

从源码看该变量的生效路径PythonTask.java 中明确说明:如果用户设置了 PYTHON_LAUNCHER 环境变量则使用该变量指定的解释器,否则默认使用 python。最终执行命令形如:

python3 test.py

(对应的测试用例见 PythonTaskTest.java,其中断言 buildPythonExecuteCommand("test.py") 的结果为 ${PYTHON_LAUNCHER} test.py。)

同样的机制也服务于其他依赖 Python 的任务插件,例如:

  • OpenMLDB 任务OpenmldbTask.java):同样读取 PYTHON_LAUNCHER 环境变量作为默认解释器;
  • DataX 任务:执行命令模板为 ${PYTHON_LAUNCHER} ${DATAX_LAUNCHER} ...(见下文第六节)。

因此,为 Worker 组件配置 PYTHON_LAUNCHER=/usr/bin/python3 后,Python、DataX、OpenMLDB 等依赖 Python 运行环境的任务类型均可正常执行。

六、让 Worker 支持 Hadoop / Spark / DataX 等大数据组件

Hadoop、Spark、DataX 等组件体积较大,且在不同版本、不同发行版之间差异明显,因此 DolphinScheduler 的官方镜像默认不内置这些运行时,而是将其作为可选的"外部软件包"放置在工作节点共享目录 /opt/soft 下,由任务插件通过环境变量(如 ${DATAX_LAUNCHER})定位并调用。

DataX 为例,完整的接入步骤如下。

6.1 安装"通用数据初始化插件"

Rainbond 团队视图 → 插件 → 从应用商店安装插件 中搜索 通用数据初始化插件 并安装。该插件的作用是在组件启动前自动下载并解压指定的软件包。

6.2 开通插件并配置下载参数

进入 Worker 组件 → 插件 → 开通"通用数据初始化插件",修改以下配置项:

配置项 说明 示例值
FILE_URL 需要下载的软件包地址 http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
FILE_PATH 下载并解压的目标目录 /opt/soft
LOCK_PATH 初始化锁路径(防止并发重复初始化) /opt/soft

6.3 更新组件使插件生效

保存配置后 更新组件,初始化插件会自动下载 datax.tar.gz 并解压到 /opt/soft 目录:

Worker 组件上的初始化插件运行状态

6.4 从源码理解 DataX 调用链

DataxTask.java 中,DataX 任务最终生成的执行命令模板为:

${PYTHON_LAUNCHER} ${DATAX_LAUNCHER} --jvm="..." [-p "自定义参数"] <job配置json路径>

其中:

  • ${PYTHON_LAUNCHER}:Python 解释器,即第五节配置的环境变量;
  • ${DATAX_LAUNCHER}:DataX 启动脚本路径,需要在 Worker 环境中通过环境变量指定(对应 /opt/soft 下解压出的 datax/bin/datax.py 等);
  • --jvm:DataX 运行 JVM 参数(源码中通过 loadJvmEnv 基于 -Xms/-Xmx 生成,最小为 1G);
  • -p:透传自定义参数,实现动态列名等运行时替换能力。

整个调用链依赖三要素齐备:Python 解释器PYTHON_LAUNCHER)、DataX 运行时${DATAX_LAUNCHER},由初始化插件放到 /opt/soft)、共享目录/opt/soft 在各组件间挂载共享)。

为什么是 /opt/soft 查看 docker-compose.yml 可以看到,dolphinscheduler-apidolphinscheduler-worker 等服务都挂载了名为 dolphinscheduler-shared-local 的共享卷并映射到容器内 /opt/soft。Rainbond 部署沿用了这一目录约定:把 Hadoop/Spark/DataX 等软件包解压到共享目录,即可被所有 Worker 实例访问。

Hadoop、Spark 的接入方式与 DataX 同理:通过初始化插件(或自制镜像)将对应发行版解压到 /opt/soft,并在 Worker 环境变量中配置其 bin 目录路径。Spark 任务插件(dolphinscheduler-task-spark)、MapReduce 任务插件(dolphinscheduler-task-mr)等均通过类似的环境变量机制定位外部运行时。

七、运维要点与排障提示

  1. 修改 common.properties:仅改 API 服务一份配置即可,但需注意同步重启受影响的组件(API/Worker),使新配置加载生效。
  2. 伸缩 Worker 后节点未出现在监控中心:请检查 Worker 组件是否成功注册到注册中心(ZooKeeper),并确认新实例健康检查通过;Rainbond 拓扑图中组件状态为运行中时,通常注册也已完成。
  3. DataX 任务报"找不到 ${DATAX_LAUNCHER}":优先检查三件事——/opt/soft 下是否确实解压出了 DataX;Worker 环境变量是否指向了解压后的启动脚本;PYTHON_LAUNCHER 是否指向可用的 Python 3。
  4. Python 任务执行失败:确认 PYTHON_LAUNCHER=/usr/bin/python3 已在 Worker 组件环境变量中配置,且容器内该路径真实存在(可在 Rainbond 终端中执行 which python3 验证)。
  5. 高可用验证:可主动将某个 Master/Worker 实例下线,观察任务是否由剩余实例自动接管(容错机制相关设计可参考文档 架构设计)。

结语

通过 Rainbond 开源应用商店,DolphinScheduler 的部署从"编写 YAML、管理 Helm Chart、手动配置 ZooKeeper"简化为"搜索、安装、访问"三步;而节点伸缩、配置文件共享、Python/DataX 支持等能力背后,均有清晰的源码与镜像设计作为支撑。本文所涉部署与配置能力均可在当前仓库对应文档与源码中进一步核实:

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

项目优选

收起
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