1、课程导论:为什么需要工作流调度?Airflow与Dagster的定位与核心哲学对比

1.1 从“手动跑脚本”到“调度系统”

先问个问题:你手头有几个每天要跑的数据任务?

我见过不少团队,一开始就三五张表,crontab 搞定一切。后来表多了,依赖复杂了,今天 A 任务挂了,B 任务还在傻等,C 任务跑出来一堆脏数据。嗯,这时候你就需要一套正经的调度系统了。

说白了,工作流调度要解决三件事:

  • 按时执行 —— 别让我半夜爬起来点“运行”
  • 依赖管理 —— 上游没跑完,下游别动
  • 失败处理 —— 挂了能重试、能报警、能定位

我个人习惯把调度系统比作“数据工厂的流水线班长”。它不生产数据,但它确保每个环节在正确的时间、用正确的原料、产出正确的结果。

核心观点: 调度系统不是“锦上添花”,而是数据工程的“基础设施”。没有它,你的数据管道就是一堆随时可能炸裂的定时炸弹。

1.2 Airflow 的定位:老牌“调度引擎”

Airflow 2015 年从 Airbnb 开源,到现在几乎是行业默认标准。它的核心哲学是什么?

  • DAG 即代码 —— 用 Python 定义有向无环图,每个节点是一个 Operator
  • 调度优先 —— 它天生就是为“定时执行”设计的,调度器是心脏
  • 生态庞大 —— 各种 Operator 插件,从 Hive 到 Kubernetes 全覆盖

我记得刚接触 Airflow 时,最让我舒服的是它的调度语义:start_date + schedule_interval,配合 backfill 机制,补数据特别顺手。你想想看,一个系统能让你轻松回填过去三个月的任务,这在生产环境有多重要。

避坑指南: 我曾经在 Airflow 里踩过一个坑——start_date 设置不当导致任务重复执行。后来我养成了习惯:所有 DAG 的 start_date 都用固定的过去时间,配合 catchup=False,避免意外回填。

1.3 Dagster 的定位:新一代“数据平台”

Dagster 2019 年才出现,比 Airflow 年轻不少。它的定位不太一样——它不只想做调度,更想做“数据应用的开发平台”。

  • Asset 为中心 —— 不关心任务,关心“你生产了什么数据资产”
  • 类型与验证 —— 输入输出有类型检查,跑之前就能发现错误
  • 可观测性 —— 每个 asset 的血缘、状态、日志都一目了然

我刚开始用 Dagster 时其实不太习惯。它不强调“调度”,而是强调“数据资产的血缘”。但用了一段时间后,我发现这种思路在数据湖/数据 Mesh 场景下特别香——你不再问“这个任务跑没跑”,而是问“这张表的数据是不是最新的”。

注意: Dagster 的学习曲线比 Airflow 陡。它的概念更多(solid、asset、op、job、graph……),但一旦上手,你会发现它在数据质量、测试、调试方面比 Airflow 强太多。

1.4 核心哲学对比:调度 vs 资产

这是本章最核心的部分。我直接给你一张对比表,你一看就明白:

维度 Airflow Dagster
核心抽象 DAG(任务依赖图) Asset(数据资产)
调度方式 定时调度 + 依赖触发 定时调度 + 资产感知触发
数据质量 靠外部检查(如 Great Expectations) 内建类型系统 + 验证
可测试性 一般,需要 mock 外部系统 强,op 可以独立测试
生态成熟度 极高,插件丰富 中等,但增长快
适用场景 传统 ETL、定时批处理 数据平台、数据湖、数据产品

说白了,Airflow 是“调度引擎”,它告诉你任务什么时候跑、按什么顺序跑。Dagster 是“数据平台”,它告诉你数据从哪里来、质量怎么样、最终产出什么。

1.5 一张图看懂两者的定位差异

下面这张 SVG 图,我画了两者的核心关注点对比。你看完就明白为什么我说“选 Airflow 还是 Dagster,本质是选调度哲学还是数据哲学”。

Airflow vs Dagster 核心哲学对比 Airflow vs Dagster:调度哲学 vs 数据哲学 Airflow 调度引擎 核心:DAG(任务依赖) 关注:任务何时执行 失败处理:重试 + 报警 Dagster 数据平台 核心:Asset(数据资产) 关注:数据质量与血缘 失败处理:类型检查 + 验证 选择哪个?取决于你更关心“任务调度”还是“数据治理”

1.6 我个人的选择建议

如果你问我怎么选,我的回答是:

  • 团队刚起步、任务简单、需要快速上线 —— 选 Airflow。生态成熟,社区问题一搜就有,招人也容易。
  • 团队有一定规模、数据资产多、重视数据质量 —— 选 Dagster。它的 asset 模型和类型系统能帮你少踩很多坑。
  • 两者都学? 我建议先精通一个,再学另一个。底层逻辑是相通的——DAG、依赖、调度、重试,这些概念在哪个系统里都一样。

我的经验: 我曾经在一个中型数据团队里,从 Airflow 迁移到 Dagster。迁移过程并不轻松,但迁移完成后,数据质量问题的排查时间从平均 2 小时降到了 20 分钟。原因很简单——Dagster 让你一眼看到数据血缘,而不是在日志里翻任务依赖。

1.7 本章小结

这一章我们聊了:

  • 为什么需要工作流调度 —— 从手动到自动,从混乱到有序
  • Airflow 的定位 —— 调度引擎,DAG 即代码,生态成熟
  • Dagster 的定位 —— 数据平台,资产为中心,质量内建
  • 两者的核心哲学对比 —— 调度 vs 资产,执行 vs 治理

接下来的章节,我们会深入两者的架构、代码、部署、运维等细节。你准备好了吗?