DolphinScheduler 3.2.1 单机多节点部署实践
在单台服务器上模拟分布式环境运行 DolphinScheduler,能够让核心组件(Master、Worker、API Server)共存于同一节点,适合功能验证与中等规模任务处理场景。
环境依赖清单
部署前需确保以下组件就绪:
- JDK:1.8 及以上版本,正确设置
JAVA_HOME与PATH - 数据库:PostgreSQL 8.2.15+ 或 MySQL 5.7+(MySQL 需准备 8.0.16+ 的 JDBC 驱动)
- 注册中心:ZooKeeper 3.8.0+
- 进程分析工具:
- macOS 系统安装
pstree - Linux 各发行版安装
psmisc
- macOS 系统安装
- 二进制分发包:从官方渠道获取对应版本的 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.yaml中python-gateway.enabled: false。