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 Auto Scaling の仕組み」を参照してください。

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

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

ワークロードが減少し、 RunningTasksおよび QueuedTasksメトリクスの合計が減少すると、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つに制限されます。

Amazon MWAA 環境で

Amazon MWAA 環境では、、Amazon MWAA での Apache Airflow 構成オプションの使用、および最大ワーカー数の自動スケーリングメカニズムを使用してAmazon MWAA 環境クラスの構成、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 で孤立したタスクをクリアする必要があります。詳細については、トラブルシューティングトピック「タスクが行き詰まっいるか、完了していません。」 を参照してください。

次のステップ