[Airflow] Amazon MWAAのワーカーノードの同時実行数を調整する

こんにちは。サービス部の武田です。ワーカーノードあたりの同時実行数はworker_autoscaleを指定して制御できます。
2023.05.31

こんにちは。サービス部の武田です。

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,55,0というように、最小は最大と同じまたは0を指定することが多いようです。

まとめ

タスクの消費リソースが多く、ワーカーノードあたりの同時実行数をチューニングしたい場合は、celery.worker_autoscaleを指定しましょう。

参考URL