Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Cloud Composer 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 décrit les 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 de 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 type de problème :
Limitez le nombre de fichiers dans les dossiers
/dags
et/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 pour que l'opération de synchronisation soit effectuée plus rapidement.
Si le nombre de DAG est très élevé, divisez-les en lots, compressez-les dans des archives zip et déployez ces archives 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 Dépannage des DAG pour éviter les problèmes de planification et d'exécution des DAG générés de manière programmatique.
Antimotifs ayant un impact sur la synchronisation des DAG et des plug-ins avec les programmeurs, les nœuds de calcul et les serveurs Web
Cloud Composer synchronise le contenu des dossiers /dags
et /plugins
avec les planificateurs 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
/dags
est synchronisé avec les programmeurs et les nœuds de calcul.Ce dossier n'est pas synchronisé avec le serveur Web.
Le dossier
/plugins
est 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
/dags
et/plugins
. Cela se produit généralement si vous utilisez l'indicateur--gzip-local-all
dans une commandegcloud storage cp
pour 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 planificateurs 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 portant le même nom que le fichier Python du DAG.
L'un des objets des dossiers
/dags
ou/plugins
contient un symbole/
à la fin de son nom. 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
/dags
et/plugins
.Parfois, les DAG et les plug-ins que vous implémentez sont fournis avec des fichiers supplémentaires, tels que des fichiers stockant les tests de ces composants. Ces fichiers sont synchronisés avec les nœuds de calcul et les planificateurs, et ont un impact sur le temps nécessaire pour les copier sur les planificateurs, les nœuds de calcul et les serveurs Web.
Solution : Ne stockez aucun fichier supplémentaire et inutile dans les dossiers
/dags
et/plugins
.
Les nœuds de calcul et les planificateurs 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 à un bucket un dossier et un objet portant le même nom. 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 file
sera générée. - Si le dossier a été synchronisé en premier, l'objet n'est pas synchronisé et l'erreur
Is a directory
est générée.
Exemple :
Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'
Ces deux erreurs peuvent entraîner l'échec des 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 non plus synchronisés.
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.
Étapes suivantes
- Résoudre les problèmes liés au processeur DAG
- Résoudre les problèmes liés à Airflow Scheduler
- Découvrez comment résoudre les problèmes liés aux DAG.