web-dev-qa-db-ja.com

気流の平行度

local Executorは、タスクのスケジューリング中に新しいプロセスを生成します。作成するプロセスの数に制限はありますか。変更する必要がありました。 airflow.cfgのスケジューラの「max_threads」と「parallelism」の違いは何ですか?

34
sidd607

parallelism:あまり説明的な名前ではありません。説明では、エアフローインストールの最大タスクインスタンスを設定しますが、これは少し曖昧です-エアフローワーカーを実行する2つのホストがある場合、2つのホストにエアフローがインストールされるので、コンテキストに基づいて2つのインストールが必要ですここでの「インストールごと」とは、「エアフロー状態データベースごと」を意味します。このmax_active_tasksという名前を付けます。

dag_concurrency:コメントに基づく名前にもかかわらず、これは実際にはタスクの同時実行性であり、ワーカーごとです。これにmax_active_tasks_for_workerという名前を付けます(per_workerはワーカーのグローバル設定であることを示唆しますが、異なる値を設定したワーカーをこれに設定できると思います)。

max_active_runs_per_dag:これはちょっと大丈夫ですが、一致するDAG kwargの単なるデフォルト値のように見えるため、 default_max_active_runs_for_dagsのような名前です。では、DAG kwargsに移りましょう。

concurrency:繰り返しますが、このような一般的な名前を持ち、他の場所で別の何かに並行性が使用されるという事実と相まって、これはかなり混乱します。これをmax_active_tasksと呼びます。

max_active_runs:これは私には申し分ありません。

ソース: https://issues.Apache.org/jira/browse/AIRFLOW-57


max_threadsは、ユーザーにCPUの使用をある程度制御します。スケジューラーの並列処理を指定します。

62
Roger

スケジューラのmax_threadsは、スケジューラを並列化するプロセスの数です。 max_threadsはCPUカウントを超えることはできません。 LocalExecutorのparallelismは、LocalExecutorが実行する同時タスクの数です。スケジューラとLocalExecutorは両方とも、並列処理のためにpythonのマルチプロセッシングライブラリを使用します。

13
Vineet Goel