Skip to content

1. 背景:为什么需要 Airflow ​

一句话理解:当企业从“几个定时脚本”发展到“上百个相互依赖的数据清洗、训练、部署任务”时,Cron 的线性调度能力会迅速崩溃——Airflow 用 DAG 把依赖、重试、监控、回刷统一编排起来。

1.1 裸跑定时任务的痛苦 ​

假设你负责一个推荐系统,每天需要:

  1. 从 Kafka 拉取日志并写入数据湖。
  2. 清洗、聚合、生成特征表。
  3. 用特征表训练模型。
  4. 评估模型,AUC 达标则注册到 MLflow。
  5. 把模型部署到 KServe。
  6. 发送完成通知。

用 Cron 或 Jenkins 拼接这些步骤时,常见痛点:

阶段裸跑方式痛点
依赖管理每个任务写死前置任务的完成时间上游延迟导致下游空跑或数据错误
失败处理脚本失败发邮件,人工重跑半夜告警、手动修复、错过 SLA
重试策略自己写 for 循环 + sleep重试次数、退避策略不一致
回刷/补数手动修改日期参数逐个执行容易遗漏、状态不可见
可观测性分散的日志文件无法一眼看清整条链路状态
扩展性单台机器运行任务多了资源争抢、无法水平扩展
协作每人写自己的脚本风格不一、难以维护

1.2 Airflow 是什么 ​

Apache Airflow 是一个开源的工作流编排平台,最初由 Airbnb 在 2014 年开发,2016 年捐给 Apache 基金会。它的核心定位:

用 Python 代码定义任务依赖(DAG),由 Scheduler 自动调度、由 Executor 分发执行、由 Metadata Database 持久化状态,并提供 Web UI 做监控与运维。

Airflow 的几个核心设计哲学:

  • Pipeline as Code:DAG 是 Python 代码,可版本控制、可单元测试、可复用。
  • 显式依赖:任务之间的依赖关系在代码里清晰可见。
  • 可观测性优先:每个 DAG Run、每个 Task Instance 的状态、日志、时长都在 UI 上可见。
  • 可扩展:通过 Operator、Hook、Sensor、Executor 插件化扩展。

版本现状(2026-10):Airflow 3.0 于 2025-04-22 GA,完成服务化架构重构(Task SDK + Execution API、Edge Executor、Asset 调度、React UI);当前稳定版为 3.3.2(2026-09-17);3.4.0 首个 beta 已于 2026-10-13 发布(GA 时间表面向 2026-11 初),引入 Task Loops(AIP-111,运行期循环的任务组)与 Dag Importer(AIP-85,实验性的非 Python DAG:原生 YAML 格式及 TypeScript/Go/Java SDK)。Airflow 2 已于 2026-04-22 EOL(2.11.2 为最后补丁,2026-03-14),生产应基于 3.1+ 规划。

1.3 Airflow 与相邻工具的对比 ​

工具定位与 Airflow 的关系
Cron单机定时任务Airflow 替代 Cron 的复杂场景,提供更强大的依赖、重试、监控
Kubeflow PipelinesK8s 原生 ML 工作流与 Airflow 功能重叠,KFP 更偏 ML/K8s,Airflow 更通用、生态更广
Prefect现代 Python 工作流编排Prefect 2/3 更强调动态、云原生、去中心化;Airflow 更成熟、生态更丰富
Dagster数据资产感知的编排Dagster 强调数据资产(asset)与数据质量;Airflow 2.4+ 也引入 Dataset/Asset 调度
Temporal / Cadence微服务工作流引擎更偏应用级长事务,Airflow 更偏数据/ETL/ML 批处理
Argo WorkflowsK8s 原生工作流容器级工作流,与 Airflow 互补:Airflow 编排业务逻辑,Argo 执行容器任务
MLflowML 生命周期管理Airflow 编排训练流程,MLflow 记录实验与注册模型
dbt数据转换常与 Airflow 集成:Airflow 调度 dbt 任务

关键区分:

  • Airflow vs Kubeflow Pipelines:Airflow 通用,社区大、Operator 多;KFP 更适合完全 K8s 原生的 ML Pipeline。
  • Airflow vs Prefect:Prefect 更现代、动态,更适合频繁变化的 Python/AI 工作流;Airflow 更成熟、企业采用率与生态(provider 数量、托管服务)更高。Airflow 3 补齐了 asset 驱动、事件触发、状态存储等现代能力后,差距在缩小。
  • Airflow vs Dagster:Dagster 从数据资产视角设计,血缘/数据质量治理更强;Airflow 从任务调度视角设计,3.x 的 Asset(AIP-74/75)与分区调度(AIP-76)正在补齐资产视角。

1.4 Airflow 解决了什么(和不解决什么) ​

Airflow 解决:

  • ✅ 复杂任务依赖的显式表达与自动调度。
  • ✅ 失败重试、告警、SLA 监控。
  • ✅ 历史运行状态、日志、审计的可视化。
  • ✅ 数据回刷(backfill)与补数。
  • ✅ 水平扩展:通过 Celery/Kubernetes Executor 把任务分发到多台机器。
  • ✅ 丰富的生态:AWS、GCP、Azure、Spark、Snowflake、dbt、MLflow 等官方 provider。

Airflow 不解决:

  • ❌ 实时/流处理(需 Kafka/Flink/Spark Streaming)。
  • ❌ 训练作业的 GPU 调度细节(需 K8s / Ray / Slurm)。
  • ❌ 模型 serving 的自动扩缩(需 KServe/Triton)。
  • ❌ 数据血缘与数据质量治理(需 OpenLineage / Great Expectations / dbt tests)。

1.5 AI 平台为什么需要 Airflow ​

一个成熟 AI 平台的编排层通常长这样:

数据源(Kafka / DB / 对象存储)
        │
        ▼
[数据摄取:Spark / Flink / 自定义脚本]
        │
        ▼
[特征工程:Spark SQL / dbt / Python]
        │
        ▼
[训练编排:Airflow / Kubeflow Pipelines]
        │  ├─ 调用 MLflow 记录实验
        │  ├─ 调用 Ray / KubeRay 分布式训练
        │  └─ 调用 Katib 超参搜索
        │
        ▼
[模型评估与注册:MLflow Model Registry]
        │
        ▼
[模型部署:KServe / Triton / 自研服务]
        │
        ▼
[监控与反馈:Prometheus / Grafana / A/B 测试]

Airflow 在这个链路里负责把多个异构步骤按依赖关系串起来:

  • 对数据工程师:编排 ETL、dbt、Spark 任务。
  • 对ML 工程师:编排训练、评估、注册、部署。
  • 对平台/SRE:提供统一监控、告警、资源隔离、审计。

AI/LLM 时代的新定位(2025-2026) ​

随着 LLM 应用落地,Airflow 的角色从“ETL 调度器”扩展为 AI 数据与评估流水线的编排层:

  • RAG / 特征流水线:用 Asset 分区调度(3.2+)做增量索引更新——按分区触发下游重建,天然契合 embedding 刷新。
  • 评估与门禁:批量评测、红队回归、A/B 数据准备等“批处理式 AI 任务”仍是 DAG 的强项;logical_date=None(AIP-83)让一次性/事件触发的 AI 作业不再被时间语义绑架。
  • 人在回路(HITL,3.1+):审批类任务进入 awaiting_input 状态,由人工在 UI 放行后继续——适合数据标注质检、模型发布审批。
  • 有状态任务(3.3,AIP-103):Task/Asset 级 KV 状态存储让增量处理、断点续跑不再需要外挂数据库。
  • Agent 工作流的边界:Airflow 不适合做 agent 运行时(高频、交互式、秒级决策),但适合编排 agent 的训练数据生产、离线评测、批量调用与结果归档;agent 本体运行时应放在 Agent Runtime 等专用系统。

本章小结 ​

  • 痛点:复杂依赖、失败处理、重试、回刷、可观测性是 Cron/脚本方案的瓶颈。
  • 定位:Airflow 是用 Python 代码定义 DAG 的开源工作流编排平台;Airflow 3(2025-04 GA,当前 3.3.2,3.4 beta 已出)已完成服务化重构,Airflow 2 于 2026-04 EOL。
  • 对比:比 Cron 强大;比 Kubeflow Pipelines 更通用;比 Prefect/Dagster 更成熟、生态更广,3.x 正在补齐资产化与事件驱动能力。
  • 价值:把散落脚本变成可编排、可观测、可扩展、可审计的流水线;在 AI 时代承担 RAG/评估/门禁类批处理编排。

参考来源

Released under CC-BY-SA-4.0 License.