DolphinScheduler 核心概念是什么
Apache DolphinScheduler 是可视化的工作流调度平台:用项目做资源隔离,工作流(流程定义)由任务节点与依赖关系组成 DAG,支持串行、并行、依赖、子流程等节点类型,并具备多租户能力。它以界面操作为主,补数与重跑是内置能力,因此常被用来承载离线数仓的整点批任务。理解它的核心概念,关键是分清「定义」与「实例」:改的是定义,跑的是实例。
基本信息
| 项目 | 资源隔离单元,隔离工作流、资源文件与数据源 |
|---|---|
| 流程定义 | 工作流 DAG 的定义,上线后形成版本 |
| 流程实例 | 按调度或手动触发产生的一次运行 |
| 任务节点 | Shell、SQL、Spark、子流程、依赖等类型 |
| 租户 | 按租户分配队列与资源,配合 Worker 分组使用 |
| 内置参数 | 节点中可直接引用业务日期类内置参数,补数时按日期区间批量生成实例 |
| 补数 | 按所选日期区间批量生成历史实例,是离线数仓的常用能力 |
典型使用场景
- 离线数仓批任务:整点跑 SQL 与 Shell,界面维护依赖关系
- 多租户共用平台:不同团队按项目与租户隔离资源与权限
- 业务自助运维:业务同学在界面上查看状态、手工重跑失败任务
- 历史补数:按日期区间批量生成实例补齐缺失分区
- 子流程复用:把通用的清洗步骤做成子流程被多个工作流引用
Shell 任务与内置参数
Shell 任务与内置参数
# 节点里可直接引用内置日期参数,无需自行推算
# 常用:业务日期、当月第一天、前一天等(参数名随版本略有差异)
echo "bizdate=$bizdate"
sh /opt/etl/run_orders.sh $bizdate
# SQL 节点直接指定数据源与 SQL,由 Worker 执行
# 数据源在项目内统一维护,避免脚本里硬编码连接串定义与实例的区别
定义与实例的区别
# 定义:在界面编辑的 DAG 结构,修改后需要上线新版本才生效
# 实例:某次调度产生的运行记录,失败可在实例上重跑或恢复失败节点
# 补数:按日期区间批量生成实例,等价于对历史每一天各跑一次核心对象职责
| 对象 | 作用 | 常见误解 |
|---|---|---|
| 项目 | 隔离工作流、资源与数据源 | 以为跨项目可以直接引用资源 |
| 流程定义 | 工作流结构与调度配置 | 改了定义忘记上线,调度仍按旧版本跑 |
| 流程实例 | 一次具体运行 | 把实例状态当成定义是否正确 |
| 租户与队列 | 资源与权限划分 | 不划分导致关键任务被普通任务挤占 |
| 子流程 | 可复用的嵌套工作流 | 层级过深后排查链路困难 |
内置时间参数在节点里可直接使用,补数时会按所选日期区间逐日生成实例,因此脚本要以传入的业务日期为准,不要用系统当前时间自行推算。
工作流改动必须上线新版本才对调度生效:只保存不上线是最常见的问题来源,表现为「改了半天不生效」,实际跑的还是旧版本定义。