View a markdown version of this page

Réglage des performances pour Apache Airflow sur Amazon MWAA - Amazon Managed Workflows for Apache Airflow

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réglage des performances pour Apache Airflow sur Amazon MWAA

Cette rubrique explique comment régler les performances d'un environnement Amazon Managed Workflows pour Apache Airflow à l'aide Utilisation des options de configuration d'Apache Airflow sur Amazon MWAA de.

Ajout d'une option de configuration Apache Airflow

Suivez la procédure suivante pour ajouter une option de configuration Airflow à votre environnement.

  1. Ouvrez la page Environnements sur la console Amazon MWAA.

  2. Choisissez un environnement.

  3. Choisissez Modifier.

  4. Choisissez Suivant.

  5. Choisissez Ajouter une configuration personnalisée dans le volet des options de configuration d'Airflow.

  6. Choisissez une configuration dans la liste déroulante et entrez une valeur, ou entrez une configuration personnalisée et entrez une valeur.

  7. Choisissez Ajouter une configuration personnalisée pour chaque configuration que vous souhaitez ajouter.

  8. Choisissez Enregistrer.

Pour en savoir plus, consultezUtilisation des options de configuration d'Apache Airflow sur Amazon MWAA.

Planificateur Apache Airflow

Le planificateur Apache Airflow est un composant essentiel d'Apache Airflow. Un problème lié au planificateur peut empêcher l'analyse des DAG et la planification des tâches. Pour plus d'informations sur le réglage du planificateur Apache Airflow, consultez les performances de Fine-tuning votre planificateur sur le site Web de documentation d'Apache Airflow.

Parameters

Cette section décrit les options de configuration disponibles pour le planificateur Apache Airflow (Apache Airflow v2 et versions ultérieures) et leurs cas d'utilisation.

Apache Airflow v3
Configuration Cas d’utilisation

celery.sync_parallelism

Le nombre de processus utilisés par Celery Executor pour synchroniser l'état des tâches.

Par défaut : 1

Utilisez cette option pour éviter les conflits de files d'attente en limitant les processus utilisés par Celery Executor. Par défaut, une valeur est définie pour 1 éviter les erreurs lors de la remise des journaux des tâches à CloudWatch Logs. Si vous définissez la valeur sur0, vous utilisez le nombre maximum de processus, mais cela peut provoquer des erreurs lors de la livraison des journaux de tâches.

scheduler.scheduler_idle_sleep_time

Le nombre de secondes à attendre entre deux « boucles » consécutives du planificateur s'il n'y avait rien à faire dans la boucle.

Par défaut : 1

Utilisez cette option pour libérer l'utilisation du processeur sur le planificateur en augmentant la durée de veille du planificateur une fois qu'il a terminé une « boucle ». L'augmentation de cette valeur réduit les threads du planificateur disponibles dag_processor.parsing_processes pour Apache Airflow v2 et Apache Airflow v3. Cela peut réduire la capacité des planificateurs à analyser les DAG et augmenter le temps nécessaire au remplissage des DAG sur le serveur Web.

scheduler.max_dagruns_to_create_per_loop

Le nombre maximum de DAG à créer DagRuns pour chaque « boucle » du planificateur.

Par défaut : 10

Utilisez cette option pour libérer des ressources pour la planification des tâches en diminuant le nombre maximum DagRuns de « boucles » du planificateur.

dag_processor.parsing_processes

Le nombre de threads que le planificateur peut exécuter en parallèle pour planifier des DAG.

Par défaut : Utiliser (2 * number of vCPUs) - 1

Utilisez cette option pour libérer des ressources en diminuant le nombre de processus que le planificateur exécute en parallèle pour analyser les DAG. Nous vous recommandons de maintenir ce chiffre à un niveau bas si l'analyse du DAG a un impact sur la planification des tâches. Vous devez spécifier une valeur inférieure au nombre de processeurs virtuels de votre environnement. Pour en savoir plus, consultez la section Limites.

Apache Airflow v2
Configuration Cas d’utilisation

celery.sync_parallelism

Le nombre de processus utilisés par Celery Executor pour synchroniser l'état des tâches.

Par défaut : 1

Utilisez cette option pour éviter les conflits de files d'attente en limitant les processus utilisés par Celery Executor. Par défaut, une valeur est définie pour 1 éviter les erreurs lors de la remise des journaux des tâches à CloudWatch Logs. Si vous définissez la valeur sur0, vous utilisez le nombre maximum de processus, mais cela peut provoquer des erreurs lors de la livraison des journaux de tâches.

scheduler.scheduler_idle_sleep_time

Le nombre de secondes à attendre entre deux « boucles » consécutives du planificateur s'il n'y avait rien à faire dans la boucle.

Par défaut : 1

Utilisez cette option pour libérer l'utilisation du processeur sur le planificateur en augmentant la durée de veille du planificateur une fois qu'il a terminé une « boucle ». L'augmentation de cette valeur réduit les threads du planificateur disponibles dag_processor.parsing_processes pour Apache Airflow v2 et Apache Airflow v3. Cela peut réduire la capacité des planificateurs à analyser les DAG et augmenter le temps nécessaire au remplissage des DAG sur le serveur Web.

scheduler.max_dagruns_to_create_per_loop

Le nombre maximum de DAG à créer DagRuns pour chaque « boucle » du planificateur.

Par défaut : 10

Utilisez cette option pour libérer des ressources pour la planification des tâches en diminuant le nombre maximum DagRuns de « boucles » du planificateur.

scheduler.parsing_processes

Le nombre de threads que le planificateur peut exécuter en parallèle pour planifier des DAG.

Par défaut : Utiliser (2 * number of vCPUs) - 1

Utilisez cette option pour libérer des ressources en diminuant le nombre de processus que le planificateur exécute en parallèle pour analyser les DAG. Nous vous recommandons de maintenir ce chiffre à un niveau bas si l'analyse du DAG a un impact sur la planification des tâches. Vous devez spécifier une valeur inférieure au nombre de processeurs virtuels de votre environnement. Pour en savoir plus, consultez la section Limites.

Restrictions

Cette section décrit les limites à prendre en compte lors de l'ajustement des paramètres par défaut du planificateur.

scheduler.parsing_processes, scheduler.max_threads (v2 uniquement)

Deux threads sont autorisés par processeur virtuel pour une classe d'environnement. Au moins un thread doit être réservé au planificateur pour une classe d'environnement. Si vous constatez un retard dans la planification des tâches, vous devrez peut-être augmenter votre classe d'environnement. Par exemple, un environnement de grande taille possède une instance de conteneur Fargate à 4 processeurs virtuels pour son planificateur. Cela signifie qu'un maximum de 7 threads sont disponibles pour être utilisés pour d'autres processus. C'est-à-dire que deux threads ont multiplié quatre vCPU, moins un pour le planificateur lui-même. La valeur que vous spécifiez dans scheduler.max_threads (v2 uniquement) ne scheduler.parsing_processes doit pas dépasser le nombre de threads disponibles pour une classe d'environnement, comme indiqué :

  • mw1.small — Ne doit pas dépasser le nombre de 1 threads pour les autres processus. Le thread restant est réservé au planificateur.

  • mw1.medium — Ne doit pas dépasser le nombre de 3 threads pour les autres processus. Le thread restant est réservé au planificateur.

  • mw1.large — Ne doit pas dépasser le nombre de 7 threads pour les autres processus. Le thread restant est réservé au planificateur.

Dossiers DAG

Le planificateur Apache Airflow analyse en permanence le dossier DAGs de votre environnement. Tous plugins.zip les fichiers contenus ou les fichiers Python (.py) contenant des instructions d'importation « airflow ». Tous les objets Python DAG qui en résultent sont ensuite placés dans un fichier DagBag pour que ce fichier soit traité par le planificateur afin de déterminer quelles tâches doivent être planifiées, le cas échéant. L'analyse des fichiers DAG se produit indépendamment du fait que les fichiers contiennent des objets DAG viables ou non.

Parameters

Cette section décrit les options de configuration disponibles pour le dossier DAGS (Apache Airflow v2 et versions ultérieures) et leurs cas d'utilisation.

Apache Airflow v3
Configuration Cas d’utilisation

dag_processor.refresh_interval

Le nombre de secondes pendant lequel le dossier DAGS doit être scanné pour détecter de nouveaux fichiers.

Par défaut : 300 secondes

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes d'analyse du dossier DAGs. Nous vous recommandons d'augmenter cette valeur si les temps d'analyse sont longstotal_parse_time metrics, ce qui peut être dû à un grand nombre de fichiers dans votre dossier DAG.

dag_processor.min_file_process_interval

Le nombre de secondes après lequel le planificateur analyse un DAG et les mises à jour du DAG sont reflétées.

Par défaut : 30 secondes

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes que le planificateur attend avant d'analyser un DAG. Par exemple, si vous spécifiez une valeur de30, le fichier DAG est analysé toutes les 30 secondes. Nous vous recommandons de maintenir ce chiffre à un niveau élevé afin de réduire l'utilisation du processeur dans votre environnement.

Apache Airflow v2
Configuration Cas d’utilisation

scheduler.dag_dir_list_interval

Le nombre de secondes pendant lequel le dossier DAGS doit être scanné pour détecter de nouveaux fichiers.

Par défaut : 300 secondes

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes d'analyse du dossier DAGs. Nous vous recommandons d'augmenter cette valeur si les temps d'analyse sont longstotal_parse_time metrics, ce qui peut être dû à un grand nombre de fichiers dans votre dossier DAG.

scheduler.min_file_process_interval

Le nombre de secondes après lequel le planificateur analyse un DAG et les mises à jour du DAG sont reflétées.

Par défaut : 30 secondes

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes que le planificateur attend avant d'analyser un DAG. Par exemple, si vous spécifiez une valeur de30, le fichier DAG est analysé toutes les 30 secondes. Nous vous recommandons de maintenir ce chiffre à un niveau élevé afin de réduire l'utilisation du processeur dans votre environnement.

Fichiers DAG

Dans le cadre de la boucle du planificateur Apache Airflow, les fichiers DAG individuels sont analysés pour extraire les objets DAG Python. Dans Apache Airflow v2 et versions ultérieures, le planificateur analyse un maximum de processus d'analyse en même temps. Le nombre de secondes spécifié dans scheduler.min_file_process_interval (v2) ou dag_processor.min_file_process_interval (v3) doit s'écouler avant que le même fichier ne soit à nouveau analysé.

Parameters

Cette section décrit les options de configuration disponibles pour les fichiers DAG Apache Airflow (Apache Airflow v2 et versions ultérieures) et leurs cas d'utilisation.

Apache Airflow v3
Configuration Cas d’utilisation

dag_processor.dag_file_processor_timeout

Nombre de secondes avant l'expiration du DagFileProcessor traitement d'un fichier DAG.

Par défaut : 50 secondes

Utilisez cette option pour augmenter le temps nécessaire avant l'expiration des DagFileProcessor délais. Nous vous recommandons d'augmenter cette valeur si des délais d'attente apparaissent dans vos journaux de traitement DAG et qu'aucun DAG viable n'est chargé.

core.dagbag_import_timeout

Le délai d'importation d'un fichier Python (en secondes) expire.

Par défaut : 30 secondes

Utilisez cette option pour augmenter le temps nécessaire avant l'expiration du planificateur lors de l'importation d'un fichier Python pour extraire les objets DAG. Cette option est traitée dans le cadre de la « boucle » du planificateur et doit contenir une valeur inférieure à la valeur spécifiée dansdag_processor.dag_file_processor_timeout.

core.min_serialized_dag_update_interval

Le nombre minimum de secondes après lequel les DAG sérialisés de la base de données sont mis à jour.

Par défaut : 30

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes après lequel les DAG sérialisés de la base de données sont mis à jour. Nous vous recommandons d'augmenter cette valeur si vous avez un grand nombre de DAG ou des DAG complexes. L'augmentation de cette valeur réduit la charge sur le planificateur et la base de données lors de la sérialisation des DAG.

core.min_serialized_dag_fetch_interval

Le nombre de secondes pendant lesquelles un DAG sérialisé est récupéré à partir de la base de données alors qu'il est déjà chargé dans le. DagBag

Par défaut : 10

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes pendant lesquelles un DAG sérialisé est récupéré à nouveau. La valeur doit être supérieure à la valeur spécifiée dans core.min_serialized_dag_update_interval pour réduire les taux d' « écriture » de la base de données. L'augmentation de cette valeur réduit la charge sur le serveur Web et la base de données lors de la sérialisation des DAG.

Apache Airflow v2
Configuration Cas d’utilisation

core.dag_file_processor_timeout

Nombre de secondes avant l'expiration du DagFileProcessor traitement d'un fichier DAG.

Par défaut : 50 secondes

Utilisez cette option pour augmenter le temps nécessaire avant l'expiration des DagFileProcessor délais. Nous vous recommandons d'augmenter cette valeur si des délais d'attente apparaissent dans vos journaux de traitement DAG et qu'aucun DAG viable n'est chargé.

core.dagbag_import_timeout

Le délai d'importation d'un fichier Python (en secondes) expire.

Par défaut : 30 secondes

Utilisez cette option pour augmenter le temps nécessaire avant l'expiration du planificateur lors de l'importation d'un fichier Python pour extraire les objets DAG. Cette option est traitée dans le cadre de la « boucle » du planificateur et doit contenir une valeur inférieure à la valeur spécifiée danscore.dag_file_processor_timeout.

core.min_serialized_dag_update_interval

Le nombre minimum de secondes après lequel les DAG sérialisés de la base de données sont mis à jour.

Par défaut : 30

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes après lequel les DAG sérialisés de la base de données sont mis à jour. Nous vous recommandons d'augmenter cette valeur si vous avez un grand nombre de DAG ou des DAG complexes. L'augmentation de cette valeur réduit la charge sur le planificateur et la base de données lors de la sérialisation des DAG.

core.min_serialized_dag_fetch_interval

Le nombre de secondes pendant lesquelles un DAG sérialisé est récupéré à partir de la base de données alors qu'il est déjà chargé dans le. DagBag

Par défaut : 10

Utilisez cette option pour libérer des ressources en augmentant le nombre de secondes pendant lesquelles un DAG sérialisé est récupéré à nouveau. La valeur doit être supérieure à la valeur spécifiée dans core.min_serialized_dag_update_interval pour réduire les taux d' « écriture » de la base de données. L'augmentation de cette valeur réduit la charge sur le serveur Web et la base de données lors de la sérialisation des DAG.

Tâches

Le planificateur et les travailleurs d'Apache Airflow sont tous deux impliqués dans les tâches de mise en file d'attente et de retrait des files d'attente. Le planificateur fait passer les tâches analysées prêtes à être planifiées de l'état Aucune à l'état Planifié. L'exécuteur, qui s'exécute également sur le conteneur du planificateur de Fargate, met ces tâches en file d'attente et définit leur statut sur Queued. Lorsque les travailleurs ont atteint leur capacité, il retire la tâche de la file d'attente et définit le statut sur En cours d'exécution, qui change ensuite son statut en Succès ou Échec selon que la tâche réussit ou échoue.

Parameters

Cette section décrit les options de configuration disponibles pour les tâches Apache Airflow et leurs cas d'utilisation.

Les options de configuration par défaut qu'Amazon MWAA annule sont indiquées. red

Apache Airflow v3
Configuration Cas d’utilisation

parallélisme de base

Nombre maximum d'instances de tâches que chaque planificateur peut surveiller et exécuter simultanément.

Par défaut : défini dynamiquement en fonction de(maxWorkers * maxCeleryWorkers) / schedulers * 1.5.

Utilisez cette option pour contrôler le plafond global strict du nombre total de tâches en cours d'exécution. Par exemple, vous pouvez augmenter cette valeur pour protéger votre base de métadonnées contre un trop grand nombre de connexions simultanées ou pour plafonner les coûts. La valeur par défaut est élevée, de sorte que d'autres contrôles (worker_autoscale, emplacements de poolmax_active_tasks_per_dag) constituent les limites de simultanéité effectives.

core.max_active_tasks_per_day

Le nombre maximum d'instances de tâches autorisées à s'exécuter simultanément lors de chaque exécution DAG.

Par défaut : 16

Utilisez cette option pour libérer des ressources en augmentant le nombre d'instances de tâches autorisées à s'exécuter simultanément. Par exemple, si vous avez 100 DAG avec 10 tâches parallèles et que vous souhaitez que tous les DAG s'exécutent simultanément, calculez le parallélisme maximal. Multipliez le nombre de travailleurs disponibles par la densité de tâches encelery.worker_concurrency, puis divisez-le par le nombre de DAG.

core.execute_tasks_new_python_interpreter

Détermine si Apache Airflow exécute les tâches en bifurquant le processus parent ou en créant un nouveau processus Python.

Par défaut : True

Lorsqu'il est défini surTrue, Apache Airflow reconnaît les modifications que vous apportez à vos plugins comme un nouveau processus Python créé pour exécuter des tâches.

celery.worker_concurrency

Amazon MWAA remplace l'installation de base d'Airflow pour cette option afin de dimensionner le personnel dans le cadre de son composant de dimensionnement automatique.

Par défaut : Non applicable

Any value specified for this option is ignored.

celery.worker_autoscale

La simultanéité des tâches pour les travailleurs.

Valeurs par défaut :

  • mw1.micro - 3,0

  • mw1.small - 5,0

  • mw1.medium - 10,0

  • mw1.large - 20,0

  • mw1.xlarge - 40,0

  • mw1,2xlarge - 80,0

Utilisez cette option pour libérer des ressources en réduisant la maximum simultanéité des minimum tâches entre les collaborateurs. Les collaborateurs acceptent jusqu'aux tâches maximum simultanées configurées, que les ressources soient suffisantes pour le faire ou non. Si les tâches sont planifiées sans ressources suffisantes, elles échouent immédiatement. Nous vous recommandons de modifier cette valeur pour les tâches gourmandes en ressources en réduisant les valeurs à des valeurs inférieures aux valeurs par défaut afin de permettre une plus grande capacité par tâche.

Apache Airflow v2
Configuration Cas d’utilisation

parallélisme de base

Nombre maximum d'instances de tâches que chaque planificateur peut surveiller et exécuter simultanément.

Par défaut : défini dynamiquement en fonction de(maxWorkers * maxCeleryWorkers) / schedulers * 1.5.

Utilisez cette option pour contrôler le plafond global strict du nombre total de tâches en cours d'exécution. Par exemple, vous pouvez augmenter cette valeur pour protéger votre base de métadonnées contre un trop grand nombre de connexions simultanées ou pour plafonner les coûts. La valeur par défaut est élevée, de sorte que d'autres contrôles (worker_autoscale, emplacements de poolmax_active_tasks_per_dag) constituent les limites de simultanéité effectives.

core.dag_concurrency

Le nombre d'instances de tâches autorisées à s'exécuter simultanément pour chaque DAG.

Par défaut : 16

Cette configuration est obsolète depuis Airflow 2.2.0 et a été remplacée par. core.max_active_tasks_per_dag

Utilisez cette option pour libérer des ressources en augmentant le nombre d'instances de tâches autorisées à s'exécuter simultanément. Par exemple, si vous avez 100 DAG avec 10 tâches parallèles et que vous souhaitez que tous les DAG s'exécutent simultanément, calculez le parallélisme maximal. Multipliez le nombre de travailleurs disponibles par la densité de tâches encelery.worker_concurrency, puis divisez-le par le nombre de DAG.

core.execute_tasks_new_python_interpreter

Détermine si Apache Airflow exécute les tâches en bifurquant le processus parent ou en créant un nouveau processus Python.

Par défaut : True

Lorsqu'il est défini surTrue, Apache Airflow reconnaît les modifications que vous apportez à vos plugins comme un nouveau processus Python créé pour exécuter des tâches.

celery.worker_concurrency

Amazon MWAA remplace l'installation de base d'Airflow pour cette option afin de dimensionner le personnel dans le cadre de son composant de dimensionnement automatique.

Par défaut : Non applicable

Any value specified for this option is ignored.

celery.worker_autoscale

La simultanéité des tâches pour les travailleurs.

Valeurs par défaut :

  • mw1.micro - 3,0

  • mw1.small - 5,0

  • mw1.medium - 10,0

  • mw1.large - 20,0

  • mw1.xlarge - 40,0

  • mw1,2xlarge - 80,0

Utilisez cette option pour libérer des ressources en réduisant la maximum simultanéité des minimum tâches entre les collaborateurs. Les collaborateurs acceptent jusqu'aux tâches maximum simultanées configurées, que les ressources soient suffisantes pour le faire ou non. Si les tâches sont planifiées sans ressources suffisantes, elles échouent immédiatement. Nous vous recommandons de modifier cette valeur pour les tâches gourmandes en ressources en réduisant les valeurs à des valeurs inférieures aux valeurs par défaut afin de permettre une plus grande capacité par tâche.