Résoudre les problèmes de synchronisation de fichiers

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 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 sur 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.

Antimodes 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][storage-transcoding] dans les dossiers /dags et /plugins. Cela se produit généralement si vous utilisez l'indicateur --gzip-local-all dans une commande gcloud 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 d'être synchronisé.

    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 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.

L'erreur "Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'" est générée par les programmeurs et les nœuds de calcul.

Ce problème se produit, car les objets peuvent avoir un espace de noms qui se chevauche dans Cloud Storage, tandis que les planificateurs et les workers utilisent des systèmes de fichiers Linux conventionnels. Par exemple, il est possible d'ajouter à la fois un dossier et un objet portant le même nom au bucket d'un environnement. Cette erreur est générée lorsque le bucket est synchronisé avec les planificateurs et les nœuds de calcul de l'environnement, ce qui peut entraîner l'échec des tâches.

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 fichier) et /dags/misc/example_file.txt (un autre fichier) se trouvent dans un bucket, une erreur est générée par le planificateur.

Étapes suivantes