Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération héritée)
Airflow géré synchronise des dossiers spécifiques du bucket de votre environnement avec les composants Airflow qui s'exécutent dans votre environnement. Pour en savoir plus, consultez Données stockées dans Cloud Storage. Cette page traite des problèmes qui peuvent perturber le processus de synchronisation et explique comment les résoudre.
Problèmes courants
Les sections suivantes décrivent les symptômes et les correctifs potentiels liés à certains problèmes courants de synchronisation de fichiers.
Gérer un grand nombre de DAG et de plug-ins dans les dossiers dags et plugins
Le contenu des dossiers /dags et /plugins est synchronisé depuis le bucket de votre environnement vers les systèmes de fichiers locaux des nœuds de calcul et des programmeurs Airflow.
Plus ces dossiers contiennent de données, plus la synchronisation prend du temps. Pour résoudre ce problème :
Limitez le nombre de fichiers dans les dossiers
/dagset/plugins. Ne stockez que le minimum de fichiers requis.Augmentez l'espace disque disponible pour les programmeurs et les nœuds de calcul Airflow.
Augmentez le processeur et la mémoire des programmeurs et des nœuds de calcul Airflow afin d'accélérer l'opération de synchronisation.
Si le nombre de DAG est très élevé, divisez-les en lots, compressez-les dans des archives ZIP et déployez-les dans le dossier
/dags. Cette approche accélère le processus de synchronisation des DAG. Les composants Airflow extraient les archives ZIP avant de traiter les DAG.La génération de DAG de manière programmatique peut également être une méthode permettant de limiter le nombre de fichiers DAG stockés dans le dossier
/dags. Consultez la section DAG programmatiques de la page Résoudre les problèmes liés aux DAG pour éviter les problèmes de planification et d'exécution des DAG générés de manière programmatique.
Anti-modèles ayant un impact sur la synchronisation des DAG et des plug-ins avec les programmeurs, les nœuds de calcul et les serveurs Web
Airflow géré synchronise le contenu des dossiers /dags et /plugins avec les programmeurs et les nœuds de calcul. Certains objets des dossiers /dags et /plugins peuvent empêcher cette synchronisation de fonctionner correctement ou la ralentir.
Le dossier
/dagsest synchronisé avec les programmeurs et les nœuds de calcul.Ce dossier n'est pas synchronisé avec le serveur Web.
Le dossier
/pluginsest synchronisé avec les programmeurs, les nœuds de calcul et les serveurs Web.
Vous pouvez rencontrer les problèmes suivants :
Vous avez importé des fichiers compressés au format gzip qui utilisent le transcodage de compression dans les dossiers
/dagset/plugins. Cela se produit généralement si vous utilisez l'option--gzip-local-alldans une commandegcloud storage cppour importer des données dans le bucket.Solution : Supprimez l'objet qui a utilisé le transcodage de compression, puis importez-le de nouveau dans le bucket.
L'un des objets est nommé
.. Un tel objet n'est pas synchronisé avec les programmeurs et les nœuds de calcul, et il peut cesser de se synchroniser complètement.Solution : Renommez l'objet.
Un dossier et un fichier Python DAG portent le même nom, par exemple
a.py. Dans ce cas, le fichier DAG n'est pas correctement synchronisé avec les composants Airflow.Solution : Supprimez le dossier qui porte le même nom que le fichier Python DAG.
L'un des objets des dossiers
/dagsou/pluginscontient un symbole/à la fin du nom de l'objet. Ces objets peuvent interférer avec le processus de synchronisation, car le symbole/signifie qu'un objet est un dossier et non un fichier.Solution : Supprimez le symbole
/du nom de l'objet problématique.Ne stockez pas de fichiers inutiles dans les dossiers
/dagset/plugins.Parfois, les DAG et les plug-ins que vous implémentez sont fournis avec des fichiers supplémentaires, tels que des fichiers qui stockent des tests pour ces composants. Ces fichiers sont synchronisés avec les nœuds de calcul et les programmeurs, et ont un impact sur le temps nécessaire pour les copier sur les programmeurs, les nœuds de calcul et les serveurs Web.
Solution : Ne stockez aucun fichier supplémentaire et inutile dans les dossiers
/dagset/plugins.
Les nœuds de calcul et les programmeurs génèrent des erreurs "Est un répertoire" ou "Est un fichier"
Ce problème se produit, car les objets peuvent avoir un espace de noms qui se chevauche dans Cloud Storage, tandis que les composants Airflow de votre environnement utilisent des systèmes de fichiers Linux conventionnels. Dans Cloud Storage, il est possible d'ajouter à la fois un dossier et un objet portant le même nom à un bucket. Lorsque le bucket est synchronisé avec les composants Airflow de l'environnement, une erreur est générée :
- Si l'objet a été synchronisé en premier, le contenu du dossier ne sera pas synchronisé et l'erreur
Is a filesera générée. - Si le dossier a été synchronisé en premier, l'objet ne sera pas synchronisé et l'erreur
Is a directorysera générée.
Exemple :
Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'
Ces deux erreurs peuvent entraîner des échecs de tâches en raison de fichiers manquants. Dans certains cas, le processus de synchronisation peut être interrompu et d'autres objets du bucket de l'environnement ne seront pas synchronisés non plus.
Solution:
Pour résoudre ce problème, assurez-vous qu'il n'y a pas d'espaces de noms qui se chevauchent dans le bucket de l'environnement.
Par exemple, si /dags/misc (un objet) et /dags/misc/example_file.txt
(un autre objet) se trouvent dans un bucket, renommez l'objet misc ou le dossier
dans lequel se trouve example_file.txt, afin qu'il n'y ait pas de chevauchement.
Étape suivante
- Résoudre les problèmes liés au processeur DAG
- Résoudre les problèmes liés au programmeur Airflow
- Résoudre les problèmes liés aux DAG