web-dev-qa-db-fra.com

Exécuter des tâches parallèles dans Apache Airflow

Je peux configurer airflow.cfg fichier pour exécuter les tâches l'une après l'autre.

Ce que je veux faire, c'est exécuter des tâches en parallèle, par ex. 2 à la fois et atteindre la fin de la liste.

Comment puis-je configurer cela?

7
Mit

L'exécution de tâches dans Airflow en parallèle dépend de l'exécuteur que vous utilisez, par exemple, SequentialExecutor, LocalExecutor, CeleryExecutor, etc.

Pour une configuration simple, vous pouvez réaliser le parallélisme en définissant simplement votre exécuteur sur LocalExecutor dans votre airflow.cfg:

[core]
executor = LocalExecutor

Référence: https://github.com/Apache/incubator-airflow/blob/29ae02a070132543ac92706d74d9a5dc676053d9/airflow/config_templates/default_airflow.cfg#L76

Cela entraînera un processus distinct pour chaque tâche.

(Bien sûr, vous aurez besoin d'un DAG avec au moins 2 tâches qui peuvent s'exécuter en parallèle pour le voir fonctionner.)

Alternativement, avec CeleryExecutor, vous pouvez faire tourner n'importe quel nombre de travailleurs en exécutant simplement (autant de fois que vous le souhaitez):

$ airflow worker

Les tâches seront placées dans une file d'attente de céleri et chaque employé de céleri se retirera de la file d'attente.

La section Mise à l'échelle avec du céleri dans les documents de configuration d'Airflow peut être utile.

https://airflow.Apache.org/howto/executor/use-celery.html

Pour tout exécuteur, vous souhaiterez peut-être modifier les paramètres de base qui contrôlent le parallélisme une fois que vous l'avez exécuté.

Ils se trouvent tous sous [core]. Ce sont les valeurs par défaut:

# The amount of parallelism as a setting to the executor. This defines
# the max number of task instances that should run simultaneously
# on this airflow installation
parallelism = 32

# The number of task instances allowed to run concurrently by the scheduler
dag_concurrency = 16

# Are DAGs paused by default at creation
dags_are_paused_at_creation = True

# When not using pools, tasks are run in the "default pool",
# whose size is guided by this config element
non_pooled_task_slot_count = 128

# The maximum number of active DAG runs per DAG
max_active_runs_per_dag = 16

Référence: https://github.com/Apache/incubator-airflow/blob/29ae02a070132543ac92706d74d9a5dc676053d9/airflow/config_templates/default_airflow.cfg#L99

10
Taylor Edmiston