一部のAirflowインストールでは、スケジューラーが完全にロードされていなくても、実行がスケジュールされているDAGまたはタスクが実行されません。同時に実行できるDAGまたはタスクの数を増やすにはどうすればよいですか?
同様に、インストールの負荷が高く、Airflowワーカーがキューに入れられたタスクをプルする速度を制限したい場合、何を調整できますか?
以下は、Airflow v1.10.2で使用可能な構成オプションの拡張リストです。一部はDAGごとまたはオペレーターごとに設定でき、指定されていない場合は、セットアップ全体のデフォルトにフォールバックする場合があります。
DAGごとに指定できるオプション:
concurrency
:これが設定されているDAGのすべてのアクティブな実行で同時に実行できるタスクインスタンスの数。デフォルトはcore.dag_concurrency
設定されていない場合max_active_runs
:このDAGのアクティブな実行の最大数。この制限に達すると、スケジューラは新しいアクティブなDAG実行を作成しません。デフォルトはcore.max_active_runs_per_dag
設定されていない場合例:
# Only allow one run of this DAG to be running at any given time
dag = DAG('my_dag_id', max_active_runs=1)
# Allow a maximum of 10 tasks to be running across a max of 2 active DAG runs
dag = DAG('example2', concurrency=10, max_active_runs=2)
オペレーターごとに指定できるオプション:
pool
:タスクを実行するプール。 Pools を使用して、タスクのサブセットのみの並列処理を制限できます。task_concurrency
:タスクレベルの同時実行の制限例:
t1 = BaseOperator(pool='my_custom_pool', task_concurrency=12)
Airflow設定全体で指定されているオプション:
core.parallelism
:Airflowインストール全体で実行されるタスクの最大数core.dag_concurrency
:DAGごとに実行できるタスクの最大数(複数の DAG runs にわたって)core.non_pooled_task_slot_count
:プールで実行されていないタスクに割り当てられたタスクスロットの数core.max_active_runs_per_dag
:DAGあたりのアクティブなDAGの最大数 runs scheduler.max_threads
:スケジューラプロセスがDAGのスケジュールに使用するスレッドの数celery.worker_concurrency
:CeleryExecutorを使用している場合にワーカーが実行するタスクインスタンスの数celery.sync_parallelism
:CeleryExecutorがタスクの状態を同期するために使用する必要があるプロセスの数core.executorが使用されている気流構成を確認します。 SequentialExecutorは順次実行されるため、タスクを並列実行するLocal ExecutorまたはClery Executorを選択できます。その後、@ hexacyanideで言及されている他のオプションを使用できます