Apache DolphinScheduler工作流定义与依赖管理
Apache DolphinScheduler(海豚调度)中如何定义工作流(DAG)?请解释任务间的依赖关系配置、定时调度(Cron)、条件分支、子流程、以及任务依赖间的并行/串行设置。如何实现『当A失败时通知B跳过,C继续执行』的复杂依赖逻辑?
回答
编译有声
DolphinScheduler核心概念:
-
工作流定义:
- 通过WebUI拖拽构建DAG
- 节点类型:Shell/SQL/Spark/Flink/Python/HTTP等
- 节点间连线定义依赖关系
-
依赖类型:
- 串行:A→B(A成功后执行B)
- 并行:A→B,C(A成功后B和C同时执行)
- 条件分支:基于上游输出结果决定下游走向
-
条件分支实现『A失败→B跳过,C继续』:
A
/ \
失败 成功
/ \
B(跳过) C(执行)
- 具体操作:
- A节点设置『条件分支』节点
- 创建两个下游分支:
- 成功分支→C(只有当A成功时才触发)
- 失败分支→B(只有当A失败时才触发)
- B节点设置『跳过策略』或定义为空节点
- 条件表达式:
${taskA.state} == 'SUCCESS'
-
定时调度:
- Cron表达式:
0 0 2 * * ?(每天凌晨2点) - 支持『补数』(Backfill)功能
- 支持dayoff(日历配置,跳过节假日)
- Cron表达式:
-
告警:
- 邮件/Slack/钉钉/WeChat/自定义Webhook
- 告警策略:失败发送/成功发送/超时发送