Apache Airflow 包额外功能

9 Jun 2025 | 9分钟阅读

引言

Apache Airflow Extras 是扩展 Airflow 功能的附加依赖项,允许与各种第三方服务、数据库、云提供商和其他工具集成。这些 Extras 帮助用户避免安装不必要的依赖项,同时提供只选择所需功能的灵活性。

这些 Extras 提供了额外的功能,这些功能不一定与特定的提供商或核心功能绑定。

示例

  • Airflow [statsd]: 启用 StatsD 监控。
  • Airflow [redis]: 安装 Redis 依赖以进行消息代理。
  • Airflow [openlineage]: 添加 OpenLineage 跟踪功能。
  • Airflow [telegram]: 提供 Telegram 通知支持。
  • Airflow [google_auth]: 启用 Google 身份验证。

这些额外的 Airflow Extras 提供的功能不直接与特定提供商(例如,云服务)或核心功能(例如,身份验证、日志记录)绑定。相反,它们扩展了 Airflow 的监控、消息传递、身份验证和数据沿袭跟踪功能

以下是其他 Airflow Extras 的详细 breakdown:

监控与可观测性

airflow[statsd] – StatsD 监控

StatsD 是一个用于监控应用程序的指标收集和聚合系统。此 Extra 使 Airflow 能够

  • 收集任务执行时间、DAG 运行和系统健康状况的性能指标
  • 将指标发送到兼容 StatsD 的监控工具(例如,Datadog、Graphite、Prometheus)。
  • 跟踪调度器、工作器和 Web 服务器的性能。

用例:对于需要对其 Airflow 环境进行实时监控的组织很有用。

安装

消息代理与缓存

airflow[redis] – Redis 支持

Redis 是一个内存键值存储,通常用于缓存、消息代理和实时分析。此 Extra 允许 Airflow

  • 在使用 CeleryExecutor 时,将 Redis 作为Celery 消息代理
  • 在 Redis 中存储任务状态和作业元数据
  • 提高高吞吐量 DAG 的性能和可伸缩性

用例:推荐用于使用CeleryExecutor大型 Airflow 部署

安装

数据沿袭与跟踪

airflow[openlineage] – OpenLineage 跟踪

OpenLineage 是一个用于数据沿袭跟踪的开放框架,允许用户跨不同系统跟踪数据移动。此 Extra 使 Airflow 能够

  • 捕获 DAG 的数据沿袭信息
  • 兼容 OpenLineage 的工具(例如,Marquez、Databricks 和其他 ETL 框架)集成。
  • 为合规性和审计提供端到端的数据可观测性

用例:对于数据治理和合规性至关重要,有助于团队了解数据如何在管道中流动。

安装

消息传递与通知

airflow[telegram] – Telegram 通知

此 Extra 允许 Airflow 通过Telegram(一个流行的消息应用程序)发送实时警报和通知。它提供了

  • 用于向 Telegram 群组或用户发送消息的运算符。
  • 用于将 Telegram机器人与 Airflow 工作流集成的 Hook。
  • 支持事件驱动的通知(例如,DAG 失败、任务重试)。

用例:在管理 DAG 执行时,对于团队协作和监控很有用。

安装

身份验证与安全

airflow[google_auth] – Google 身份验证

此 Extra 启用了 AirflowWeb UIGoogle OAuth 身份验证,允许用户

  • 使用Google 帐户登录。
  • 为 Google Workspace 用户实现单点登录 (SSO)
  • 无需单独管理用户的情况下保护 Airflow。

用例:推荐给使用Google Workspace(Gmail、Google Cloud Identity 或 GCP IAM)的组织。

安装

如何一次安装多个 Extras

您可以在一个命令中安装多个 extras

这些其他 Airflow Extras 有助于增强监控、消息代理、安全和数据跟踪,使 Airflow 成为一个更可伸缩和可观测的编排工具

生产环境包 Extras

对于生产环境,这些 Extras 提供了在健壮且可伸缩的环境中运行 Airflow 所需的关键依赖项。

示例

  • Airflow [devel]: 安装开发工具。
  • airflow[postgres,cassandra,hive,kafka]: 结合了多个生产就绪的数据库和消息集成。
  • airflow[all]: 安装所有可用的依赖项(不推荐用于生产环境,因为包体积会过大)。

对于生产部署,Apache Airflow 提供了一套关键 Extras,其中包括运行 Airflow 所需的依赖项,以实现可伸缩性、可靠性和性能。这些 Extras 有助于配置数据库后端、消息系统、开发工具和完整的包安装

以下是生产环境包 Extras 的详细 breakdown:

开发与测试

airflow[devel] – 开发工具

此 Extra 安装了Airflow 开发、测试和调试所需的各种工具。它包括

  • Linter(例如,flake8、black)以确保代码质量。
  • 测试框架(例如,pytest)用于编写和运行单元测试。
  • 用于调试 Airflow DAG 和组件的调试实用程序
  • 用于维护一致编码标准的代码 matters

用例:推荐给正在为Airflow 核心或自定义插件做贡献的开发人员。

安装

生产就绪的数据库与消息集成

airflow[postgres,Cassandra,hive,kafka] – 组合生产依赖项

此 Extra 安装了多个生产就绪的集成,这些集成在企业数据工作流中很常用:

  • airflow[postgres] – PostgreSQL 元数据数据库支持
  • airflow[cassandra] – Apache Cassandra NoSQL 数据库集成。
  • airflow[hive] – Apache Hive 数据仓库集成,用于大数据处理
  • airflow[kafka] – Apache Kafka 事件流和消息支持。

用例:推荐给与大数据平台和流式系统交互的企业部署

安装

全包(不推荐用于生产环境)

airflow[all] – 安装所有可用的依赖项

此 Extra 安装了所有可用的 Airflow 依赖项,包括

  • 所有数据库连接器(PostgreSQL、MySQL、SQLite、Cassandra 等)。
  • 所有云提供商(AWS、GCP、Azure、Snowflake 等)。
  • 所有消息传递和执行引擎(Celery、Dask、Kubernetes、Spark 等)。
  • 所有身份验证机制(LDAP、Kerberos、OAuth 等)。

警告:不推荐用于生产环境,因为

  • 它会显著增加包大小,导致安装时间延长
  • 某些依赖项可能相互冲突,导致兼容性问题。
  • 它会安装不必要的包,消耗额外资源。

用例:适用于需要访问 Airflow所有功能的测试环境

安装

如何一次安装多个生产环境 Extras

要安装一个生产就绪的包,仅包含必要的依赖项,请使用

这些生产环境包 Extras 确保 Airflow 配置为可伸缩性、高可用性和性能,使其适合企业级部署

开发 Extras

开发 Extras 对正在开发 Airflow 本身或构建自定义插件的开发人员很有用。

示例

  • Airflow [devel_ci]: 安装 CI/CD 环境所需的依赖项。
  • Airflow [devel_hadoop]: 添加 Hadoop 开发依赖项。
  • Airflow [test]: 安装 pytest 等测试框架。
  • Airflow [mypy]: 添加类型检查依赖项。
  • airflow[lint]: 安装 Flake8 等 linting 工具。

开发 Extras 旨在帮助开发人员处理Airflow 本身或创建自定义插件。这些 Extras 包括用于持续集成 (CI/CD)、测试、linting、类型检查Hadoop 开发的工具,确保 Airflow 开发高效、可维护并符合编码标准。

以下是开发 Extras 的详细 breakdown:

CI/CD 工具

此 Extra 安装了持续集成 (CI) 和持续部署 (CD) 流水线所需的工具。它包括

  • 用于自动化测试构建和部署的CI/CD 库
  • 用于将 Airflow 与CI/CD 平台(例如,GitHub Actions、GitLab CI、Jenkins 等)集成的工具。

用例:对于希望为其 Airflow 代码库或插件设置自动化 CI/CD 流水线的开发人员来说是理想的选择。

安装

Hadoop 开发

airflow[devel_hadoop] – Hadoop 开发依赖项

此 Extra 添加了 Airflow 中Hadoop 相关开发所需的依赖项。它包括

  • Apache Hadoop 集成库,允许 Airflow 与HDFS(Hadoop 分布式文件系统)、MapReduceYARN 交互。
  • 有助于处理Hadoop 生态系统(例如,HivePigHBase)的工具和包。

用例:推荐给在基于 Hadoop 的环境中处理大数据的开发人员

安装

测试框架

airflow[test] – 测试依赖项

此 Extra 安装了编写 Airflow 组件、DAG 和自定义插件测试所需的流行测试框架。它包括

  • 用于在 Airflow 中运行单元测试和功能测试的pytest
  • 用于测试发现、报告和模拟测试的pytest 插件
  • 用于测试覆盖率报告的pytest-cov

用例:对于编写单元测试和对 Airflow 功能及工作流进行测试驱动开发 (TDD) 的开发人员至关重要。

安装

类型检查

airflow[mypy] – 类型检查依赖项

此 Extra 安装了类型检查依赖项,以确保 Airflow 类型注解的正确性。它包括

  • 用于在 Python 代码中执行静态类型检查的mypy
  • 用于验证 Airflow 代码和自定义插件是否符合类型注解的库和配置。

用例:对于专注于静态代码分析并确保 Airflow 项目类型安全的开发人员很有用。

安装

Linting 工具

airflow[lint] – Linting 工具

此 Extra 安装了linting 工具,有助于强制执行编码风格指南并识别代码库中的潜在问题。它包括

  • 用于 linting Python 代码和检查PEP 8 合规性的Flake8
  • 用于按照严格标准自动格式化代码的Black
  • 用于按一致顺序组织导入的Sort

用例:强烈推荐用于确保 Airflow 开发环境中的干净、可读和可维护的代码

安装

如何一次安装多个开发 Extras

要一次安装多个开发工具,您可以在单个命令中将它们组合起来

这些开发 Extras 增强了 Airflow 的开发流程,提供了用于代码质量、测试、CI/CD 集成类型安全的工具,确保核心贡献者和插件开发人员都能高效工作并维护高质量的代码。

Bundle 开发 Extras

这些 Extras 专为贡献 Airflow 项目的开发人员设计,包括用于构建、测试和调试的工具。

示例

  • Airflow [devel_ci]: Airflow 核心开发所需的 CI/CD 工具。
  • Airflow [devel_all]: 包括所有开发依赖项。
  • Airflow [doc]: 安装生成文档所需的依赖项。

Bundle 开发 Extras 是一套为贡献 Airflow 项目的开发人员设计的工具,提供了构建、测试和调试 Airflow 核心组件所需的一切。这些 Extras 对于创建、维护和贡献Airflow 代码库及相关文档至关重要。

以下是Bundle 开发 Extras 的详细 breakdown:

核心开发 CI/CD 工具

airflow[devel_ci]: Airflow 核心开发 CI/CD 工具

此 Extra 安装了持续集成 (CI)持续部署 (CD) 流程所需的依赖项,特别是针对Airflow 核心开发。它包括

  • 用于自动化构建和测试的CI/CD 工具
  • 支持CI/CD 系统(如GitHub Actions、GitLab CIJenkins),使开发人员能够自动化测试和部署流程。
  • 自动化构建配置,以确保新贡献符合项目的质量标准。

用例:对于处理Airflow 核心存储库或为贡献设置自动化测试流水线的贡献者至关重要。

安装

全面的开发工具

airflow[devel_all] – 所有开发依赖项

此 Extra 安装了对 Airflow 核心贡献者有用的所有开发相关依赖项。它包括

  • CI/CD 工具(例如,devel_ci)。
  • 测试框架(例如,来自 test Extra 的 pytest)。
  • Linting 和格式化工具(例如,来自 lint Extra 的 flake8、black)。
  • 用于构建、调试和维护 Airflow 代码库的开发实用程序

用例:适合需要全面工具集进行编码、测试和调试的贡献 Airflow 源代码的开发人员。

安装

文档生成工具

此 Extra 安装了生成 Airflow 文档所需的依赖项。它包括

  • 用于从 reStructuredText 文件生成 HTML 文档的Sphinx
  • 用于ReadTheDocs 中默认文档主题的sphinx_rtd_theme
  • 用于将 reStructuredText 处理成结构化文档的docutils
  • 用于构建和渲染 Airflow 技术文档的其他实用程序

用例:对于贡献Airflow 官方文档或构建本地文档副本以进行测试和预览更改的开发人员至关重要。

安装

如何一次安装多个 Bundle 开发 Extras

要一次安装多个 Bundle 开发 Extras,您可以在单个命令中将它们组合起来

这些Bundle 开发 Extras 专门用于支持在 Airflow 代码库及相关文档上工作的开发人员,提供了一套完整的工具,以确保开发过程的质量、效率和可维护性。

Doc Extras

文档 Extras 允许用户在本地生成和构建 Airflow 的文档。

示例

  • Airflow [doc]: 安装 Sphinx 和相关的文档工具。
  • Airflow [doc_gen]: 用于生成 API 参考的附加工具。

已弃用的 1.10 Extras

在 Airflow 2.x 中,Airflow 1.10 的一些 extras 已被弃用或被提供商包取代。

示例

  • airflow[gcp]: 已被 airflow[google] 取代
  • airflow[aws]: 已被 airflow[amazon] 取代
  • airflow[crypto]: 已删除(合并到核心安全模块中)

Apache Airflow extras 允许用户通过与云提供商、数据库、消息系统等的集成来扩展 Airflow 的核心功能。

airflow[pandas] – 用于数据操作的 Pandas

Pandas 是 Python 中用于数据分析和操作的强大库。此 Extra 允许 Airflow

  • 处理结构化数据(CSV、JSON、数据库)。
  • 执行数据转换和聚合
  • 在 DAG 中处理时间序列数据

用例:如果您的工作流涉及ETL 管道数据工程任务,Pandas 可以在将数据加载到数据库之前帮助进行预处理和分析。

安装

如何一次安装多个本地安装的软件 Extras

您可以通过在一个命令中指定它们来一次安装多个 extras。例如

这些本地安装的软件 Extras 使 Airflow 能够与本地数据库、远程服务器、容器和数据处理库无缝集成,使其成为工作流自动化和编排的强大工具


下一个主题Apache-airflow-pool