Airflow® 安装指南¶
本页面介绍了在考虑如何安装Airflow®时可能使用的安装选项。 Airflow由许多组件组成,通常分布在多台物理或虚拟机器上,因此 根据您选择的选项,Airflow的安装可能会相当复杂。
你还应该查看安装Airflow时必须满足的先决条件,以及了解支持Airflow、Python和Kubernetes政策的支持版本。
Airflow需要安装额外的依赖项 - 可以通过扩展包和提供者来实现。
安装Airflow时,您需要设置数据库,并且在升级Airflow时也必须保持数据库更新。
警告
截至2021年6月,Airflow 1.10已终止生命周期,将不再接收任何修复,包括关键安全补丁。请参阅从1.10升级到2了解如何将终止支持的1.10版本升级至Airflow 2。
使用已发布的源代码¶
更多详情:从源代码安装
该选项最佳适用场景
如果您期望从源代码构建所有软件,此选项是最佳选择。
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本身的
#contributorsSlack频道
使用PyPI¶
更多详情:从PyPI安装
该选项最佳适用场景
当您不熟悉容器和Docker技术,并希望在物理机或虚拟机上安装Apache Airflow,且习惯使用自定义部署机制来安装和运行软件时,这种安装方法非常有用。
唯一官方支持的安装方式是通过
pip使用约束机制。这些约束文件由Apache Airflow发布经理管理,确保您可以从PyPI可重复地安装Airflow及其所有Providers和所需依赖项。如果是通过PyPI安装,你也可以按照安装页面所述验证从PyPI下载的软件包的完整性和来源。但从PyPI下载的软件是预先构建好的,因此无需自行构建即可安装,且不会从源代码构建软件。
目标用户
熟悉安装和配置Python应用程序、管理Python环境、依赖项以及使用自定义部署机制运行软件的用户。
您需要处理哪些内容
您需要自行安装Airflow——包括其所有组件。
你应该开发和负责Airflow所有组件的部署。
您需要负责设置数据库,使用
airflow db命令创建和管理数据库模式,自动化启动和恢复,以及维护、清理和升级Airflow和Airflow Providers。您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装的监控和反馈循环,配置和管理适当的资源(内存、CPU等)。
Apache Airflow 社区为该方法提供的内容
您可以通过从PyPI安装了解如何安装该软件,但由于您可能使用的各种环境和工具,可能会遇到特定于您的部署环境的问题,需要您自行诊断和解决。
您可以使用快速入门查看在本地运行Airflow的示例,这可以帮助您快速启动Airflow进行本地测试和开发。但请注意,这仅作为参考。快速入门并不适合直接用于生产环境,如果您采用这种方式,需要自行构建适合生产环境的部署方案。
在哪里寻求帮助
Airflow Slack上的
#user-troubleshooting频道用于快速解决一般故障排除问题。如需更长时间讨论或分享更多信息,请使用GitHub discussions。Slack上的
#user-best-practices频道可用于咨询和分享关于使用和部署airflow的最佳实践。如果您能提供关于Airflow软件可重现问题的描述,可以在GitHub issues上提交问题
使用生产环境Docker镜像¶
该选项最佳适用场景
当您熟悉容器/Docker技术栈时,这种安装方式非常实用。它能够在同一物理机或虚拟机上与其他运行中的软件隔离运行Airflow组件,同时便于维护依赖关系。
这些镜像由Apache Airflow的发布管理者构建,它们使用来自PyPI的官方发布包以及官方约束文件——与从PyPI安装Airflow时使用的相同。
目标用户
熟悉容器和Docker技术栈,并了解如何构建自定义容器镜像的用户。
了解如何从PyPI安装带有约束条件的providers和依赖项的用户,如果他们想要扩展或自定义镜像。
了解如何通过将多个Docker容器链接在一起来创建部署并维护此类部署的用户。
您需要处理哪些内容
如果您需要添加额外的依赖项,您应该能够自定义或扩展Container/Docker镜像。您需要将多个容器(例如使用docker-compose)组合成一个部署,并确保它们相互连接。
您需要负责设置数据库,使用
airflow db命令创建和管理数据库模式, 自动化启动和恢复、维护、清理以及Airflow和Airflow Providers的升级。您需要负责管理自定义依赖项的自定义修改和扩展。对于官方Airflow Docker镜像,由社区处理Airflow及作为参考镜像一部分的Airflow Providers的升级 - 您需要通过升级基础镜像来确保在发布时获取这些变更。然而,您需要负责构建包含自定义依赖项和Providers的自定义镜像的流水线,并在新版本Airflow镜像发布时重复自定义步骤并重新构建自己的镜像。
您应该选择合适的部署机制。有多种容器部署选项可供选择,您可以使用自定义机制、自定义Kubernetes部署、自定义Docker Compose、自定义Helm图表等,应根据您的经验和需求来选择。
您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装的监控和反馈循环,配置和管理适当的资源(内存、CPU等)。
Apache Airflow 社区为该方法提供的内容
您有以下指引:构建镜像关于如何构建和定制您的镜像。
您已拥有Running Airflow in Docker,其中可以看到一个快速入门示例,可用于快速启动Airflow进行本地测试和开发。但请注意,这仅作为参考示例。不要期望将此
docker-compose.yml文件用于生产环境安装,您需要熟悉Docker Compose及其功能,如果您选择使用Docker Compose进行部署,需要基于它构建适合生产环境的部署方案。该Docker镜像由构建Airflow的同一团队管理,他们承诺每当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的能力,这种方式将由社区持续维护。
该图表使用官方的Airflow生产环境Docker镜像来运行Airflow。
目标用户
熟悉容器和Docker技术栈,并了解如何构建自定义容器镜像的用户。
了解如何从PyPI安装带有约束条件的providers和依赖项的用户,如果他们想要扩展或自定义镜像。
使用Kubernetes管理基础设施并通过Helm Charts在Kubernetes上管理应用程序的用户。
您需要处理哪些内容
如果需要添加额外的依赖项,您应该能够自定义或扩展容器/Docker镜像。您需要将多个容器(例如使用Docker Compose)组合成一个部署,并确保它们相互连接。
您负责设置数据库。
Helm Chart 管理您的数据库架构,自动化应用程序组件的启动、恢复和重启,并将它们连接在一起,因此您无需为此担忧。
您需要自行管理自定义依赖项的定制和扩展。 使用官方Airflow Docker镜像时,社区会处理Airflow及Airflow Providers(作为参考镜像的一部分)的升级——您只需在基础镜像更新时获取这些变更即可。但您需要负责构建包含自定义依赖项和Providers的镜像流水线,并在新版Airflow镜像发布时重复定制步骤来重建镜像。
您需要设置系统监控,以便观察资源并对问题做出反应。
您需要根据安装的监控和反馈循环,配置和管理适当的资源(内存、CPU等)。
Apache Airflow 社区为该方法提供的内容
您有以下指引:构建镜像关于如何构建和定制您的镜像。
您拥有Helm Chart for Apache Airflow - 关于如何配置和安装该Helm Chart的完整文档。
Helm Chart由构建Airflow的同一团队管理,他们承诺在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相关而非托管服务,可以使用这些频道。
使用第三方镜像、图表和部署¶
请访问Ecosystem页面查看所有第三方部署选项。
该选项最佳适用场景
如果前面提到的官方安装方法都不适合您,或者您过去一直使用这些方法,那么这些安装方法会很有用。不过建议您,每当考虑任何变更时,都应该考虑切换到Apache Airflow社区或托管服务官方支持的方法之一。
目标用户
Users who historically used other installation methods or find the official methods not sufficient for other reasons.
您需要处理哪些内容
取决于第三方提供的内容。请查阅第三方的文档。
Apache Airflow 社区为该方法提供的内容
Airflow社区不提供任何关于第三方方法的具体文档。详情请参阅托管服务的文档。
在哪里寻求帮助
取决于第三方提供的内容。请查阅您所使用的第三方部署文档。
关于最低要求的说明¶
关于生产系统中Airflow的最低要求经常有疑问,但这个问题无法给出简单的答案。
- The requirements that Airflow might need depend on many factors, including (but not limited to):
您安装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托管服务提供的一个重要功能是,它们会做出许多经过深思熟虑的选择,并为您微调系统,因此您无需过多担心。使用此类托管服务时,通常需要调整的选项和做出的选择要少得多,您支付的部分费用就是托管服务提供商为您管理系统,提供付费支持,并允许您根据需要扩展系统和分配正确的资源——根据您可能拥有的部署类型,遵循这些选择。