Amazon MWAA ワーカーの自動スケーリングの設定 - Amazon Managed Workflows for Apache Airflow

Amazon MWAA ワーカーの自動スケーリングの設定

自動スケーリングメカニズムは、Amazon Managed Workflows for Apache Airflow 環境で実行中およびキューに入っているタスクに応じて Apache Airflow ワーカーの数を自動的に増やし、キューに入っているタスクや実行中のタスクがなくなると、余分なワーカーを廃棄します。このトピックでは、Amazon MWAA コンソールを使用して環境で実行される Apache Airflow ワーカーの最大数を指定することで、自動スケーリングを設定する方法について説明します。

注記

Amazon MWAA は Apache Airflow メトリクスを使用して、Celery Executor ワーカーをいつ追加する必要があるかを判断し、必要に応じて Fargate ワーカーの数を max-workers で指定された値まで増やします。追加のワーカーが作業を完了し、作業負荷が低下すると、Amazon MWAA はそれらを削除し、min-workers によって設定された値にスケールダウンします。

ワーカーがダウンスケーリング中に新しいタスクをピックアップした場合、Amazon MWAA は Fargate リソースを保持し、ワーカーを削除しません。詳細については、Amazon MWAA 自動スケーリングの仕組み を参照してください。

ワーカースケーリングの仕組み

Amazon MWAA は、(実行中のタスク + キューに入れられたタスク) / (ワーカーごとのタスク) = (必要なワーカー) という RunningTasksQueuedTasksメトリクス を使用します。必要なワーカー数が現在のワーカー数よりも多い場合、Amazon MWAA は Fargate ワーカーコンテナを、max-workers で指定された最大値までその値に追加します。

ワークロードが減少し、RunningTasksQueuedTasks メトリクスの合計が減少すると、Amazon MWAA は Fargate に環境のワーカーのスケールダウンを要求します。まだ作業を完了しているワーカーは、作業が完了するまでダウンスケーリング中も保護されます。ワークロードによっては、ワーカーがダウンスケールしている間にタスクをキューに入れることができます。

Amazon MWAA コンソールの使用

Amazon MWAA コンソールでは、環境上で同時に実行できるワーカーの最大数を選択できます。デフォルトでは、最大値を 25 まで指定できます。

ワーカー数を設定するには
  1. Amazon MWAA コンソールで、環境ページ を開きます。

  2. 環境を選択します。

  3. 編集 を選択します。

  4. 次へ を選択します。

  5. 環境クラス ペインで、最大ワーカー数 に値を入力します。

  6. 保存 を選択します。

注記

環境への変更が適用されるまで数分ほどかかります。

高パフォーマンスのユースケースの例

次のセクションでは、ある環境で高いパフォーマンスと並列処理を実現するために使用できる設定の種類について説明します。

オンプレミスの Apache エアフロー

通常、オンプレミスの Apache Airflow プラットフォームでは、airflow.cfg ファイル内でタスクの並列処理、自動スケーリング、同時実行の設定を行います。

  • core.parallelism – スケジューラーごとに同時に実行できるタスクインスタンスの最大数。

  • core.dag_concurrency – DAG (ワーカーではない) の最大同時実行数。

  • celery.worker_autoscale — 任意のワーカーで同時に実行できるタスクの最大数と最小数。

例えば、core.parallelism100 に設定され、core.dag_concurrency7 に設定されている場合、2 つの DAG がある場合でも、同時に合計 14 つのタスクしか実行できません。各DAGが同時に実行されるタスク数が core.dag_concurrency で 7 に設定されている場合、全体の並列度が core.parallelism100 に設定されていても、同時に実行されるタスクは最大で 7 つに制限されます。

注記

core.dag_concurrency は、Apache Airflow v3 では使用できません。

Amazon MWAA 環境で

Amazon MWAA 環境では、これらの設定を Amazon MWAA コンソールで直接 Amazon MWAA での Apache Airflow 設定オプションの使用Amazon MWAA 環境クラスの構成、および [最大ワーカーカウント] 自動スケーリングメカニズムを使用して構成できます。core.dag_concurrency が Amazon MWAA コンソールの Apache Airflow 設定オプション のドロップダウンリストにはない場合でも、カスタム Apache Airflow 構成オプション として追加できます。

環境を作成したときに、次の設定を選択したとします。

  1. mw1.small 環境クラス は、各ワーカーがデフォルトで実行できる同時タスクの最大数とコンテナーの vCPU を制御します。

  2. 最大ワーカー数 のデフォルト設定は 10 のワーカーです。

  3. celery.worker_autoscale のワーカーあたりの5,5 のタスクのための Apache Airflow 設定オプション

つまり、環境内で 50 件のタスクを同時に実行できます。50 個を超えるタスクはキューに入れられ、実行中のタスクが完了するまで待機します。

同時実行タスクをさらに実行します。以下の設定を使用して、より多くのタスクを同時に実行するように環境を変更できます。

  1. 環境クラス mw1.medium (デフォルトでは 10 個の同時タスク) を選択して、各ワーカーがデフォルトで実行できる同時タスクの最大数とコンテナの vCPU を増やします。

  2. celery.worker_autoscaleApache 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 で孤立したタスクをクリアする必要があります。詳細については、Amazon Managed Workflows for Apache Airflow のトラブルシューティング トラブルシューティングトピックを参照してください。

次のステップ