提供程序

Apache Airflow 2 采用模块化构建。Apache Airflow 的 “核心” 提供基础调度功能,允许您编写一些基本任务,但通过安装额外的包(称为 providers)可以扩展 Apache Airflow 的能力。

提供程序可以包含操作符、钩子、传感器和传输操作符,以与众多外部系统通信,同时它们也可以通过新功能扩展 Airflow 核心。

您可以单独安装这些提供程序,以便与特定服务对接。Apache Airflow 的提供程序设计为易于编写自己的提供程序。Apache Airflow Community 开发并维护了 80 多个提供程序,但您也可以自行开发提供程序——您构建的提供程序具备与社区编写的提供程序完全相同的功能,因而可以将其发布并与他人分享。

如果您想了解如何构建自己的自定义提供程序,可在 如何创建自己的提供程序 中找到全部信息。

注意

所有社区管理的提供程序的完整列表可在 提供程序索引 查看。

您还可以在 操作符和钩子参考 中查看所有社区提供程序的操作符和钩子索引。

扩展 Airflow 核心功能

提供程序为您提供了向核心 Airflow 添加额外功能的能力。核心 Airflow 提供了基本且稳固的调度功能,提供程序则在此基础上扩展其能力。下面我们将介绍所有自定义功能。

Airflow 会自动发现哪些提供程序提供了这些额外功能;一旦您安装了提供程序包并重新启动 Airflow,这些功能就会自动对 Airflow 用户可用。

所有可扩展的核心功能概览可在 核心扩展 中查阅。

配置

提供程序可以拥有自己的配置选项,以便您自定义其工作方式。

您可以在 配置 中查看拥有各自配置的所有社区管理提供程序。

命令行界面

注意

Airflow Core 版本必须为 3.2.0 或更高,才能使用由提供程序提供的 CLI 命令。

提供程序可以向 Airflow CLI 添加自定义 CLI 命令。安装提供程序包后,这些命令即可使用。

您可以在 命令行界面 中看到所有社区管理提供程序的自定义 CLI 命令。

自定义连接

提供程序可以添加自定义连接类型,扩展连接表单并处理该连接定义的自定义表单字段行为。

您可以在 连接 中查看社区管理提供程序提供的全部自定义连接。

日志记录

提供程序可以添加额外的任务日志功能。默认情况下,Apache Airflow 将任务日志保存在本地,并通过内部 HTTP 服务器在 Airflow UI 中提供。然而,提供程序可以加入额外的日志功能,使 Airflow 日志能够写入远程服务并从这些服务中检索。

您可以在 写日志 中查看社区管理提供程序提供的全部任务日志记录器。

密钥后端

Airflow 能够从密钥后端读取连接、变量和配置,而不是仅从自身数据库中读取。

您可以在 密钥后端 中查看社区管理提供程序提供的全部密钥后端。

通知

提供程序可以添加自定义通知,使您能够配置任务/ DAG 状态通知的接收方式。

您可以在 通知 中查看社区管理提供程序提供的全部通知方式。

安装和升级提供程序

独立的提供程序能够实现 1.10 版本中不存在的功能。

  1. 您可以在不升级 Apache Airflow 核心的前提下,将特定提供程序升级到最新版本。

  2. 如果新版本出现问题,您可以将特定提供程序降级到先前版本,同样不会影响主 Apache Airflow 核心包。

  3. 您可以对提供程序进行增量发布和升级/降级,彼此独立。这意味着您可以在环境中逐个验证每个提供程序包的更新,使用您已有的测试流程。

提供程序的类型

无论是社区提供的还是第三方提供的,提供程序的能力都是相同的。本章说明了社区管理提供程序的版本化及发布方式,以及如何创建自己的提供程序。

社区维护的提供程序

从社区的角度来看,Airflow 通过多个独立的包进行交付。Airflow 调度系统的核心以 apache-airflow 包的形式提供,而超过 80 个可单独安装的提供程序则称为 Airflow providers。这些包以 apache-airflow-providers 前缀发布,例如 apache-airflow-providers-amazonapache-airflow-providers-google

社区维护的提供程序的发布和版本管理独立于 Airflow 本身的发布。我们遵循 Semver 版本规范。某些提供程序的版本可能依赖特定的 Airflow 版本,但总体原则是,除非有充分理由,新版提供程序应能兼容近期的 Airflow 2.x 版本。具体细节因提供程序而异;若某个提供程序对特定 Airflow 版本有约束,将在该提供程序的依赖限制中注明。

每个社区提供程序都有对应的 extras,可在安装 Airflow 时同时安装该提供程序,例如:apache-airflow[google,amazon](使用正确的约束——参见 Airflow® 安装指南),这样就会把相应版本的 apache-airflow-providers-amazonapache-airflow-providers-google 包一起安装到 Apache Airflow 中。

部分社区提供程序之间还存在跨提供程序的依赖关系。这些并非强制性依赖,只是可能启用某些功能(例如传输操作符常常在不同提供程序之间产生依赖)。同样的总体原则是,提供程序保持向后兼容,包括跨依赖。任何破坏性更改或对其他提供程序特定版本的要求均会在对应提供程序的发行说明中自动记录。

注意

对于 Airflow 1.10,我们同样提供了 apache-airflow-backport-providers 包,可与该版本一起安装。这些是与 2.0 版本相同的提供程序,只是自动向后移植以兼容 Airflow 1.10。最后一次回溯提供程序的发布是在 2021 年 3 月 17 日,因 Airflow 1.10 已于 2021 年 6 月 17 日停止维护,后续不再发布回溯提供程序。

如果您想为 Apache Airflow 贡献代码,可参阅 https://github.com/apache/airflow/blob/main/providers/MANAGING_PROVIDERS_LIFECYCLE.rst,了解如何构建和扩展社区管理的提供程序。

此条目是否有帮助?