提供程序包

Apache Airflow 2 以模块化的方式构建。“核心”Apache Airflow 提供了核心调度功能,允许您编写一些基本任务,但 Apache Airflow 的功能可以通过安装额外的软件包来扩展,这些软件包称为 提供程序

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

您可以单独安装这些提供程序包,以便与给定的服务进行交互。Apache Airflow 的提供程序的设计方式使您可以轻松编写自己的提供程序。Apache Airflow 社区 开发和维护 80 多个提供程序包,但您可以自由开发自己的提供程序 - 您构建的提供程序与社区编写的提供程序具有完全相同的功能,因此您可以发布这些提供程序并与他人共享。

如果您想了解如何构建自己的自定义提供程序,您可以在如何创建自己的提供程序找到所有相关信息。

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

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

扩展 Airflow 核心功能

提供程序使您能够使用额外的功能扩展核心 Airflow。核心 airflow 提供了基本的和可靠的调度功能,提供程序扩展了它的功能。这里我们描述所有自定义功能。

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

所有可以扩展的核心功能的摘要可在核心扩展中找到。

配置

提供程序可以有自己的配置选项,允许您配置它们的工作方式

您可以在配置中查看所有社区管理的提供程序及其自己的配置

身份验证后端

提供程序可以添加自定义身份验证后端,允许您配置 Web 服务器对用户进行身份验证的方式,将其与公共或私有身份验证服务集成。

您可以在身份验证后端中查看通过社区管理的提供程序提供的所有身份验证后端

自定义连接

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

您可以在连接中查看通过社区管理的提供程序提供的所有自定义连接。

日志记录

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

您可以在写入日志中查看通过社区管理的提供程序提供的所有任务记录器。

密钥后端

Airflow 具有从密钥后端而不是从其自己的数据库读取连接、变量和配置的功能。

您可以在密钥后端中查看通过社区管理的提供程序提供的所有密钥后端。

通知

提供程序可以添加自定义通知,允许您配置希望接收有关任务/DAG 状态的通知的方式。

您可以在通知中查看通过社区管理的提供程序提供的所有通知。

安装和升级提供程序

单独的提供程序包提供了 1.10 版本中没有的可能性

  1. 您可以升级到特定提供程序的最新版本,而无需升级 Apache Airflow 核心。

  2. 如果新版本引入了一些问题,您可以降级到特定提供程序的先前版本,而不会影响主要的 Apache Airflow 核心包。

  3. 您可以增量地发布和升级/降级提供程序包,彼此独立。这意味着您可以按照您环境中的常用测试,逐步验证您环境中每个提供程序包的更新。

提供程序类型

提供程序具有相同的容量 - 无论它们是由社区提供还是由第三方提供程序提供。本章解释了如何对社区管理的提供程序进行版本控制和发布,以及如何创建自己的提供程序。

社区维护的提供程序

从社区的角度来看,Airflow 是以多个单独的软件包交付的。Airflow 调度系统的核心以 apache-airflow 包的形式交付,并且有 80 多个提供程序包可以作为所谓的 Airflow 提供程序 单独安装。这些软件包以 apache-airflow-providers 软件包的形式提供 - 例如,有 apache-airflow-providers-amazonapache-airflow-providers-google 软件包)。

社区维护的提供程序与 Airflow 版本分开发布和版本控制。我们为软件包遵循 Semver 版本控制方案。某些版本的提供程序包可能依赖于特定版本的 Airflow,但我们采用的总体方法是,除非有充分的理由,否则新版本的提供程序应该可以与最新版本的 Airflow 2.x 一起使用。详细信息因提供程序而异,如果特定版本的特定提供程序存在限制,从而限制了所使用的 Airflow 版本,则会将其作为依赖项的限制包含在提供程序包中。

每个社区提供程序都有相应的额外项,可以在安装 airflow 时使用,以便将提供程序与 Apache Airflow 一起安装 - 例如,您可以安装带有这些额外项的 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/src/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst 中构建和扩展社区管理的提供程序。

此条目是否有帮助?