当前位置:首页 > 技术 > 正文内容

DolphinScheduler 3.2.1 单机多节点部署实践

访客 技术 2026年6月5日 1

在单台服务器上模拟分布式环境运行 DolphinScheduler,能够让核心组件(Master、Worker、API Server)共存于同一节点,适合功能验证与中等规模任务处理场景。

环境依赖清单

部署前需确保以下组件就绪:

  • JDK:1.8 及以上版本,正确设置 JAVA_HOMEPATH
  • 数据库:PostgreSQL 8.2.15+ 或 MySQL 5.7+(MySQL 需准备 8.0.16+ 的 JDBC 驱动)
  • 注册中心:ZooKeeper 3.8.0+
  • 进程分析工具
    • macOS 系统安装 pstree
    • Linux 各发行版安装 psmisc
  • 二进制分发包:从官方渠道获取对应版本的 DolphinScheduler 安装包

提示:Hadoop、Hive、Spark 等并非 DolphinScheduler 运行必需,但若调度任务涉及这些组件,则需提前配置对应环境。

系统用户与权限配置

dsuser 作为部署账户示例:

# 使用 root 执行
useradd dsuser
echo "your_secure_password" | passwd --stdin dsuser

# 配置 sudo 免密权限
sed -i '$adsuser  ALL=(ALL)  NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults\s*requirett/#Defaults requirett/' /etc/sudoers

# 授权安装目录
chown -R dsuser:dsuser apache-dolphinscheduler-*-bin
chmod -R 755 apache-dolphinscheduler-*-bin

关键点:多租户机制通过 sudo -u {user} 实现任务切换,部署账户必须具备免密 sudo 权限。

SSH 免密配置

su - dsuser
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

验证方式:执行 ssh localhost,无需输入密码即表示配置成功。

ZooKeeper 启动

cp conf/zoo_sample.cfg conf/zoo.cfg
# 编辑 conf/zoo.cfg,设置数据目录
# dataDir=./tmp/zookeeper
./bin/zkServer.sh start

核心配置文件调整

1. install_env.sh 配置

文件位置:bin/env/install_env.sh

ips="localhost"
sshPort="22"
masters="localhost"
workers="localhost:default"
alertServer="localhost"
apiServers="localhost"

installPath=/opt/dolphinscheduler
deployUser="dsuser"

2. dolphinscheduler_env.sh 配置

文件位置:bin/env/dolphinscheduler_env.sh

# Java 环境
export JAVA_HOME=${JAVA_HOME:-/usr/local/java}

# 数据存储配置
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"
export SPRING_DATASOURCE_USERNAME=ds_admin
export SPRING_DATASOURCE_PASSWORD=ds_passwd

# 服务参数
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-Asia/Shanghai}
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}

# 注册中心
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-localhost:2181}

# 可选任务组件路径
export HADOOP_HOME=${HADOOP_HOME:-/usr/local/hadoop}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/usr/local/hadoop/etc/hadoop}
export SPARK_HOME=${SPARK_HOME:-/usr/local/spark}
export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/usr/local/python/bin/python3}
export HIVE_HOME=${HIVE_HOME:-/usr/local/hive}
export FLINK_HOME=${FLINK_HOME:-/usr/local/flink}
export DATAX_LAUNCHER=${DATAX_LAUNCHER:-/usr/local/datax/bin/datax.py}

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$PYTHON_LAUNCHER:$DATAX_LAUNCHER:$PATH

数据库初始化

依据所选数据库类型,执行官方提供的初始化脚本完成库表创建。

服务部署与访问

# 执行安装
bash ./bin/install.sh

首次部署若出现多次 bin/dolphinscheduler-daemon.sh: No such file or directory 提示,属于正常现象,不影响最终部署结果。

部署完成后,通过浏览器访问:http://服务器IP:12345/dolphinscheduler/ui

默认凭证:用户名 admin / 密码 dolphinscheduler123

服务运维命令

# 全量启停
bash ./bin/start-all.sh
bash ./bin/stop-all.sh

# 单服务管理
bash ./bin/dolphinscheduler-daemon.sh start master-server
bash ./bin/dolphinscheduler-daemon.sh stop master-server

bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server

bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server

bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server

微服务独立配置:各服务目录下 <service>/conf/dolphinscheduler_env.sh 支持差异化环境变量。通过 dolphinscheduler-daemon.sh 启动时,会以 bin/env/dolphinscheduler_env.sh 覆盖服务级配置。

Python Gateway 默认随 api-server 启动,如需禁用,修改 api-server/conf/application.yamlpython-gateway.enabled: false

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。