Risoluzione dei problemi di sincronizzazione dei file

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cloud Composer sincronizza cartelle specifiche nel bucket dell'ambiente con i componenti Airflow eseguiti nell'ambiente. Per saperne di più, consulta Dati archiviati in Cloud Storage. Questa pagina si riferisce ai problemi che potrebbero interrompere il processo di sincronizzazione e a come risolverli.

Problemi comuni

Le sezioni seguenti descrivono i sintomi e le potenziali soluzioni per alcuni problemi comuni di sincronizzazione dei file.

Gestione di un numero elevato di DAG e plug-in nelle cartelle dags e plugins

I contenuti delle cartelle /dags e /plugins vengono sincronizzati dal bucket dell'ambiente ai file system locali dei worker e degli scheduler di Airflow.

Più dati sono archiviati in queste cartelle, più tempo è necessario per eseguire la sincronizzazione. Per risolvere queste situazioni:

  • Limita il numero di file nelle cartelle /dags e /plugins. Archivia solo il numero minimo di file richiesti.

  • Aumenta lo spazio su disco disponibile per gli scheduler e i worker di Airflow.

  • Aumenta la CPU e la memoria degli scheduler e dei worker di Airflow, in modo che l'operazione di sincronizzazione venga eseguita più rapidamente.

  • In caso di un numero molto elevato di DAG, dividili in batch, comprimili in archivi ZIP e distribuiscili nella cartella /dags. Questo approccio velocizza il processo di sincronizzazione dei DAG. I componenti Airflow estraggono gli archivi zip prima di elaborare i DAG.

  • La generazione di DAG in modo programmatico potrebbe anche essere un metodo per limitare il numero di file DAG archiviati nella cartella /dags. Consulta la sezione DAG programmatici nella pagina Risoluzione dei problemi relativi ai DAG per evitare problemi di pianificazione ed esecuzione dei DAG generati in modo programmatico.

Anti-pattern che influiscono sulla sincronizzazione di DAG e plug-in con scheduler, worker e server web

Cloud Composer sincronizza i contenuti delle cartelle /dags e /plugins con scheduler e worker. Alcuni oggetti nelle cartelle /dags e /plugins potrebbero impedire il corretto funzionamento di questa sincronizzazione o rallentarla.

  • La cartella /dags viene sincronizzata con gli scheduler e i worker.

    Questa cartella non è sincronizzata con il server web.

  • La cartella /plugins viene sincronizzata con scheduler, worker e server web.

Potresti riscontrare i seguenti problemi:

  • Hai caricato file compressi con gzip che utilizzano [compression transcoding][storage-transcoding] per le cartelle /dags e /plugins. In genere si verifica se utilizzi il flag --gzip-local-all in un comando gcloud storage cp per caricare i dati nel bucket.

    Soluzione: elimina l'oggetto che utilizzava la transcodifica della compressione e caricalo di nuovo nel bucket.

  • Uno degli oggetti è denominato ".". Un oggetto di questo tipo non viene sincronizzato con scheduler e worker e potrebbe interrompere del tutto la sincronizzazione.

    Soluzione: rinomina l'oggetto.

  • Una cartella e un file Python DAG hanno lo stesso nome, ad esempio a.py. In questo caso, il file DAG non viene sincronizzato correttamente con i componenti Airflow.

    Soluzione: rimuovi la cartella con lo stesso nome del file Python DAG.

  • Uno degli oggetti nelle cartelle /dags o /plugins contiene un simbolo / alla fine del nome dell'oggetto. Questi oggetti possono interferire con il processo di sincronizzazione perché il simbolo / indica che un oggetto è una cartella, non un file.

    Soluzione: rimuovi il simbolo / dal nome dell'oggetto problematico.

  • Non archiviare file non necessari nelle cartelle /dags e /plugins.

    A volte i DAG e i plug-in che implementi vengono forniti con file aggiuntivi, ad esempio file che archiviano i test per questi componenti. Questi file vengono sincronizzati con i worker e gli scheduler e influiscono sul tempo necessario per copiarli su scheduler, worker e server web.

    Soluzione: non archiviare file aggiuntivi e non necessari nelle cartelle /dags e /plugins.

L'errore Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...' viene generato da scheduler e worker

Questo problema si verifica perché gli oggetti possono avere uno spazio dei nomi sovrapposto in Cloud Storage, mentre allo stesso tempo gli scheduler e i worker utilizzano file system Linux convenzionali. Ad esempio, è possibile aggiungere sia una cartella che un oggetto con lo stesso nome al bucket di un ambiente. Quando il bucket viene sincronizzato con gli scheduler e i worker dell'ambiente, viene generato questo errore, che può causare errori delle attività.

Per risolvere il problema, assicurati che non ci siano spazi dei nomi sovrapposti nel bucket dell'ambiente. Ad esempio, se sia /dags/misc (un file) che /dags/misc/example_file.txt (un altro file) si trovano in un bucket, lo scheduler genera un errore.

Passaggi successivi