Risoluzione dei problemi di sincronizzazione dei file

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Airflow gestito sincronizza cartelle specifiche nel bucket dell'ambiente con i componenti Airflow eseguiti nell'ambiente. Per maggiori informazioni, 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 correzioni per alcuni problemi comuni di sincronizzazione dei file.

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

  • Aumenta la CPU e la memoria degli scheduler e dei worker 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 ed esegui il deployment di questi archivi 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 essere un metodo per limitare il numero di file DAG archiviati nella cartella /dags. Consulta la sezione DAG programmatici nella pagina Risoluzione dei problemi dei 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

Managed Airflow 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 scheduler e worker.

    Questa cartella non viene 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 la transcodifica della compressione in /dags e /plugins cartelle. In genere, questo accade 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 si chiama .. Un oggetto di questo tipo non viene sincronizzato con scheduler e worker e potrebbe interrompere completamente 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 includono file aggiuntivi, ad esempio file che archiviano i test per questi componenti. Questi file vengono sincronizzati con worker e 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.

I worker e i processori DAG generano errori "Is a directory" o "Is a file"

Questo problema si verifica perché gli oggetti possono avere uno spazio dei nomi sovrapposto in Cloud Storage, mentre i componenti Airflow dell'ambiente utilizzano file system Linux convenzionali. In Cloud Storage, è possibile aggiungere a un bucket sia una cartella sia un oggetto con lo stesso nome. Quando il bucket viene sincronizzato con i componenti Airflow dell'ambiente, viene generato un errore:

  • Se l'oggetto è stato sincronizzato per primo, i contenuti della cartella non verranno sincronizzati e verrà generato l'errore Is a file.
  • Se la cartella è stata sincronizzata per prima, l'oggetto non viene sincronizzato e viene generato l'errore Is a directory.

Esempio:

Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'

Entrambi questi errori possono causare errori delle attività a causa della mancanza di file. In alcuni casi, il processo di sincronizzazione può essere interrotto e anche altri oggetti nel bucket dell'ambiente non verranno sincronizzati.

Soluzione:

Per risolvere il problema, assicurati che non ci siano spazi dei nomi sovrapposti nel bucket dell'ambiente.

Ad esempio, se in un bucket sono presenti sia /dags/misc (un oggetto) sia /dags/misc/example_file.txt (un altro oggetto), rinomina l'oggetto misc o la cartella in cui si trova example_file.txt, in modo che non ci siano sovrapposizioni.

Passaggi successivi