apache/airflow

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

什么是 Apache Airflow?

Apache Airflow 是一个用于创建、调度和监控工作流的平台——但您不是通过点击 GUI,而是将工作流编写为代码。这使得它们更易于维护、版本控制、测试和与他人共享。

在 Airflow 中,工作流称为 DAG(有向无环图)。DAG 定义了一组任务及其必须运行的顺序。Airflow 调度器 会自动在 worker 机器组上执行这些任务,并遵循您定义的依赖关系。您还可以获得:

  • 命令行工具 用于管理 DAG
  • Web 界面 用于查看生产环境中运行的管道、监控进度并排查问题

它适合什么?

Airflow 最适合大部分静态且变化缓慢的工作流——其中结构在每次运行之间保持相似。它通常用于:

  • 数据处理管道(但有一个注意事项,见下文)
  • 机器学习工作流——训练、重新训练、评估和部署
  • AI/LLM 管道——协调数据准备、工具调用、模型调用和评估等步骤(Airflow 编排步骤;它本身不作为 AI 代理)

Airflow 有一些强烈的观点:

  • 任务应该是幂等的——运行两次任务应产生相同的结果,并且不会创建重复数据。
  • 任务不应相互传递大量数据。它们可以使用称为 XCom 的功能传递少量元数据,但大量数据应由外部服务处理。
  • 它不是流式解决方案,但通常用于批量处理实时数据(定期从流中拉取数据)。

类似的项目包括 Luigi、Oozie 和 Azkaban。

核心原则

  • 动态——管道以代码定义,因此您可以以编程方式生成 DAG 并对其进行参数化。
  • 可扩展——Airflow 有许多内置运算符(任务类型),并且可以扩展以满足您的需求。
  • 灵活——使用 Jinja 模板引擎,允许丰富的自定义。

要求

Airflow 已针对特定版本进行测试:

  • Python——例如,稳定版 3.3.2 支持 3.10–3.14
  • 平台——AMD64/ARM64
  • Kubernetes——各种版本(例如,稳定版支持 1.30–1.35)
  • 数据库——PostgreSQL、MySQL、SQLite(SQLite 仅用于测试,不用于生产)

重要说明:

  • MariaDB 未经测试或推荐。
  • Airflow 运行在 POSIX 兼容操作系统(Linux、macOS)上。在 Windows 上,您可以使用 WSL2 或 Linux 容器。
  • 官方 Docker 镜像使用 Debian Bookworm。

如何安装

Airflow 在 PyPI 上以 apache-airflow 包发布。安装可能很棘手,因为 Airflow 既是一个库又是一个应用程序——它保持依赖项开放,这意味着单独使用 pip install apache-airflow 可能并不总是有效。推荐的方法是使用约束文件来固定已知良好的依赖版本:

pip install 'apache-airflow==3.3.2' \
 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.3.2/constraints-3.10.txt"

您还可以添加 extras,例如 apache-airflow[postgres,google]。

仅官方支持 pip 和 uv 进行安装。不支持 Poetry 或 pip-tools 等工具(但如果您转换约束文件,则可以使用它们)。

获取 Airflow 的其他方式

这些是“便捷”包——不是官方的 ASF 版本,而是从官方源构建的:

  • PyPI 版本——通过 pip
  • Docker 镜像——用于 Kubernetes、docker-compose 等。
  • GitHub 标签——获取源代码

用户界面

Airflow Web UI 包括多个视图:

  • DAGs——所有工作流的概览
  • Assets——数据资产及其依赖项的视图
  • Grid——DAG 运行的时间网格视图
  • Graph——DAG 的任务依赖关系和当前状态的可视化
  • Home——环境摘要统计信息
  • Backfill——为特定日期范围运行 DAG
  • Code——快速查看 DAG 的源代码

版本控制

自 Airflow 2.0.0 起,该项目遵循严格的语义化版本控制(SemVer)。这适用于核心 Airflow 和 provider 包。

项目管理

Apache Airflow 是 Apache 软件基金会 项目。官方源代码发布:

  • 遵循 ASF 发布政策
  • 经过加密签名
  • 由项目的 PMC 成员投票决定

还有一个大型社区——您可以加入 Slack 频道、贡献代码等(详细信息请参阅 README 的贡献部分)。


此解释仅基于项目 README 的内容。

相关

  • 项目
  • 项目
  • 项目
  • 项目