Airflow® 的安装

此页面描述了您在考虑如何安装 Airflow® 时可能使用的安装选项。Airflow 由许多组件组成,这些组件通常分布在许多物理或虚拟机中,因此 Airflow 的安装可能会非常复杂,具体取决于您选择的选项。

您还应该查看安装 Airflow 时必须满足的先决条件以及支持的版本,以了解支持 Airflow、Python 和 Kubernetes 的策略。

Airflow 需要安装额外的依赖项 - 这可以通过 extras 和 providers 完成。

当您安装 Airflow 时,您需要设置数据库,并且在 Airflow 升级时也必须保持数据库更新。

警告

截至 2021 年 6 月,Airflow 1.10 已停止维护,不会收到任何修复程序,即使是关键的安全修复程序。请按照从 1.10 升级到 2来了解如何将停止维护的 1.10 升级到 Airflow 2。

使用发布版本

更多详情:从源代码安装

此选项的最佳使用时机

目标用户

  • 熟悉从源代码安装和构建软件,并且了解他们使用的软件的完整性和来源的用户,直到尽可能最低的级别。

您需要处理什么

  • 您需要自行构建和安装 airflow 及其组件。

  • 您应该开发和处理 Airflow 所有组件的部署。

  • 您负责设置数据库,使用 airflow db 命令创建和管理数据库模式,自动化启动和恢复,维护、清理以及 Airflow 和 Airflow Provider 的升级。

  • 您需要设置系统的监控,以便您观察资源并对问题做出反应。

  • 根据您安装的监控和反馈循环,您需要为安装配置和管理适当的资源(内存、CPU 等)。请参阅有关要求的注意事项。

Apache Airflow 社区为该方法提供什么

  • 您有关于如何构建软件的说明,但由于您可能想要使用的各种环境和工具,您可能会遇到特定于您的部署和环境的问题,您将不得不诊断和解决这些问题。

在哪里寻求帮助

  • slack 上的 #user-troubleshooting 频道可用于快速的一般故障排除问题。如果您正在寻找更长的讨论并有更多信息要分享,请使用GitHub 讨论

  • slack 上的 #user-best-practices 频道可用于询问和分享使用和部署 airflow 的最佳实践。

  • 如果您可以提供 Airflow 软件的可重现问题的描述,则可以在GitHub 问题中打开问题

  • 如果您想为 Airflow 做出贡献,请使用 #contributors slack 频道来构建 Airflow 本身

使用 PyPI

更多详情:从 PyPI 安装

此选项的最佳使用时机

  • 当您不熟悉容器和 Docker 并且希望在物理机或虚拟机上安装 Apache Airflow,并且习惯于使用自定义部署机制安装和运行软件时,此安装方法非常有用。

  • 唯一官方支持的安装机制是使用约束机制通过 pip 进行安装。约束文件由 Apache Airflow 发布管理者管理,以确保您可以从 PyPI 可重复地安装 Airflow 以及所有 Provider 和所需的依赖项。

  • 如果从 PyPI 安装,您还可以验证从 PyPI 下载的软件包的完整性和来源,如安装页面所述,但是您从 PyPI 下载的软件是为您预先构建的,因此您无需构建即可安装它,并且您无需从源代码构建软件。

目标用户

  • 熟悉安装和配置 Python 应用程序、管理 Python 环境、依赖项以及使用自定义部署机制运行软件的用户。

您需要处理什么

  • 您需要自行安装 Airflow 的所有组件。

  • 您应该开发和处理 Airflow 所有组件的部署。

  • 您负责设置数据库,使用 airflow db 命令创建和管理数据库模式,自动化启动和恢复,维护、清理以及 Airflow 和 Airflow Provider 的升级。

  • 您需要设置系统的监控,以便您观察资源并对问题做出反应。

  • 根据您安装的监控和反馈循环,您需要为安装配置和管理适当的资源(内存、CPU 等)。

Apache Airflow 社区为该方法提供什么

  • 您有关于如何安装软件的从 PyPI 安装,但由于您可能想要使用的各种环境和工具,您可能会遇到特定于您的部署和环境的问题,您将不得不诊断和解决这些问题。

  • 您有快速入门,您可以在其中看到使用本地运行 Airflow 的快速入门示例,您可以使用它来快速启动 Airflow 进行本地测试和开发。但是,这只是一个启发。不要期望快速入门已准备好进行生产安装,如果您遵循此方法,则需要构建自己的生产就绪部署。

在哪里寻求帮助

  • Airflow Slack 上的 #user-troubleshooting 频道可用于快速的一般故障排除问题。如果您正在寻找更长的讨论并有更多信息要分享,请使用GitHub 讨论

  • slack 上的 #user-best-practices 频道可用于询问和分享使用和部署 airflow 的最佳实践。

  • 如果您可以提供 Airflow 软件的可重现问题的描述,则可以在GitHub 问题中打开问题

使用生产 Docker 镜像

更多详情:Apache Airflow 的 Docker 镜像

此选项的最佳使用时机

当您熟悉容器/Docker 堆栈时,此安装方法非常有用。它提供了在与同一物理或虚拟机上运行的其他软件隔离的情况下运行 Airflow 组件的功能,并且易于维护依赖项。

镜像由 Apache Airflow 发布管理者构建,它们使用 PyPI 中正式发布的软件包和官方约束文件 - 与从 PyPI 安装 Airflow 所使用的软件包和文件相同。

目标用户

  • 熟悉容器和 Docker 堆栈并了解如何构建自己的容器镜像的用户。

  • 了解如何使用约束从 PyPI 安装 provider 和依赖项(如果他们想扩展或自定义镜像)的用户。

  • 知道如何通过将多个 Docker 容器链接在一起并维护此类部署来创建使用 Docker 的部署的用户。

您需要处理什么

  • 如果您想添加额外的依赖项,您应该能够自定义或扩展容器/Docker 镜像。您应该将由多个容器(例如,使用 docker-compose)构建的部署放在一起,并确保它们链接在一起。

  • 您负责设置数据库,使用 airflow db 命令创建和管理数据库模式,自动化启动和恢复,维护、清理以及 Airflow 和 Airflow Provider 的升级。

  • 您有责任管理您自己的自定义项和自定义依赖项的扩展。对于官方 Airflow Docker 镜像,作为参考镜像一部分的 Airflow 和 Airflow Provider 的升级由社区处理 - 您需要确保在发布时通过升级基础镜像来获取这些更改。但是,您有责任创建一个管道,使用您自己添加的依赖项和 Provider 来构建您自己的自定义镜像,并且需要在发布新版本的 Airflow 镜像时重复自定义步骤并构建您自己的镜像。

  • 您应该选择正确的部署机制。有许多可用的容器部署选项。您可以使用您自己的自定义机制、自定义 Kubernetes 部署、自定义 Docker Compose、自定义 Helm Chart 等,您应该根据您的经验和期望来选择它。

  • 您需要设置系统的监控,以便您观察资源并对问题做出反应。

  • 根据您安装的监控和反馈循环,您需要为安装配置和管理适当的资源(内存、CPU 等)。

Apache Airflow 社区为该方法提供什么

  • 您可以通过构建镜像了解如何构建和自定义您的镜像。

  • 您可以参考在 Docker 中运行 Airflow,其中提供了一个快速入门示例,您可以使用该示例快速启动 Airflow 以进行本地测试和开发。然而,这仅供参考。不要期望将此 docker-compose.yml 文件用于生产环境部署。您需要熟悉 Docker Compose 及其功能,并使用它构建自己的生产级部署(如果您选择 Docker Compose 进行部署)。

  • Docker 镜像由构建 Airflow 的同一团队管理,他们致力于在 Airflow 发布新特性和功能时保持镜像更新。

在哪里寻求帮助

  • 关于官方 Docker 镜像的快速问题,请在 Airflow Slack 的 #production-docker-image 频道中提问。

  • Airflow Slack 上的 #user-troubleshooting 频道可用于快速的一般故障排除问题。如果您正在寻找更长的讨论并有更多信息要分享,请使用GitHub 讨论

  • slack 上的 #user-best-practices 频道可用于询问和分享使用和部署 airflow 的最佳实践。

  • 如果您可以提供 Airflow 软件的可重现问题的描述,则可以在GitHub 问题中打开问题

使用官方 Airflow Helm Chart

更多详细信息请参考:Apache Airflow 的 Helm Chart

此选项的最佳使用时机

  • 当您不仅熟悉容器/Docker 技术,而且还使用 Kubernetes 并希望通过 Helm chart 安装和维护社区管理的 Kubernetes 安装机制时,此安装方法非常有用。

  • 它不仅提供了将 Airflow 组件与在同一物理或虚拟机上运行的其他软件隔离,并管理依赖项的能力,还提供了以标准化方式更轻松地维护、配置和升级 Airflow 的能力,并且该方式将由社区维护。

  • 该 Chart 使用官方 Airflow 生产 Docker 镜像来运行 Airflow。

目标用户

  • 熟悉容器和 Docker 堆栈并了解如何构建自己的容器镜像的用户。

  • 了解如何使用约束从 PyPI 安装 provider 和依赖项(如果他们想扩展或自定义镜像)的用户。

  • 适用于使用 Kubernetes 管理基础设施并使用 Helm Charts 在 Kubernetes 上管理应用程序的用户。

您需要处理什么

  • 如果您想添加额外的依赖项,您需要能够自定义或扩展容器/Docker 镜像。您需要将由多个容器组成的部署(例如使用 Docker Compose)组合在一起,并确保它们相互连接。

  • 您负责设置数据库。

  • Helm Chart 管理您的数据库架构,自动化应用程序组件的启动、恢复和重启,并将它们连接在一起,因此您不必担心这些。

  • 您有责任管理您自己的自定义项和自定义依赖项的扩展。对于官方 Airflow Docker 镜像,作为参考镜像一部分的 Airflow 和 Airflow Provider 的升级由社区处理 - 您需要确保在发布时通过升级基础镜像来获取这些更改。但是,您有责任创建一个管道,使用您自己添加的依赖项和 Provider 来构建您自己的自定义镜像,并且需要在发布新版本的 Airflow 镜像时重复自定义步骤并构建您自己的镜像。

  • 您需要设置系统的监控,以便您观察资源并对问题做出反应。

  • 根据您安装的监控和反馈循环,您需要为安装配置和管理适当的资源(内存、CPU 等)。

Apache Airflow 社区为该方法提供什么

  • 您可以通过构建镜像了解如何构建和自定义您的镜像。

  • 您可以通过Apache Airflow 的 Helm Chart了解如何配置和安装 Helm Chart 的完整文档。

  • Helm Chart 由构建 Airflow 的同一团队管理,他们致力于在 Airflow 发布新特性和功能时保持 Chart 更新。

在哪里寻求帮助

  • 关于官方 Docker 镜像的快速问题,请在 Airflow Slack 的 #production-docker-image 频道中提问。

  • 关于官方 Helm Chart 的快速问题,请在 Slack 的 #helm-chart-official 频道中提问。

  • Airflow Slack 上的 #user-troubleshooting 频道可用于快速的一般故障排除问题。如果您正在寻找更长的讨论并有更多信息要分享,请使用GitHub 讨论

  • slack 上的 #user-best-practices 频道可用于询问和分享使用和部署 airflow 的最佳实践。

  • 如果您可以提供 Airflow 软件的可重现问题的描述,则可以在GitHub 问题中打开问题

使用托管的 Airflow 服务

请参考 生态系统 页面查找所有 Airflow 的托管服务。

此选项的最佳使用时机

  • 如果您希望其他人为您管理 Airflow 安装,可以使用托管的 Airflow 服务。

目标用户

  • 适用于希望由他人管理 Airflow 并愿意为此付费的用户。

您需要处理什么

  • 托管服务通常提供运行 Airflow 所需的一切。有关详细信息,请参阅托管服务的文档。

Apache Airflow 社区为该方法提供什么

  • Airflow 社区不提供任何关于托管服务的特定文档。有关详细信息,请参阅托管服务的文档。

在哪里寻求帮助

  • 您的首选应该是托管服务提供的支持。Apache Airflow Slack 中有几个专门为不同用户群设置的频道。如果您认为问题更多与 Airflow 而不是托管服务有关,可以使用这些频道。

使用第三方镜像、Chart、部署

请参考 生态系统 页面查找所有第三方部署选项。

此选项的最佳使用时机

  • 如果之前提到的官方方法都不适合您,或者您历史上一直使用这些方法,那么这些安装方法很有用。不过,建议您在考虑任何更改时,应考虑切换到 Apache Airflow 社区或托管服务官方支持的方法之一。

目标用户

  • 适用于历史上使用其他安装方法或出于其他原因认为官方方法不足的用户。

您需要处理什么

  • 取决于第三方提供的服务。请查看第三方的文档。

Apache Airflow 社区为该方法提供什么

  • Airflow 社区不提供任何关于第三方方法的特定文档。有关详细信息,请参阅托管服务的文档。

在哪里寻求帮助

  • 取决于第三方提供的服务。请查看您使用的第三方部署的文档。

关于最低要求的说明

经常有人问关于生产系统中 Airflow 的最低要求,但是这个问题没有简单的答案。

Airflow 可能需要的要求取决于许多因素,包括(但不限于):
  • 您安装 Airflow 的部署方式(请参阅上面安装 Airflow 的方法)

  • 部署环境(例如 Kubernetes、Docker、Helm 等)的要求,这些要求完全独立于 Airflow(例如 DNS 资源,共享节点/资源),并且需要更多(或更少)的 Pod 和容器,这可能取决于特定技术/云/监控集成等的选择。

  • 运行您的部署的数据库、硬件、网络等的技术细节

  • 您添加到 DAG、配置、插件、设置等的代码的复杂性(请注意,Airflow 运行 DAG 作者和部署管理器提供的代码)

  • 您安装和使用的 Provider 的数量和选择(Airflow 有 80 多个 Provider),这些 Provider 可以由部署管理器选择安装,并且使用它们可能需要更多资源。

  • 您在调整 Airflow 时使用的参数选择。Airflow 有许多可以根据您的需求进行微调的配置参数

  • 您运行的 DagRun 和任务实例的数量,以及每个实例的并行实例

  • 您运行的任务有多复杂

上述 “DAG” 特性会随着时间的推移而变化,甚至会根据一天或一周中的时间而变化,因此您必须准备好持续监控系统并调整参数以使其平稳运行。

虽然我们可以为某些开发 “快速入门” 提供一些特定的最低要求,例如在我们的 在 Docker 中运行 Airflow 快速入门指南中,但不可能为生产系统提供任何最低要求。

考虑 Airflow 实例的资源分配的最佳方式是从过程控制理论的角度来考虑 - 其中有两种类型的系统

  1. 完全可预测的,具有少量旋钮和变量,您可以可靠地设置旋钮的值并轻松确定系统的行为

  2. 具有多个变量的复杂系统,这些变量难以预测,并且您需要监控系统并不断调整旋钮以确保系统平稳运行。

Airflow(以及通常在云服务上运行的任何现代系统,具有多个负责资源的层以及多个参数来控制其行为)是一个复杂的系统,它们更属于第二类。如果您决定在生产环境中自行运行 Airflow,您应该为监控/观察/调整反馈循环做好准备,以确保系统平稳运行。

拥有一个良好的监控系统,使您可以监控系统并调整参数是实践中必须的。

您还可以使用一些指南来优化资源使用。 微调您的调度器性能 是微调调度器的一个好的起点,您还可以遵循 最佳实践 指南,以确保您以最有效的方式使用 Airflow。

此外,托管 Airflow 服务提供的重要一点是,它们会为您做出很多有主见的选项,并微调系统,因此您不必过于担心。使用此类托管服务,通常需要调整的旋钮和选择会少得多,您需要为此付费的一件事是,托管服务提供商会为您管理系统并提供付费支持,并允许您根据需要扩展系统并分配正确的资源 - 这要遵循您可能拥有的部署类型所做的选择。

此条目是否有帮助?