[Airflow] Amazon MWAAのワーカーノードの同時実行数を調整する
こんにちは。サービス部の武田です。
Apache Airflowを利用する上で同時実行性能の理解は重要です。以前こんなエントリを書きました。
基本的にはクラスター全体の実行性能を制御できます。
今回、「あるワーカーノードが実行できるタスクを制限したい」という要求が出てきました。背景としては、実行するタスクの消費リソースが多く、同時実行数を抑えたいというものです。上記のエントリで紹介している各パラメーターも、同時実行数を制御するものですが、今回のケースでは適していません。
今回の目的を達成できるパラメーターはcelery.worker_autoscale
です。これはまさしく、「ワーカーノードのタスク同時実行数」を指定するためのものです。
ちなみに、Amazon MWAAの各環境クラスのデフォルト値は次のようになっています。
環境クラス | CPU | メモリ | worker_autoscale |
---|---|---|---|
mw1.small | 1 | 2 | 5,0 |
mw1.medium | 2 | 4 | 10,0 |
mw1.large | 4 | 8 | 20,0 |
基本的にスペックが倍になり、最大同時実行数も倍々になっていきます。celery.worker_autoscale
を指定することで、「mw1.mediumを使用し、最大同時実行数は5に抑える」といったことが可能になります。指定はmax_concurrency,min_concurrency
と、最大最小を指定します。5,5
や5,0
というように、最小は最大と同じまたは0
を指定することが多いようです。
まとめ
タスクの消費リソースが多く、ワーカーノードあたりの同時実行数をチューニングしたい場合は、celery.worker_autoscale
を指定しましょう。