配置 Amazon MWAA 工作程序自动扩展 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Amazon MWAA 工作程序自动扩展

自动扩展机制会自动增加 Apache Airflow 工作程序的数量,以响应适用于 Apache Airflow 的 Amazon 托管工作流环境中正在运行和排队的任务,并在没有其他任务排队或正在执行时处置额外的工作程序。本页介绍如何使用 Amazon MWAA 控制台指定在您的环境中运行的 Apache Airflow 工作程序的最大数量,从而配置自动扩展。

注意

Amazon MWAA 使用 Apache Airflow 指标来确定何时需要额外的 Celery 执行程序工作线程,并根据需要将 Fargate 工作线程数增加到 max-workers 指定的值。随着额外工作人员完成工作和工作负荷减少,Amazon MWAA 会将其移除,从而缩减到设定的值。min-workers

如果工作人员在缩小规模的同时接管新任务,Amazon MWAA 会保留 Fargate 资源并且不会移除该工作人员。有关更多信息,请参阅 Amazon MWAA 自动缩放的工作原理。

工作人员缩放的工作原理

Amazon MWAA 使用 RunningTasksQueuedTasks 指标,其中(正在运行的任务 + 排队的任务)/(每个工作线程的任务数)=(所需工作线程)。如果所需的工作线程数大于当前工作线程数,Amazon MWAA 将在该值中添加 Fargate 工作线程容器,但不得超过 max-workers 指定的最大值。

随着工作负载的减少和QueuedTasks指标总RunningTasks和的减少,Amazon MWAA 请求 Fargate 缩减环境的工作人员。在缩小规模期间,任何仍在完成工作的员工都将受到保护,直到他们完成工作。视工作负载而定,任务可能会排队等候,而工作人员缩小规模。

使用 Amazon MWAA 控制台

您可以在 Amazon MWAA 控制台上选择可在环境中同时运行的最大工作线程数。默认情况下,您可以指定最大值,最大值为 25。

要配置工作线程数,请执行以下操作
  1. 在 Amazon MWAA 控制台上打开环境页面

  2. 选择环境。

  3. 选择编辑

  4. 选择下一步

  5. 环境类窗格上,在最大工作线程计数中输入一个值。

  6. 选择保存

注意

更改可能需要几分钟才能生效。

高性能用例示例

下一节介绍可用于在环境中实现高性能和并行性的配置类型。

本地 Apache Airflow

通常,在本地 Apache Airflow 平台中,你需要在文件中配置任务并行度、自动缩放和并发设置:airflow.cfg

  • core.parallelism— 每个计划程序可以同时运行的最大任务实例数。

  • core.dag_concurrency— DAG(非工作线程)的最大并发度。

  • celery.worker_autoscale— 可在任何工作线程上同时运行的最大和最小任务数。

例如,如果 core.parallelism 设置为 100core.dag_concurrency 设置为 7,则只有在拥有 2 个 DAG 的情况下,您仍然能够同时运行总共的 14 个任务。假设,即使总体并行度设置为 100(在 core.parallelism 中),每个 DAG 也只能同时运行七个任务(在 core.dag_concurrency 中)。

在Amazon MWAA 环境中

在 Amazon MWAA 环境中,您可以直接在 Amazon MWAA 控制台上使用在 Amazon MWAA 上使用 Apache Airflow 配置选项配置 Amazon MWAA 环境类、和最大工作器数自动缩放机制配置这些设置。虽然core.dag_concurrency在下拉列表中未作为 Amazon MWAA 控制台上的 Apache Airflow 配置选项提供,但您可以将其添加为自定义 A p ache Airflow 配置选项。

比方说,当您创建环境时,您选择了以下设置:

  1. mw1.small 环境类,用于控制默认情况下每个工作线程可以运行的最大并发任务数和容器的 vCPU。

  2. 最大工作线程计数中的 10 工作线程的默认设置。

  3. Apache Airflow 配置选项,适用于每个工作线程的 5,5 个任务的 celery.worker_autoscale

这意味着您可以在环境中运行 50 个并发任务。任何超过 50 的任务都将排队,并等待正在运行的任务完成。

运行更多并发任务。您可以使用以下配置修改环境以同时运行更多任务:

  1. 通过选择 mw1.medium(默认为 10 个并发任务)环境类,增加每个工作线程默认可以运行的最大并发任务数和各个容器的 vCPU。

  2. 添加 celery.worker_autoscale 作为 Apache Airflow 配置选项

  3. 增加最大工作线程计数。在此示例中,将最大工作线程从 10 增加到 20 会使环境可以运行的并发任务数增加一倍。

指定最低工作线程数。您还可以使用 Amazon Command Line Interface (Amazon CLI) 指定在您的环境中运行的 Apache Airflow W or ker 的最小和最大数量。例如:

aws mwaa update-environment --max-workers 10 --min-workers 10 --name YOUR_ENVIRONMENT_NAME

要了解更多信息,请参阅 Amazon CLI中的 update-environment 命令。

对停留在运行状态的任务进行故障排除

在极少数情况下,Apache Airflow 可能会认为还有任务仍在运行。要解决此问题,您需要清除 Apache Airflow UI 中的滞留任务。有关更多信息,请参阅 我看到我的任务卡顿或者没有完成 故障排除主题。

接下来做什么?