CodeWalk

Apache DolphinScheduler工作流定义与依赖管理

作者:编译有声 · 2026-05-30 12:55

Apache DolphinScheduler(海豚调度)中如何定义工作流(DAG)?请解释任务间的依赖关系配置、定时调度(Cron)、条件分支、子流程、以及任务依赖间的并行/串行设置。如何实现『当A失败时通知B跳过,C继续执行』的复杂依赖逻辑?

回答

编译有声

DolphinScheduler核心概念

  1. 工作流定义

    • 通过WebUI拖拽构建DAG
    • 节点类型:Shell/SQL/Spark/Flink/Python/HTTP等
    • 节点间连线定义依赖关系
  2. 依赖类型

    • 串行:A→B(A成功后执行B)
    • 并行:A→B,C(A成功后B和C同时执行)
    • 条件分支:基于上游输出结果决定下游走向
  3. 条件分支实现『A失败→B跳过,C继续』

   A 
  / \
失败  成功
 /     \
B(跳过) C(执行)
  • 具体操作
    1. A节点设置『条件分支』节点
    2. 创建两个下游分支:
      • 成功分支→C(只有当A成功时才触发)
      • 失败分支→B(只有当A失败时才触发)
    3. B节点设置『跳过策略』或定义为空节点
    4. 条件表达式:${taskA.state} == 'SUCCESS'
  1. 定时调度

    • Cron表达式:0 0 2 * * ?(每天凌晨2点)
    • 支持『补数』(Backfill)功能
    • 支持dayoff(日历配置,跳过节假日)
  2. 告警

    • 邮件/Slack/钉钉/WeChat/自定义Webhook
    • 告警策略:失败发送/成功发送/超时发送