当前位置: 首页 > 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.jsqmd.com/news/1009563/

相关文章:

  • 2026法考主观题答案解析|主观题|资料已整理
  • 快速射电暴FRB 20240114A的观测与偏振特性分析
  • ops-cv的定位与问题域:为什么需要NPU上的CV算子,以及ops-cv在CANN算子体系中的角色
  • 2026年口碑好的粉碎机制药设备/混合机制药设备品牌厂家推荐 - 行业平台推荐
  • pi*0.6的RECAP:VLA如何从成功、失败和人工纠正中继续学习
  • 从车规级到边缘AI:飞凌OK-MX93xx-C开发板开箱与核心功能实测(附i.MX 93资源解析)
  • 三步搞定微信聊天记录永久保存:WeChatExporter终极指南
  • 告别51,拥抱STC32:从Keil C51到C251的工程迁移与配置详解
  • 【JAVA毕设源码分享】springboot+vue的在线课程学习网站的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 2026年比较好的换热器化工设备/回收化工设备/化工设备用户口碑推荐厂家 - 品牌宣传支持者
  • ESP32开发板选购避坑指南:CH340 vs CH9102X,在Mac上烧录程序前你必须知道的事
  • 告别YUV图片转换烦恼:在Ubuntu 22.04上从源码编译libjpeg-turbo的完整指南
  • 2026年V2G充电桩厂家权威性分析:诚信与实力如何兼顾?——基于四川及全国主流企业的多维度测评 - 优质品牌商家
  • 别再只会用MySQL了!用Docker Compose 5分钟搞定Milvus向量数据库(附避坑指南)
  • 雷电模拟器dnconsole命令详解:从文件管理到批量操作,提升手游工作室效率的5个技巧
  • Mac鼠标滚动卡顿怎么办?Mos平滑滚动工具终极解决方案
  • 2026年评价高的芜湖稽查应对服务/芜湖财税咨询服务性价比高的公司 - 品牌宣传支持者
  • 矩阵李群在机器人运动控制中的应用与实现
  • 深信服EDS存储容量怎么算?手把手教你规划戴尔服务器上的SSD与HDD配比
  • 2026去除图片背景人物工具大全:电脑手机在线及PS抠图操作教程
  • 电赛小白也能搞定的旋转倒立摆:STM32 HAL库+双环PID实战避坑指南
  • 法考讲义pdf|讲义|资料已整理
  • Java毕设项目:轻量化校园家教资源对接平台的设计与实现 (源码+文档,讲解、调试运行,定制等)
  • 2026金华驾校教练选择指南:本地老牌、耐心教学与实战派谁更值得托付? - 优质品牌商家
  • LangChain 系列之 Messages:为什么大模型对话不是简单字符串?
  • RK3588开发板长按关机时间怎么改?手把手教你修改RK806的DTB配置
  • 法考讲义免费下载|讲义|资料已整理
  • Android AudioRecord实战:从权限申请到PCM数据流,一个完整录音封装类详解
  • Azure ML零基础实战:从Compute Instance快速启动训练环境
  • 从GPT-1到GPT-4o:一个后端工程师眼中的模型演进与API调用实战