首页/数据/数据工程与 ETL 速查/DolphinScheduler 核心概念

DolphinScheduler 核心概念

Apache DolphinScheduler 是可视化工作流调度平台:以项目隔离资源,工作流(流程定义)由任务节点与依赖关系组成,支持串行、并行、依赖、子流程等节点类型,具备多租户能力。

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 结构,修改后需要上线新版本才生效
# 实例:某次调度产生的运行记录,失败可在实例上重跑或恢复失败节点
# 补数:按日期区间批量生成实例,等价于对历史每一天各跑一次

核心对象职责

对象作用常见误解
项目隔离工作流、资源与数据源以为跨项目可以直接引用资源
流程定义工作流结构与调度配置改了定义忘记上线,调度仍按旧版本跑
流程实例一次具体运行把实例状态当成定义是否正确
租户与队列资源与权限划分不划分导致关键任务被普通任务挤占
子流程可复用的嵌套工作流层级过深后排查链路困难
内置时间参数在节点里可直接使用,补数时会按所选日期区间逐日生成实例,因此脚本要以传入的业务日期为准,不要用系统当前时间自行推算。
工作流改动必须上线新版本才对调度生效:只保存不上线是最常见的问题来源,表现为「改了半天不生效」,实际跑的还是旧版本定义。

易错点

  • 工作流改动忘记上线,调度仍按旧版本定义执行,排查时误以为改动无效
  • 不同版本内置参数名有差异,迁移时未逐节点核对,日期参数取到错误值
  • 脚本里用系统当前日期而非传入的业务日期,补数时全部写到当天分区
  • 不做租户与队列划分,关键任务与普通任务抢资源,SLA 无法保障
  • 子流程层级嵌套过深,故障时难以定位是哪个子流程的哪个节点出错

数据来源与参考

  • Apache DolphinScheduler 官方文档:核心概念与内置参数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌