安装 Airflow®¶
本页面介绍在考虑如何安装 Airflow® 时可能会用到的安装选项。Airflow 包含许多组件,这些组件通常分布在多台物理机或虚拟机上,因此 Airflow 的安装可能会相当复杂,具体取决于您选择的选项。
您还应该查阅 先决条件,这是安装 Airflow 时必须满足的条件,以及 支持的版本,以了解支持 Airflow、Python 和 Kubernetes 的策略。
Airflow 需要额外安装 依赖项 - 这可以通过 extras 和 providers 完成。
安装 Airflow 时,您需要 设置数据库,并且在 Airflow 升级时必须保持更新。
使用已发布源代码¶
更多详情: 从源代码安装
此选项何时最适合
如果您期望从源代码构建所有软件,此选项最适合。
Apache Airflow 是属于 Apache 软件基金会 的项目之一。所有 ASF 项目都必须能够使用通过 Apache 官方下载 发布的官方源代码进行安装。
如果您强烈需要 验证软件的完整性和来源,这是最佳选择
目标用户
熟悉从源代码安装和构建软件,并且非常关注所用软件的完整性和来源(直至最低层级)的用户。
您需要负责什么
您需要自行构建和安装 Airflow 及其组件。
您应该开发和处理 Airflow 所有组件的部署。
您负责设置数据库,使用
airflow db
命令创建和管理数据库架构,以及 Airflow 和 Airflow Providers 的自动化启动与恢复、维护、清理和升级。您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装监控和反馈循环来配置和管理合适的安装资源(内存、CPU 等)。请参阅关于要求的注意事项。
Apache Airflow 社区为该方法提供什么
您可以获得关于如何构建软件的 说明,但由于您可能使用的各种环境和工具,可能会出现特定于您的部署和环境的问题,您将需要自行诊断和解决。
在哪里寻求帮助
Slack 上的
#user-troubleshooting
频道可用于快速的一般故障排除问题。如果您需要更深入的讨论并分享更多信息,可以使用 GitHub Discussions。Slack 上的
#user-best-practices
频道可用于咨询和分享使用及部署 Airflow 的最佳实践。如果您能提供关于 Airflow 软件的可重现问题的描述,可以在 GitHub Issues 提交问题。
如果您想为 Airflow 贡献代码,用于构建 Airflow 本身的 Slack 频道是
#contributors
使用 PyPI¶
更多详情: 从 PyPI 安装
此选项何时最适合
如果您不熟悉容器和 Docker,希望在物理机或虚拟机上安装 Apache Airflow,并且习惯于使用自定义部署机制来安装和运行软件,则此安装方法非常有用。
唯一官方支持的安装机制是使用约束机制通过
pip
进行。约束文件由 Apache Airflow 发布经理管理,以确保您可以从 PyPI 重复性地安装包含所有 Provider 和所需依赖项的 Airflow。对于 PyPI 安装,您也可以按照安装页面所述验证从 PyPI 下载的软件包的完整性和来源,但您从 PyPI 下载的软件是预构建的,因此您可以直接安装而无需构建,也就是说您不是从源代码构建软件。
目标用户
熟悉安装和配置 Python 应用程序、管理 Python 环境、依赖项并使用自定义部署机制运行软件的用户。
您需要负责什么
您需要自行安装 Airflow 及其所有组件。
您应该开发和处理 Airflow 所有组件的部署。
您负责设置数据库,使用
airflow db
命令创建和管理数据库架构,以及 Airflow 和 Airflow Providers 的自动化启动与恢复、维护、清理和升级。您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装监控和反馈循环来配置和管理合适的安装资源(内存、CPU 等)。
Apache Airflow 社区为该方法提供什么
您可以获得关于如何安装软件的 从 PyPI 安装,但由于您可能使用的各种环境和工具,可能会出现特定于您的部署和环境的问题,您将需要自行诊断和解决。
您可以参考 快速入门,其中包含一个在本地运行 Airflow 的快速入门示例,可用于本地测试和开发。但请注意,这仅供参考。请勿期望 快速入门 可直接用于生产环境安装;如果您选择此方法,需要构建自己的生产就绪部署。
在哪里寻求帮助
Airflow Slack 上的
#user-troubleshooting
频道可用于快速的一般故障排除问题。如果您需要更深入的讨论并分享更多信息,可以使用 GitHub Discussions。Slack 上的
#user-best-practices
频道可用于咨询和分享使用及部署 Airflow 的最佳实践。如果您能提供关于 Airflow 软件的可重现问题的描述,可以在 GitHub Issues 提交问题。
使用生产环境 Docker 镜像¶
更多详情: Apache Airflow Docker 镜像
此选项何时最适合
如果您熟悉容器/Docker 技术栈,此安装方法非常有用。它提供了在同一物理机或虚拟机上与其他软件隔离运行 Airflow 组件的能力,并易于维护依赖项。
这些镜像由 Apache Airflow 发布经理构建,并使用 PyPI 官方发布的软件包和官方约束文件 - 与从 PyPI 安装 Airflow 时使用的文件相同。
目标用户
熟悉容器和 Docker 技术栈并了解如何构建自己的容器镜像的用户。
如果需要扩展或定制镜像,了解如何使用约束从 PyPI 安装 provider 和依赖项的用户。
知道如何通过将多个 Docker 容器链接在一起来使用 Docker 创建部署并维护此类部署的用户。
您需要负责什么
如果您想添加额外的依赖项,需要能够定制或扩展容器/Docker 镜像。您需要能够构建由多个容器组成的部署(例如,使用
docker-compose
),并确保它们正确地连接在一起。您负责设置数据库,使用
airflow db
命令创建和管理数据库架构,以及 Airflow 和 Airflow Providers 的自动化启动与恢复、维护、清理和升级。您负责管理自定义依赖项的定制和扩展。对于官方 Airflow Docker 镜像,参考镜像中包含的 Airflow 和 Airflow Providers 的升级由社区处理 - 您需要在新版本发布时通过升级基础镜像来获取这些变更。但是,您负责构建包含您添加的依赖项和 Provider 的自定义镜像的流程,并且在 Airflow 镜像新版本发布时,需要重复定制步骤并构建您自己的镜像。
您应该选择合适的部署机制。容器部署有多种选项。您可以使用自己的自定义机制、自定义 Kubernetes 部署、自定义 Docker Compose、自定义 Helm charts 等,您应根据自己的经验和期望进行选择。
您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装监控和反馈循环来配置和管理合适的安装资源(内存、CPU 等)。
Apache Airflow 社区为该方法提供什么
您可以获得关于如何构建和定制镜像的 说明。
您可以参考 在 Docker 中运行 Airflow,其中包含一个快速入门示例,可用于本地测试和开发。但请注意,这仅供参考。请勿期望使用此
docker-compose.yml
文件进行生产环境安装,如果您选择 Docker Compose 进行部署,需要熟悉 Docker Compose 及其功能,并使用它构建自己的生产就绪部署。该 Docker 镜像由构建 Airflow 的同一批人员管理,他们致力于在新功能和能力发布时保持其更新。
在哪里寻求帮助
关于官方 Docker 镜像的快速问题,可以在 Airflow Slack 的
#production-docker-image
频道中提出。Airflow Slack 上的
#user-troubleshooting
频道可用于快速的一般故障排除问题。如果您需要更深入的讨论并分享更多信息,可以使用 GitHub Discussions。Slack 上的
#user-best-practices
频道可用于咨询和分享使用及部署 Airflow 的最佳实践。如果您能提供关于 Airflow 软件的可重现问题的描述,可以在 GitHub Issues 提交问题。
使用官方 Airflow Helm Chart¶
更多详情: Apache Airflow Helm Chart
此选项何时最适合
此安装方法适用于不仅熟悉容器/Docker 技术栈,还使用 Kubernetes 并希望通过社区管理的 Helm chart 机制安装和维护 Airflow 的用户。
它不仅提供了在同一物理机或虚拟机上与其他软件隔离运行 Airflow 组件并管理依赖项的能力,还提供了以标准化方式更轻松地维护、配置和升级 Airflow 的能力,并且将由社区维护。
该 Chart 使用官方 Airflow 生产环境 Docker 镜像来运行 Airflow。
目标用户
熟悉容器和 Docker 技术栈并了解如何构建自己的容器镜像的用户。
如果需要扩展或定制镜像,了解如何使用约束从 PyPI 安装 provider 和依赖项的用户。
使用 Kubernetes 管理其基础设施,并使用 Helm Chart 管理其在 Kubernetes 上的应用程序的用户。
您需要负责什么
如果您想添加额外的依赖项,需要能够定制或扩展容器/Docker 镜像。您需要能够构建由多个容器组成的部署(例如,使用 Docker Compose),并确保它们正确地连接在一起。
您负责设置数据库。
Helm Chart 管理您的数据库架构,自动化应用程序组件的启动、恢复和重启,并将它们连接在一起,因此您无需为此担忧。
您负责管理自定义依赖项的定制和扩展。对于官方 Airflow Docker 镜像,参考镜像中包含的 Airflow 和 Airflow Providers 的升级由社区处理 - 您需要在新版本发布时通过升级基础镜像来获取这些变更。但是,您负责构建包含您添加的依赖项和 Provider 的自定义镜像的流程,并且在 Airflow 镜像新版本发布时,需要重复定制步骤并构建您自己的镜像。
您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装监控和反馈循环来配置和管理合适的安装资源(内存、CPU 等)。
Apache Airflow 社区为该方法提供什么
您可以获得关于如何构建和定制镜像的 说明。
您可以获得 Apache Airflow Helm Chart - 完整的配置和安装文档。
该 Helm Chart 由构建 Airflow 的同一批人员管理,他们致力于在新功能和能力发布时保持其更新。
在哪里寻求帮助
关于官方 Docker 镜像的快速问题,可以在 Airflow Slack 的
#production-docker-image
频道中提出。关于官方 Helm Chart 的快速问题,可以在 Slack 的
#helm-chart-official
频道中提出。Airflow Slack 上的
#user-troubleshooting
频道可用于快速的一般故障排除问题。如果您需要更深入的讨论并分享更多信息,可以使用 GitHub Discussions。Slack 上的
#user-best-practices
频道可用于咨询和分享使用及部署 Airflow 的最佳实践。如果您能提供关于 Airflow 软件的可重现问题的描述,可以在 GitHub Issues 提交问题。
使用托管 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 有许多可以根据您的需求进行微调的配置参数。
您运行的 DagRuns 和任务实例的数量,以及考虑到它们的并行实例数
您运行的任务的复杂程度
上述“DAG”特性会随时间变化,甚至会根据一天或一周中的不同时间而变化,因此您必须准备好持续监控系统并调整参数,以使其平稳运行。
虽然我们可以为某些开发“快速入门”提供一些特定的最低要求 - 例如我们的快速入门指南 在 Docker 中运行 Airflow,但无法为生产系统提供任何最低要求。
考虑 Airflow 实例资源分配的最佳方式是从过程控制理论的角度思考 - 其中存在两种类型的系统
完全可预测的系统,具有少量旋钮和变量,您可以可靠地设置这些旋钮的值,并轻松确定系统的行为
具有多个变量的复杂系统,难以预测,您需要持续监控系统并调整旋钮以确保系统平稳运行。
Airflow(以及通常运行在云服务上、具有多层资源管理和多个行为控制参数的任何现代系统)是一个复杂系统,它更倾向于第二类。如果您决定自行在生产环境中运行 Airflow,则应做好准备进行监控/观察/调整的反馈循环,以确保系统平稳运行。
拥有一个能够监控系统并调整参数的良好监控系统是实践这一点的必需条件。
还有一些可用于优化资源使用的指南。微调调度器性能 是微调调度器的一个良好起点,您还可以遵循 最佳实践 指南,以确保您以最有效的方式使用 Airflow。
此外,托管 Airflow 服务提供的一项重要内容是它们做出了许多有倾向性的选择并为您微调了系统,因此您无需为此过多担忧。使用此类托管服务时,通常需要调整的旋钮和做出的选择要少得多,而您为此付费的原因之一就是托管服务提供商为您管理系统并提供有偿支持,并允许您根据需要扩展系统并分配合适的资源 - 遵循他们在部署类型上所做的选择。