DolphinScheduler部署指南:四种部署方式详解
本文详细介绍了Apache DolphinScheduler的四种部署方式:Standalone模式、Cluster集群模式、Docker容器化部署和Kubernetes云原生部署。Standalone模式适合快速体验和开发测试,将所有组件集成在单个JVM进程中;Cluster模式为生产环境设计,采用分布式架构实现高可用性;Docker部署提供容器化解决方案,便于快速部署和扩展;Kubernetes部署则充分利用云原生环境的弹性伸缩和资源管理能力。每种方式都包含详细的环境准备、配置步骤和架构解析。
Standalone模式快速体验
Standalone模式是DolphinScheduler最快速、最简单的部署方式,专为开发测试和快速体验设计。它将所有核心组件(Master、Worker、API Server、Alert Server等)集成在单个JVM进程中运行,无需复杂的集群配置,让您能够在几分钟内启动并体验DolphinScheduler的全部功能。
环境准备与要求
在开始Standalone模式部署前,请确保您的系统满足以下基本要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Linux/Windows/macOS | Linux (CentOS 7+/Ubuntu 18.04+) |
| Java版本 | JDK 8+ | JDK 11+ |
| 内存 | 4GB RAM | 8GB RAM |
| 存储 | 10GB可用空间 | 20GB可用空间 |
| 数据库 | 内置H2(默认) | MySQL 5.7+/PostgreSQL 10+ |
快速启动步骤
1. 下载与解压
首先下载最新版本的DolphinScheduler发行包:
# 创建安装目录
mkdir -p /opt/dolphinscheduler
cd /opt/dolphinscheduler
# 下载最新版本(以3.2.0为例)
wget https://dlcdn.apache.org/dolphinscheduler/3.2.0/apache-dolphinscheduler-3.2.0-bin.tar.gz
# 解压安装包
tar -zxvf apache-dolphinscheduler-3.2.0-bin.tar.gz
cd apache-dolphinscheduler-3.2.0-bin
2. 数据库配置(可选)
Standalone模式默认使用内置的H2数据库,适合快速体验。如果需要使用外部数据库,可修改配置文件:
# 编辑数据库配置
vi conf/datasource.properties
# 修改以下配置(以MySQL为例)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=your_password
3. 环境变量配置
设置必要的环境变量:
# 设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# 设置DolphinScheduler安装目录
export DOLPHINSCHEDULER_HOME=/opt/dolphinscheduler/apache-dolphinscheduler-3.2.0-bin
# 添加到PATH
export PATH=$JAVA_HOME/bin:$DOLPHINSSCHEDULER_HOME/bin:$PATH
4. 启动Standalone服务
使用提供的启动脚本快速启动:
# 赋予执行权限
chmod +x bin/dolphinscheduler-daemon.sh
# 启动Standalone服务
bin/dolphinscheduler-daemon.sh start standalone-server
启动过程会显示详细的日志信息,您可以通过以下命令查看启动状态:
# 查看启动状态
bin/dolphinscheduler-daemon.sh status standalone-server
# 查看实时日志
tail -f logs/standalone-server.log
架构原理与组件交互
Standalone模式虽然将所有组件集成在单个进程中,但其内部仍然保持着清晰的模块化架构:
首次登录与基本配置
服务启动成功后,通过浏览器访问管理界面:
- 访问地址: http://localhost:12345/dolphinscheduler
- 默认用户名: admin
- 默认密码: dolphinscheduler123
首次登录后建议进行以下基本配置:
1. 修改管理员密码
-- 如果使用H2数据库,密码加密存储在t_ds_user表
UPDATE t_ds_user SET user_password = '加密后的新密码' WHERE user_name = 'admin';
2. 创建测试项目
在Web界面中创建第一个项目:
- 点击"项目管理" → "创建项目"
- 输入项目名称:test-demo
- 选择项目描述:测试项目
3. 配置工作环境
# 环境管理配置示例
environment:
name: dev-environment
config: |
export SPARK_HOME=/opt/spark
export PYTHON_PATH=/usr/bin/python3
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
创建第一个工作流
通过一个简单的Shell任务工作流来体验DolphinScheduler的功能:
步骤1:创建工作流定义
{
"name": "first-workflow",
"description": "第一个测试工作流",
"tasks": [
{
"name": "shell-task-1",
"type": "SHELL",
"params": {
"rawScript": "echo 'Hello DolphinScheduler!' && date"
}
}
]
}
步骤2:配置任务参数
# Shell任务参数配置示例
script:
type: shell
command: |
#!/bin/bash
echo "任务开始时间: $(date)"
echo "当前工作目录: $(pwd)"
echo "环境变量: $JAVA_HOME"
sleep 2
echo "任务执行完成"
步骤3:执行与监控
工作流执行过程中,可以通过以下方式监控状态:
常见问题排查
1. 启动失败排查
# 检查端口占用
netstat -tlnp | grep 12345
# 检查Java进程
jps -l | grep dolphinscheduler
# 查看详细错误日志
tail -n 100 logs/standalone-server-error.log
2. 性能优化建议
对于Standalone模式,可以通过以下配置提升性能:
# 修改conf/application.properties
server.tomcat.max-threads=200
server.tomcat.min-spare-threads=20
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
3. 内存调整
根据服务器配置调整JVM参数:
# 修改bin/standalone.sh中的JVM参数
export JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxMetaspaceSize=512m"
进阶功能体验
Standalone模式虽然简化了部署,但仍然支持DolphinScheduler的所有核心功能:
1. 多类型任务支持
tasks:
- name: python-task
type: PYTHON
params:
rawScript: |
print("Python任务执行")
import pandas as pd
print(f"Pandas版本: {pd.__version__}")
- name: sql-task
type: SQL
params:
type: MYSQL
datasource: test-db
sql: "SELECT COUNT(*) FROM user_table"
- name: http-task
type: HTTP
params:
url: "https://api.example.com/data"
method: GET
2. 工作流调度策略
{
"schedule": {
"startTime": "2024-01-01 00:00:00",
"endTime": "2024-12-31 23:59:59",
"crontab": "0 0 * * * ?",
"timezone": "Asia/Shanghai"
},
"failureStrategy": "CONTINUE",
"warningType": "NONE",
"warningGroupId": 0
}
通过Standalone模式的快速体验,您可以在完全功能的环境中进行开发测试,为后续的生产环境部署奠定坚实基础。这种部署方式特别适合个人学习、功能验证和小型项目开发场景。
Cluster集群模式生产部署
Apache DolphinScheduler的集群模式是为生产环境设计的高可用部署方案,采用分布式架构实现多Master和多Worker的协同工作。集群模式通过ZooKeeper作为注册中心,支持水平扩展和故障自动转移,能够满足企业级的高并发和高可用需求。
集群架构设计
DolphinScheduler集群模式采用主从架构,包含以下核心组件:
核心组件说明:
| 组件 | 数量 | 作用 | 高可用性 |
|---|---|---|---|
| API Server | ≥2 | 提供RESTful API接口 | 负载均衡 |
| Master Server | ≥2 | 工作流调度和任务分派 | 主备切换 |
| Worker Server | ≥N | 任务执行和资源管理 | 水平扩展 |
| ZooKeeper | ≥3 | 服务注册发现和协调 | 集群模式 |
| 数据库 | 1主多从 | 元数据存储 | 数据库高可用 |
环境准备与依赖
1. 系统要求
- 操作系统: Linux (CentOS 7+, Ubuntu 16.04+)
- Java: JDK 1.8+
- 数据库: MySQL 5.7+/PostgreSQL 10+
- 注册中心: ZooKeeper 3.4.6+
- 资源存储: HDFS/S3/本地存储
2. 数据库初始化
首先创建DolphinScheduler所需的数据库和用户:
-- 创建数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-- 创建用户并授权
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
FLUSH PRIVILEGES;
执行数据库初始化脚本:
# 解压安装包后执行初始化
mysql -h192.168.1.100 -udolphinscheduler -p dolphinscheduler < script/sql/dolphinscheduler_mysql.sql
集群配置详解
1. 公共配置文件 (common.properties)
# 数据存储路径
data.basedir.path=/opt/dolphinscheduler/data
# 资源存储类型 (LOCAL/HDFS/S3/OSS)
resource.storage.type=HDFS
resource.storage.upload.base.path=/dolphinscheduler
# HDFS配置
resource.hdfs.fs.defaultFS=hdfs://namenode:8020
resource.hdfs.root.user=hdfs
# ZooKeeper配置
registry.plugin.name=zookeeper
registry.plugin.basedir=/dolphinscheduler/nodes
2. Master Server配置
创建 conf/application-master.yml:
server:
port: 5678
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.100:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
username: dolphinscheduler
password: dolphinscheduler
registry:
type: zookeeper
zookeeper:
namespace: dolphinscheduler
connect-string: zk1:2181,zk2:2181,zk3:2181
session-timeout: 30s
connection-timeout: 9s
3. Worker Server配置
创建 conf/application-worker.yml:
server:
port: 1234
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.100:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
username: dolphinscheduler
password: dolphinscheduler
# Worker资源配置
worker:
groups: default
exec-threads: 100
heartbeat-interval: 10
host-weight: 100
4. API Server配置
创建 conf/application-api.yml:
server:
port: 12345
servlet:
context-path: /dolphinscheduler
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.100:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
username: dolphinscheduler
password: dolphinscheduler
# 安全配置
security:
jwt:
secret: dolphinscheduler123
expiration: 24h
集群部署流程
1. 节点规划
建议的生产环境节点分配方案:
| 服务器IP | 角色 | 配置要求 |
|---|---|---|
| 192.168.1.101 | API Server + Master | 8CPU/16GB |
| 192.168.1.102 | API Server + Master | 8CPU/16GB |
| 192.168.1.103 | Worker | 16CPU/32GB |
| 192.168.1.104 | Worker | 16CPU/32GB |
| 192.168.1.105 | ZooKeeper | 4CPU/8GB |
| 192.168.1.106 | ZooKeeper | 4CPU/8GB |
| 192.168.1.107 | ZooKeeper | 4CPU/8GB |
2. 分步部署
第一步:在所有节点安装基础环境
# 安装JDK
yum install -y java-1.8.0-openjdk-devel
# 创建部署用户
useradd dolphinscheduler
echo "dolphinscheduler" | passwd --stdin dolphinscheduler
# 配置SSH免密登录
su - dolphinscheduler
ssh-keygen -t rsa
ssh-copy-id dolphinscheduler@192.168.1.101
ssh-copy-id dolphinscheduler@192.168.1.102
# ... 其他节点
第二步:部署ZooKeeper集群
# 下载并解压ZooKeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/
# 配置ZooKeeper
cd /opt/apache-zookeeper-3.6.3-bin/conf
cp zoo_sample.cfg zoo.cfg
# 修改配置
cat > zoo.cfg << EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=60
server.1=192.168.1.105:2888:3888
server.2=192.168.1.106:2888:3888
server.3=192.168.1.107:2888:3888
EOF
# 创建数据目录并启动
mkdir -p /data/zookeeper
echo "1" > /data/zookeeper/myid # 在105节点
echo "2" > /data/zookeeper/myid # 在106节点
echo "3" > /data/zookeeper/myid # 在107节点
./bin/zkServer.sh start
第三步:部署DolphinScheduler组件
# 在所有节点解压安装包
tar -zxvf apache-dolphinscheduler-3.1.5-bin.tar.gz -C /opt/
cd /opt/apache-dolphinscheduler-3.1.5-bin
# 配置环境变量
cat > conf/env/dolphinscheduler_env.sh << EOF
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=/etc/hadoop/conf
export SPARK_HOME=/opt/spark
export PYTHON_HOME=/usr/bin/python3
export HIVE_HOME=/opt/hive
EOF
# 根据节点角色修改配置
# Master节点配置
cp conf/application-master.yml.template conf/application-master.yml
# Worker节点配置
cp conf/application-worker.yml.template conf/application-worker.yml
# API节点配置
cp conf/application-api.yml.template conf/application-api.yml
第四步:启动集群服务
# 在Master节点启动服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



