配置 Amazon MWAA Worker 节点自动扩缩 - Amazon Managed Workflows for Apache Airflow

配置 Amazon MWAA Worker 节点自动扩缩

自动扩缩机制会根据 Amazon Managed Workflows for Apache Airflow 环境中正在运行和排队的任务数量,自动增加 Apache Airflow Worker 节点数量,并在没有其他任务排队或正在执行时停止多余的 Worker 节点。本页介绍如何使用 Amazon MWAA 控制台指定在环境中运行的最大 Apache Airflow Worker 节点数,从而配置自动扩缩。

注意

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

如果 Worker 节点在缩减的同时接到新任务,Amazon MWAA 会保留 Fargate 资源并且不会移除该 Worker 节点。有关更多信息,请参阅 Amazon MWAA 自动扩缩的工作原理

Worker 节点扩缩的工作原理

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

随着工作负载减少以及 RunningTasksQueuedTasks 指标之和下降,Amazon MWAA 会请求 Fargate 缩减环境的 Worker 节点数。任何在缩减期间仍在完成工作的 Worker 节点继续受到保护,直到完成工作为止。根据具体的工作负载,Worker 节点缩减时任务可能会排队等候。

使用 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 环境类最大 Worker 节点数自动扩缩机制来配置这些设置。虽然在 Amazon MWAA 控制台中,core.dag_concurrency 并未作为一个 Apache Airflow 配置选项在下拉列表中出现,但您可以将其作为自定义 Apache 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 会使环境可以运行的并发任务数增加一倍。

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

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

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

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

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

接下来做什么?