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
/dagse/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
/dagsviene sincronizzata con scheduler e worker.Questa cartella non viene sincronizzata con il server web.
La cartella
/pluginsviene 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
/dagse/pluginscartelle. In genere, questo accade se utilizzi il flag--gzip-local-allin un comandogcloud storage cpper 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
/dagso/pluginscontiene 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
/dagse/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
/dagse/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
- Risoluzione dei problemi del processore DAG
- Risoluzione dei problemi dello scheduler Airflow
- Risoluzione dei problemi dei DAG