news 2026/4/24 15:27:20

告别混乱调度:用DolphinScheduler + Docker Compose快速搭建个人数据工作流测试环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别混乱调度:用DolphinScheduler + Docker Compose快速搭建个人数据工作流测试环境

告别混乱调度:用DolphinScheduler + Docker Compose快速搭建个人数据工作流测试环境

在数据工程领域,工作流调度系统如同交响乐团的指挥,协调着各个数据处理任务的执行节奏。传统部署方式往往需要耗费大量时间在环境配置和依赖管理上,就像在音乐会开始前需要手动调试每一件乐器。而容器化技术则将这些繁琐的准备工作打包成标准化的"乐谱",让开发者能够专注于创作数据处理的"交响乐"本身。

本文将带你体验如何用Docker Compose快速搭建Apache DolphinScheduler测试环境,这种方案特别适合:

  • 需要快速验证工作流设计的开发者
  • 希望保持本地环境整洁的学习者
  • 需要频繁重建测试环境的团队

1. 为什么选择容器化部署

传统物理机/虚拟机部署与容器化方案对比:

对比维度传统部署Docker Compose方案
环境准备时间30分钟~数小时5分钟
依赖管理手动安装配置声明式定义,一键解决
环境隔离性容易产生依赖冲突完全隔离
清理难度需要手动卸载各种组件docker-compose down即可完全清理
可移植性需要重复配置配置文件即环境

核心优势在于可重复性和隔离性。想象一下,当你需要测试不同版本的DolphinScheduler时,传统方式可能需要准备多台虚拟机,而容器化方案只需修改一个版本号就能创建全新的测试环境。

2. 环境准备与Docker配置

2.1 基础环境检查

确保你的系统已经安装以下组件:

  • Docker Engine 20.10+
  • Docker Compose v2.0+
  • 至少4GB可用内存
  • 10GB磁盘空间

验证Docker安装:

docker --version docker-compose version

提示:在Linux系统上,建议将当前用户加入docker组以避免频繁使用sudo:

sudo usermod -aG docker $USER newgrp docker

2.2 编写Docker Compose文件

创建docker-compose.yml文件,我们将定义三个核心服务:

version: '3' services: zookeeper: image: zookeeper:3.8 container_name: ds-zookeeper ports: - "2181:2181" volumes: - zk_data:/data - zk_datalog:/datalog mysql: image: mysql:5.7 container_name: ds-mysql environment: MYSQL_ROOT_PASSWORD: dolphinscheduler MYSQL_DATABASE: dolphinscheduler MYSQL_USER: dolphinscheduler MYSQL_PASSWORD: dolphinscheduler ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci dolphinscheduler: image: apache/dolphinscheduler:3.1.3 container_name: ds-server depends_on: - zookeeper - mysql environment: DATABASE_HOST: mysql DATABASE_PORT: 3306 DATABASE_USERNAME: dolphinscheduler DATABASE_PASSWORD: dolphinscheduler ZOOKEEPER_QUORUM: zookeeper:2181 ports: - "12345:12345" volumes: - ds_data:/opt/dolphinscheduler volumes: zk_data: zk_datalog: mysql_data: ds_data:

关键配置说明:

  • 网络隔离:所有服务默认加入同一个网络,可通过服务名互相访问
  • 数据持久化:使用命名卷保存数据库和工作流数据
  • 版本控制:明确指定各组件版本,确保环境一致性

3. 启动与初始化

3.1 一键启动服务

在包含docker-compose.yml的目录执行:

docker-compose up -d

观察服务启动状态:

docker-compose ps

预期输出应显示三个服务状态均为running

3.2 初始化数据库

虽然MySQL容器已经创建了数据库,但DolphinScheduler还需要初始化表结构:

docker exec ds-server bash -c "/opt/dolphinscheduler/script/create-dolphinscheduler.sh"

注意:首次执行可能需要1-2分钟完成初始化,可通过日志观察进度:

docker-compose logs -f dolphinscheduler

4. 访问与基础配置

4.1 登录Web界面

服务启动完成后,访问:

http://localhost:12345/dolphinscheduler

使用默认凭证登录:

  • 用户名:admin
  • 密码:dolphinscheduler123

首次登录后应立即修改密码:

  1. 点击右上角用户头像
  2. 选择"用户信息"
  3. 在"修改密码"选项卡中设置新密码

4.2 配置工作环境

建议进行以下基础配置:

创建租户

  1. 进入"安全中心" → "租户管理"
  2. 点击"创建租户"
  3. 输入租户名称(如test)
  4. 选择关联的队列(默认default)

创建工作队列

  1. 进入"安全中心" → "队列管理"
  2. 点击"创建队列"
  3. 输入队列名称(如test_queue)
  4. 设置队列容量(如100)

分配资源

docker exec ds-server mkdir -p /tmp/dolphinscheduler docker exec ds-server chown -R dolphinscheduler:dolphinscheduler /tmp/dolphinscheduler

然后在Web界面:

  1. 进入"安全中心" → "资源管理"
  2. 点击"创建目录"
  3. 输入路径:/tmp/dolphinscheduler
  4. 选择所属租户

5. 创建测试工作流

让我们创建一个简单的数据管道示例:

  1. 新建项目

    • 进入"项目管理" → "创建项目"
    • 输入项目名称(如ETL_Pipeline)
    • 选择租户和队列
  2. 定义工作流

    • 进入项目 → "工作流定义" → "创建工作流"
    • 拖拽以下节点到画布:
      • Shell节点:数据提取
      • Python节点:数据转换
      • Spark节点:数据分析
    • 连接节点形成线性流程
  3. 配置节点

    # Python节点示例代码 import pandas as pd df = pd.read_csv('/tmp/input.csv') df['new_column'] = df['value'] * 2 df.to_csv('/tmp/output.csv', index=False)
  4. 保存并运行

    • 点击"保存"按钮
    • 点击"上线"使工作流可执行
    • 点击"运行"触发工作流

6. 环境管理与维护

6.1 日常维护命令

操作场景命令
停止所有服务docker-compose down
重启单个服务docker-compose restart zookeeper
查看实时日志docker-compose logs -f dolphinscheduler
备份数据docker-compose pause+ 备份卷数据
升级版本修改yml中的镜像版本后重新up

6.2 常见问题排查

问题1:Web界面无法访问

  • 检查端口冲突:netstat -tulnp | grep 12345
  • 验证容器状态:docker-compose ps

问题2:工作流执行失败

  • 查看执行节点日志:
    docker exec ds-server tail -f /opt/dolphinscheduler/logs/worker-server.log
  • 检查资源权限:
    docker exec ds-server ls -l /tmp/dolphinscheduler

问题3:数据库连接问题

  • 测试MySQL连接:
    docker exec ds-server mysql -hmysql -udolphinscheduler -pdolphinscheduler dolphinscheduler

7. 进阶配置技巧

7.1 自定义镜像构建

如需添加自定义依赖,可创建Dockerfile:

FROM apache/dolphinscheduler:3.1.3 # 安装Python依赖 RUN apt-get update && \ apt-get install -y python3-pip && \ pip3 install pandas numpy # 添加自定义插件 COPY custom-plugins /opt/dolphinscheduler/plugins

然后修改docker-compose.yml中的dolphinscheduler服务:

dolphinscheduler: build: . image: custom-ds:1.0 # 其余配置保持不变...

7.2 多节点部署配置

对于需要更高性能的场景,可以扩展worker节点:

dolphinscheduler-worker: image: apache/dolphinscheduler:3.1.3 command: ["worker-server"] depends_on: - zookeeper - mysql environment: ZOOKEEPER_QUORUM: zookeeper:2181 deploy: replicas: 3

7.3 监控集成

添加Prometheus监控:

monitoring: image: prom/prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml

示例prometheus.yml配置:

scrape_configs: - job_name: 'dolphinscheduler' static_configs: - targets: ['dolphinscheduler:12345']

8. 环境清理与重建

当需要完全重置环境时:

# 停止并删除所有容器 docker-compose down # 删除持久化数据(谨慎操作!) docker volume rm $(docker volume ls -q | grep ds_) # 重新创建环境 docker-compose up -d

对于日常开发,建议使用不同的compose文件管理多个环境:

# 测试环境 docker-compose -f docker-compose.test.yml up # 演示环境 docker-compose -f docker-compose.demo.yml up
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 15:26:42

如何选择消息队列库:cppzmq vs 其他C++ ZeroMQ绑定对比分析

如何选择消息队列库:cppzmq vs 其他C ZeroMQ绑定对比分析 【免费下载链接】cppzmq Header-only C binding for libzmq 项目地址: https://gitcode.com/gh_mirrors/cp/cppzmq 在现代C应用开发中,选择合适的消息队列库对系统性能和开发效率至关重要…

作者头像 李华
网站建设 2026/4/24 15:25:58

Mastodon iOS部署与发布完全手册:从开发环境到App Store

Mastodon iOS部署与发布完全手册:从开发环境到App Store 【免费下载链接】mastodon-ios Official iOS app for Mastodon 项目地址: https://gitcode.com/gh_mirrors/ma/mastodon-ios Mastodon iOS是官方推出的开源社交应用客户端,本指南将带你完成…

作者头像 李华
网站建设 2026/4/24 15:22:40

服务器与生产环境下的C盘空间监控与维护策略

服务器与生产环境下的C盘空间监控与维护策略 一、深夜告警:一次C盘爆满引发的生产事故 上周二凌晨三点,手机突然被监控平台的告警短信轰炸——某台核心业务服务器的C盘使用率在半小时内从75%飙升至98%。远程连上去一看,系统日志疯狂报错,几个关键服务已经自动停止。diskpa…

作者头像 李华
网站建设 2026/4/24 15:22:03

深入Jigsaw核心:解析Blade模板、Markdown解析和集合系统

深入Jigsaw核心:解析Blade模板、Markdown解析和集合系统 【免费下载链接】jigsaw Simple static sites with Laravel’s Blade. 项目地址: https://gitcode.com/gh_mirrors/ji/jigsaw Jigsaw是一款基于Laravel Blade模板引擎的静态网站生成工具,它…

作者头像 李华