你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本指南介绍如何使用 Helm 在 Azure Kubernetes 服务 (AKS) 上部署 Apache Airflow。 了解如何设置 AKS 群集、安装 Helm、使用 Helm 图表部署 Airflow 以及浏览 Airflow UI。
重要
AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。
例如,Ray GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。
Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。
什么是 Apache Airflow?
Apache Airflow 是一个开源平台,专为开发、计划和监视面向批处理的工作流而构建。 借助其灵活的 Python 框架,Airflow 允许设计与几乎所有技术无缝集成的工作流。 在 Airflow 中,必须定义由定向无环图 (DAG) 表示的 Python 工作流。 可以在任意位置部署 Airflow,部署后,可以访问 Airflow UI 并设置工作流。
Airflow 体系结构
在高级别上,Airflow 包括:
- 跟踪 DAG、任务实例、XComs 等状态的元数据数据库。
- 提供 Airflow UI 的 Web 服务器,用于监视和管理。
- 负责触发 DAG 和任务实例的计划程序。
- 处理任务实例执行的执行程序。
- 执行任务的辅助角色。
- 命令行接口 (CLI) 等其他组件。
用于生产的 Airflow 分布式体系结构
Airflow 模块化分布式体系结构为生产工作负荷提供了多项关键优势:
- 关注点分离:每个组件具有不同的角色,使系统保持简单且可维护。 计划程序管理 DAG 和任务计划,而辅助角色执行任务,确保每个部分都专注于其特定功能。
- 可伸缩性:随着工作负荷的增长,体系结构允许轻松缩放。 可以同时运行多个计划程序或辅助角色,并利用托管数据库进行自动缩放以满足增加的需求。
- 可靠性:由于组件分离,单个计划程序或辅助角色的故障不会导致系统范围的中断。 集中式元数据数据库可确保整个系统的一致性和连续性。
- 扩展性:该体系结构很灵活,允许执行程序或排队服务等组件根据需要进行交换和自定义。
此设计为管理复杂数据管道提供了强大的基础,用于缩放、可靠性和灵活性。
Airflow 执行程序
在使 Airflow 生产就绪时,一个非常重要的设计决策是选择正确的执行程序。 当任务准备好运行时,执行程序负责管理其执行。 执行程序与执行任务的工作器池进行交互。 最常用的执行程序包括:
- LocalExecutor:在主机系统上并行运行任务实例。 此执行程序非常适合用于测试,但为较大的工作负荷提供有限的可伸缩性。
- CeleryExecutor:使用 Celery 池在多台计算机上分配任务,通过在不同的节点上运行辅助角色来提供水平可伸缩性。
- KubernetesExecutor:专为 Kubernetes 中的 Airflow 部署量身定做,此执行程序会在 Kubernetes 群集中动态启动辅助角色 Pod。 它提供出色的可伸缩性,并确保强大的资源隔离。
当我们将 Airflow 过渡到生产时,缩放辅助角色变得至关重要,它使 KubernetesExecutor 能够最适合我们的需求。 但是,对于本地测试,LocalExecutor 是最简单的选项。
下一步
供稿人
Microsoft 会维护本文。 本系列文章为以下参与者的原创作品:
- Don High | 首席客户工程师
- Satya Chandragiri |高级数字云解决方案架构师
- Erin Schaffer | 内容开发人员 2