当前位置: 首页 > news >正文

从零到一:手把手教你用Docker Compose快速部署DolphinScheduler 3.x集群(含避坑指南)

从零到一:手把手教你用Docker Compose快速部署DolphinScheduler 3.x集群(含避坑指南)

在当今数据驱动的时代,高效的任务调度系统已成为企业数据流水线不可或缺的组成部分。DolphinScheduler作为Apache顶级开源项目,以其可视化DAG工作流、丰富的任务类型支持和去中心化架构,正在成为越来越多企业的选择。本文将带你从零开始,通过Docker Compose这一轻量级容器编排工具,快速搭建一个功能完整的DolphinScheduler 3.x集群环境。

1. 环境准备与规划

在开始部署之前,我们需要明确几个关键点:

  • 硬件需求:即使是测试环境,也建议至少4GB内存和2核CPU
  • 软件依赖
    • Docker 20.10+
    • Docker Compose 2.0+
    • 现代浏览器(推荐Chrome或Edge)

注意:生产环境需要根据任务量和并发度适当调整资源配置

1.1 目录结构规划

合理的目录结构能避免后续的配置混乱。建议创建如下目录:

mkdir -p dolphinscheduler/{data,logs,resource}

这个结构将用于:

  • data:存放PostgreSQL数据库持久化数据
  • logs:存储各组件运行日志
  • resource:作为资源中心挂载点

2. Docker Compose文件解析

下面是经过优化的docker-compose.yml文件,包含了所有必要服务:

version: '3' services: postgresql: image: postgres:13 container_name: ds-postgres environment: POSTGRES_PASSWORD: dolphinscheduler POSTGRES_USER: dolphinscheduler POSTGRES_DB: dolphinscheduler volumes: - ./data/postgres:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U dolphinscheduler"] interval: 5s timeout: 5s retries: 5 zookeeper: image: zookeeper:3.8 container_name: ds-zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 healthcheck: test: ["CMD", "zkServer.sh", "status"] interval: 10s timeout: 5s retries: 3 dolphinscheduler-master: image: apache/dolphinscheduler:3.1.0 container_name: ds-master depends_on: postgresql: condition: service_healthy zookeeper: condition: service_healthy environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/dolphinscheduler SPRING_DATASOURCE_USERNAME: dolphinscheduler SPRING_DATASOURCE_PASSWORD: dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRING: zookeeper:2181 MASTER_EXEC_THREADS: 10 MASTER_EXEC_TASK_NUM: 20 volumes: - ./logs/master:/opt/dolphinscheduler/logs ports: - "5678:5678" command: ["master-server"] dolphinscheduler-worker: image: apache/dolphinscheduler:3.1.0 container_name: ds-worker depends_on: postgresql: condition: service_healthy zookeeper: condition: service_healthy environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/dolphinscheduler SPRING_DATASOURCE_USERNAME: dolphinscheduler SPRING_DATASOURCE_PASSWORD: dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRING: zookeeper:2181 WORKER_EXEC_THREADS: 20 WORKER_HOST_WEIGHT: 100 volumes: - ./logs/worker:/opt/dolphinscheduler/logs - ./resource:/tmp/dolphinscheduler/resource ports: - "1234:1234" command: ["worker-server"] dolphinscheduler-api: image: apache/dolphinscheduler:3.1.0 container_name: ds-api depends_on: postgresql: condition: service_healthy zookeeper: condition: service_healthy environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/dolphinscheduler SPRING_DATASOURCE_USERNAME: dolphinscheduler SPRING_DATASOURCE_PASSWORD: dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRING: zookeeper:2181 volumes: - ./logs/api:/opt/dolphinscheduler/logs ports: - "12345:12345" command: ["api-server"] dolphinscheduler-alert: image: apache/dolphinscheduler:3.1.0 container_name: ds-alert depends_on: postgresql: condition: service_healthy zookeeper: condition: service_healthy environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/dolphinscheduler SPRING_DATASOURCE_USERNAME: dolphinscheduler SPRING_DATASOURCE_PASSWORD: dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRING: zookeeper:2181 volumes: - ./logs/alert:/opt/dolphinscheduler/logs command: ["alert-server"] dolphinscheduler-ui: image: apache/dolphinscheduler:3.1.0-ui container_name: ds-ui depends_on: dolphinscheduler-api: condition: service_started ports: - "8888:8888"

2.1 关键配置说明

数据库配置

  • 使用PostgreSQL 13作为元数据存储
  • 密码建议在生产环境中修改为更复杂的值
  • 数据卷挂载确保数据持久化

ZooKeeper配置

  • 作为服务注册中心
  • 单节点模式适合测试,生产环境建议集群部署

Master Server

  • MASTER_EXEC_THREADS:控制主节点执行线程数
  • MASTER_EXEC_TASK_NUM:控制每个批次处理的任务数量

Worker Server

  • WORKER_EXEC_THREADS:工作节点并发线程数
  • WORKER_HOST_WEIGHT:负载均衡权重
  • 资源目录挂载实现任务间文件共享

3. 部署与初始化

3.1 启动服务

执行以下命令启动所有服务:

docker-compose up -d

可以通过以下命令观察启动日志:

docker-compose logs -f

3.2 数据库初始化

DolphinScheduler会在首次启动时自动初始化数据库表结构。可以通过以下命令检查初始化是否完成:

docker exec -it ds-postgres psql -U dolphinscheduler -c "\dt"

应该能看到约50张以t_ds_开头的表被创建。

3.3 访问Web UI

服务启动完成后,访问:

http://localhost:8888

使用默认凭据登录:

  • 用户名:admin
  • 密码:dolphinscheduler123

4. 常见问题与解决方案

4.1 端口冲突处理

如果出现端口冲突,可以修改docker-compose.yml中的端口映射。常见需要修改的端口包括:

服务默认容器端口默认主机端口
PostgreSQL54325432
ZooKeeper21812181
API Server1234512345
UI88888888

4.2 资源不足问题

如果Worker节点任务执行失败,可能是资源限制导致。可以通过以下方式调整:

  1. 增加Worker线程数:
environment: WORKER_EXEC_THREADS: 50
  1. 调整Docker资源限制:
docker update --cpus 2 --memory 4g ds-worker

4.3 日志查看技巧

各组件日志位于挂载的logs目录下,可按服务查看:

tail -f logs/master/dolphinscheduler-master.log

关键日志标记:

  • INFO:正常操作日志
  • WARN:潜在问题警告
  • ERROR:需要立即处理的错误

5. 生产环境优化建议

5.1 高可用配置

对于生产环境,建议:

  1. Master节点至少部署2个实例:
dolphinscheduler-master-1: # ...配置同前 ports: - "5678:5678" dolphinscheduler-master-2: # ...配置同前 ports: - "5679:5678"
  1. Worker节点根据任务量横向扩展

5.2 监控集成

建议集成Prometheus监控,添加以下配置:

environment: SPRING_METRICS_ENABLED: "true" SPRING_METRICS_EXPORT_PROMETHEUS_ENABLED: "true" MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: "prometheus,health,info"

5.3 备份策略

关键数据备份方案:

  1. 数据库定期备份:
docker exec ds-postgres pg_dump -U dolphinscheduler > dolphinscheduler_backup.sql
  1. 资源中心备份:
tar czvf resource_backup.tar.gz dolphinscheduler/resource/

6. 进阶配置技巧

6.1 邮件告警设置

在UI界面配置SMTP信息后,修改alert-server环境变量:

environment: ALERT_SMTP_SERVER: smtp.example.com ALERT_SMTP_PORT: 587 ALERT_SMTP_USER: your_email@example.com ALERT_SMTP_PASSWORD: your_password ALERT_SMTP_SSL: "true"

6.2 多租户配置

  1. 创建租户:
INSERT INTO t_ds_tenant (tenant_code, description) VALUES ('dev', '开发环境');
  1. 分配Worker分组:
environment: WORKER_GROUPS: default,dev

6.3 自定义任务插件

要添加自定义任务类型:

  1. 创建插件目录:
mkdir -p dolphinscheduler/plugins
  1. 修改Worker配置:
volumes: - ./plugins:/opt/dolphinscheduler/plugins

7. 版本升级策略

当需要升级到新版本时:

  1. 备份数据库和资源文件
  2. 修改docker-compose.yml中的镜像版本
  3. 执行滚动更新:
docker-compose pull docker-compose up -d

注意:大版本升级前务必检查官方升级文档,可能有数据迁移要求

http://www.zskr.cn/news/1521368.html

相关文章:

  • 2026年口碑好的粉碎机制药设备/混合机制药设备品牌厂家推荐 - 行业平台推荐
  • 【JAVA毕设源码分享】springboot+vue的在线课程学习网站的设计与实现(程序+文档+代码讲解+一条龙定制)
  • ESP32开发板选购避坑指南:CH340 vs CH9102X,在Mac上烧录程序前你必须知道的事
  • 2026年V2G充电桩厂家权威性分析:诚信与实力如何兼顾?——基于四川及全国主流企业的多维度测评 - 优质品牌商家
  • 矩阵李群在机器人运动控制中的应用与实现
  • 法考讲义pdf|讲义|资料已整理
  • Azure ML零基础实战:从Compute Instance快速启动训练环境
  • 法考讲义免费下载|讲义|资料已整理
  • 从‘星际争霸’到多智能体算法:手把手用PyMARL框架在SMAC上跑通第一个QMIX实验
  • CarPlay开发者的工具箱:除了苹果官方文档,Linux和Android平台各自还有哪些‘神器’?
  • 从玩具到工业设备:一张图看懂不同应用场景下,船型开关的选型要点与降额标准
  • 告别手动转换!用批处理脚本+hex2bin.exe,一键搞定MCU固件Hex转Bin(附完整脚本)
  • RK3588s的HDMI IN方案选型:除了RK628,LT6911和TC358749怎么选?实战对比与避坑
  • 区块链如何重构开源AI的信任基础设施
  • 别再傻傻分不清了!PFC电感选铁氧体还是铁硅铝?看完这篇实测对比就懂了
  • 戴尔服务器IPMI装深信服EDS存储,从开机到配置RAID的保姆级避坑实录
  • 别再全网乱找了!VMware Converter Standalone 6.2 Win7离线安装包+避坑配置一条龙
  • MLOps可视化实践:构建可追溯、可协同的模型生命周期
  • Go学习第7天:Map集合 + 递归函数 + 类型转换
  • STM32F407调试日志输出实战:除了串口1,还能用SWO和RTT吗?三种方案对比评测
  • 从零搭建AI开发环境:在 Ubuntu 22.04 上一步到位配置 PyTorch/TensorFlow 的 CUDA 支持
  • ISO1211/1212选型避坑指南:单通道还是双通道?你的PLC数字输入模块该怎么选
  • YOLOv5到v8怎么选?实测对比在自动驾驶场景下的性能与部署成本
  • Java毕设项目:基于 SpringBoot 的图书馆座位预约系统设计与实现 (源码+文档,讲解、调试运行,定制等)
  • 告别‘cannot find -lprint’:CH32V003在MounRiver Studio中的完整项目创建与编译配置详解
  • JALA框架:机器人学习中的潜在动作表示新范式
  • AI搜索获客:亲测有效的实践案例分享
  • 别再乱用了!从结构拆解看一体成型电感、磁罐电感、绕线电感的适用场景与选型误区
  • 2026年热门的仪征透水管/渗排水网垫透水管/软式透水管/仪征渗排水网垫透水管生产厂家推荐 - 品牌宣传支持者
  • 避坑指南:区分创维E900V22D的UWE5621DS与MT7618芯片,避免刷机变砖