Amazon Managed Workflows for Apache Airflow (MWAA) 常见问题

问:什么是 Amazon MWAA?

Amazon Managed Workflows for Apache Airflows (MWAA) 是一项托管的 Apache Airflow 服务,用于通过称为工作流的一系列任务组合、丰富和转换数据,从而在整个组织范围内提取业务见解。Managed Workflows 使您无需管理、配置和扩展 Airflow 环境,同时可以通过 Amazon CloudWatch 支持的日志记录和监控功能协调数据处理工作流并管理其执行。您可以在 Amazon MWAA 上运行现有的 Airflow 工作流,并使用亚马逊云科技管理控制台、API 和命令行界面 (CLI) 以编程方式与其环境进行交互。 

问:应该何时使用 Managed Workflows?

您应该使用 Amazon MWAA 将更多的工程/数据科学时间花在构建工作流上,减少在管理基础设施和 Airflow 环境花费的时间,同时通过托管服务实现稳定的性能。数据工程和数据科学团队一直在使用 Airflow 作为领先的开源协调环境,用于构建和执行定义提取-转换-加载 (ETL) 任务和机器学习数据管道的工作流。Airflow 能够以编程方式构建、安排和监控使用 Python(数据处理的首选语言)编写的工作流,一定会让您喜欢。Airflow 任务插件模型和开放架构,允许您构建自定义工作流,包括对本地数据源的支持。但是,团队要想从 Airflow 的编程界面中受益,必须先配置和维护服务器并对其进行监控,以使其正常运行。许多客户指定数据工程师来管理工作人员队列、安装依赖项、扩展和缩减系统和重启调度器。Managed Workflows 可为您提供高度可用、受监控且可自动扩展的托管式 Airflow 环境,让您无需执行这些手动操作。 

问:Amazon MWAA 可代我管理哪些内容?

Amazon MWAA 可以管理与 Airflow 设置相关的工作,从预置基础设施容量(服务器实例和存储)到安装软件,再到通过 Amazon Identity and Access Management (IAM) 提供简化的用户管理和授权。 

问:该服务如何与其他亚马逊云科技服务建立联系/结合使用?

Amazon MWAA 是一种工作流环境,允许数据工程师和数据科学家使用其他亚马逊云科技服务、本地服务和其他云服务构建工作流。Amazon MWAA 工作流使用 Athena 查询检索来自 S3 等来源的输入、在 EMR 集群上执行转换,并且可以使用生成的数据在 SageMaker 上训练机器学习 (ML) 模型。Amazon MWAA 中的工作流使用 Python 编写为有向无环图 (DAG)。Airflow 的一个主要优势在于它可以通过插件实现开放扩展,允许您为您的工作流所需的任何亚马逊云科技资源和本地资源创建任务插件,包括 Athena、Batch、Cloudwatch、DynamoDB、DataSync、EMR、ECS/Fargate、EKS 、Firehose、Glue、Lambda、Redshift、SQS、SNS、Sagemaker 和 S3。 

问:如何监控 Amazon MWAA 服务和工作流执行情况?

Amazon MWAA 将通过亚马逊云科技管理控制台、Amazon CLI 和 SDK 提供对可用 Airflow 环境的访问。Airflow 用户界面可以配置为直接访问互联网和/或 VPC。Airflow 命令行说明将通过 API 调用和亚马逊 CLI 提供。 

问:该服务支持哪些 Airflow 插件?

Amazon MWAA 将支持迄今为止开发的所有 100 多个 Airflow 社区插件,以及您创建的任何自定义插件,只需将它们放入 S3 存储桶即可。 

问:如何监控 Amazon MWAA 服务和工作流执行情况?

您可以通过 Amazon MWAA 管理控制台和 Airflow 用户界面直接访问每个 Airflow 环境。Airflow 指标将发布到 Amazon CloudWatch Metrics,日志将发布到 CloudWatch Logs。 

问:我应该分别在何时使用 Amazon MWAA 与Amazon Step Functions?

如果您优先考虑开源和可移植性,则应使用 Amazon MWAA。Airflow 拥有庞大而活跃的开源社区,定期提供新功能和集成。Amazon MWAA 支持现有的 Airflow 工作流和集成,无需更改代码,迁移简单且环境熟悉。

如果您优先考虑成本和性能,则应使用 Step Functions。例如,如果要在将流数据放入 DynamoDB 数据库或 S3 之前对其进行处理流并通过多个步骤进行转换,则应使用 Step Functions,因为它的性能更高、成本更低。