Loading......

文章背景图

DolphinScheduler 简介与入门

2025-11-05
12
-
- 分钟

🐬 DolphinScheduler 简介

DolphinScheduler 概述

Apache DolphinScheduler 是一个分布式、易扩展的可视化 DAG 工作流任务调度平台
它主要用于解决大数据任务中复杂的依赖关系问题,使任务调度系统在数据处理流程中开箱即用。

🎯 核心特性:

  • 支持 DAG 可视化调度,任务依赖一目了然

  • 分布式、高可用设计,易于水平扩展

  • 提供任务监控、告警、重试等完善机制

  • 支持多种任务类型(Shell、Spark、Hive、Flink、Python 等)

  • 丰富的 API 接口,便于与第三方系统集成


DolphinScheduler 核心架构

DolphinScheduler 的核心组件如下图所示(逻辑示意):

🧩 核心角色说明

组件

职责说明

MasterServer

分布式、无中心设计;负责任务切分、调度、监控,以及监听集群健康状态。

WorkerServer

分布式、无中心设计;负责任务执行、日志收集与上传。

ZooKeeper

集群的注册与协调中心,提供容错与状态同步。

Alert 服务

统一的告警服务,任务失败或超时自动通知。

API 层

接收 UI 层请求,负责权限控制、任务操作等。

UI 界面

提供工作流编排、任务监控、告警配置等可视化操作。


部署模式

DolphinScheduler 支持三种常见的部署模式,以满足从个人测试到生产集群的不同场景需求。


🖥️ 1️⃣ 单机模式(Standalone)

  • 特点:所有服务(Master、Worker、API、UI、Zookeeper、数据库)都在同一进程中。

  • 数据库:使用内置 H2 数据库。

  • 适用场景:快速体验、学习环境。

🧱 优势:

  • 配置最简单,开箱即用

  • 无需安装 ZooKeeper 或外部数据库


🧩 2️⃣ 伪集群模式(Pseudo-Cluster)

  • 所有组件(Master、Worker、API、Logger)部署在同一台机器上。

  • ZooKeeper 与数据库需独立安装配置

  • 适用于单机测试但想模拟分布式行为的场景。

📘 说明:

  • 可以使用 MySQL 代替 H2;

  • 各服务仍然通过 ZooKeeper 进行注册与协调;

  • 模拟真实集群通信流程。


🕸️ 3️⃣ 集群模式(Cluster)

  • 各个服务(Master、Worker、API、Logger)分布在多台服务器上;

  • Master 与 Worker 均可多实例部署,实现高可用与负载均衡;

  • 生产环境推荐使用该模式。

💡 特点:

  • 具备容错机制(任一节点宕机不会影响整个系统);

  • 支持大规模任务并发调度;

  • 更适合企业级大数据平台环境。


🧭 DolphinScheduler 入门

安全中心配置

安全中心是 DolphinScheduler 的基础配置模块,主要功能包括:

  • 🧑‍💼 租户管理

  • 👥 用户管理

  • 🔔 告警实例与告警组管理

  • ⚙️ Worker 分组管理

  • 🧰 环境管理

  • 🎫 令牌管理

  • 🧵 Yarn 队列管理


🧵 Yarn 队列管理

当执行 Spark、MapReduce 等任务时,可指定运行的 Yarn 队列

  • 此处的“队列”即为 Yarn 调度器的资源队列;

  • 在 DolphinScheduler 中创建队列,仅用于任务选择,不会修改 Yarn 本身配置。

参数说明:

参数

含义

名称

DolphinScheduler 任务可选择的队列名

队列值

对应 Yarn 调度器中的实际队列名

✅ 可根据需要选择是否创建队列,非必选配置。


👤 租户管理

租户 对应 Linux 系统中的用户账号,用于 Worker 执行任务时的身份。
如果 Linux 没有该用户,则任务执行可能失败。

  • 可通过配置参数 worker.tenant.auto.create=true 自动创建 Linux 用户;

  • 启用该功能需确保 Worker 节点能 免密执行 sudo 命令

配置示例:

worker.tenant.auto.create=true

📘 示例租户:

  • 租户编码:atguigu

  • 默认队列:default


👥 用户管理

用户是 DolphinScheduler 的登录账号,分为:

用户类型

权限说明

管理员

可管理用户与权限,但不参与项目创建

普通用户

可创建、编辑、执行工作流任务

参数说明:

参数

含义

用户名

登录账号

租户

用户所属的 Linux 租户

队列

默认执行队列(继承自租户)

邮件 / 手机号

用于告警通知


4.1.4 🔔 告警实例与告警组管理

告警模块用于任务执行 成功 / 失败 / 超时 时的消息通知。

  • 一个告警组可包含多个告警实例;

  • 每个实例可选择不同的 告警插件(邮件、钉钉、企业微信、飞书等);

  • 告警实例需配置插件参数,如 WebHook 地址、邮箱账号等。

当前示例暂不配置告警,可在生产中启用。


⚙️ Worker 分组管理

用于控制任务在哪些 Worker 节点上运行。
一个 Worker 可属于多个分组。

两种配置方式:

  1. 修改配置文件

    worker.groups=default,test
    
  2. Web UI 设置

    • 打开【安全中心 → Worker 分组管理】;

    • 为指定 Worker 调整分组。

默认分组为 default,若无特殊需求可不修改。


🧰 环境管理

用于定义 任务运行环境(如 Python 环境、JDK 版本、依赖变量等)。

默认环境配置文件路径:

$DOLPHINSCHEDULER_HOME/conf/env/dolphinscheduler_env.sh

环境参数说明:

参数

含义

环境名称

自定义名称

环境配置

dolphinscheduler_env.sh 相同格式

描述

环境说明(不能为空)

Worker 组

环境可用的 Worker 组

可为不同任务配置不同运行环境,暂不强制配置。


🎫 令牌管理(Token)

令牌用于 API 调用认证,当外部系统(如脚本、数据平台)调用 DolphinScheduler 接口时,需要提供令牌。

  • 普通用户通过 Web UI 操作无需令牌;

  • 与第三方系统集成(如触发任务、查询状态)时需使用。

示例用途:

curl -H "token: your_token" http://ds-server/api/v1/projects

✅ 总结

模块

功能

关键点

核心架构

DAG 可视化任务调度

Master 调度、Worker 执行、ZK 协调

部署模式

单机 / 伪集群 / 集群

从快速体验到生产高可用

安全中心

系统基础管理

租户、用户、队列、告警、环境、令牌等

💡 DolphinScheduler 是企业级任务调度的核心组件,
通过可视化 DAG 流程与分布式架构,极大提升了任务管理与自动化调度能力。

评论交流