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. [Next (次へ)] を選択します。

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

  6. [Save] を選択します。

注記

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

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

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

オンプレミスの 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 つに制限されます。

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 () を使用して、環境で実行される Apache Airflow ワーカーの最小数と最大数を指定することもできますAWS CLI。以下に例を示します。

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 のトラブルシューティング を参照してください。

次のステップ