Soluciona problemas de sincronización de archivos

Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)

Managed Airflow sincroniza carpetas específicas en el bucket de tu entorno con los componentes de Airflow que se ejecutan en tu entorno. Consulta Datos almacenados en Cloud Storage para obtener más información. En esta página, se abordan los problemas que podrían interrumpir el proceso de sincronización y cómo solucionarlos.

Problemas comunes

En las siguientes secciones, se describen los síntomas y las posibles soluciones para algunos problemas comunes de sincronización de archivos.

Cómo controlar una gran cantidad de DAG y complementos en las carpetas dags y plugins

El contenido de las carpetas /dags y /plugins se sincroniza desde el bucket de tu entorno con los sistemas de archivos locales de los trabajadores y los programadores de Airflow.

Cuantos más datos se almacenen en estas carpetas, más tiempo tardará en realizarse la sincronización. Para abordar estas situaciones, haz lo siguiente:

  • Limita la cantidad de archivos en las carpetas /dags y /plugins. Almacena solo el mínimo de archivos requeridos.

  • Aumenta el espacio en disco disponible para los trabajadores y los programadores de Airflow.

  • Aumenta la CPU y la memoria de los trabajadores y los programadores de Airflow para que la operación de sincronización se realice más rápido.

  • En el caso de una gran cantidad de DAG, divídelos en lotes, comprímelos en archivos ZIP y, luego, implementa estos archivos en la carpeta /dags. Este enfoque acelera el proceso de sincronización de los DAG. Los componentes de Airflow extraen archivos ZIP antes de procesar los DAG.

  • Generar DAG de forma programática también puede ser un método para limitar la cantidad de archivos DAG almacenados en la carpeta /dags. Consulta la sección DAG programáticos en la página Soluciona problemas de los DAG para evitar problemas con la programación y la ejecución de DAG generados de forma programática.

Anti-patrones que afectan la sincronización de DAG y complementos con programadores, trabajadores y servidores web

Managed Airflow sincroniza el contenido de las carpetas /dags y /plugins con los programadores y los trabajadores. Ciertos objetos en las carpetas /dags y /plugins pueden impedir que esta sincronización funcione correctamente o ralentizarla.

  • La carpeta /dags se sincroniza con los programadores y los trabajadores.

    Esta carpeta no se sincroniza con el servidor web.

  • La carpeta /plugins se sincroniza con los programadores, los trabajadores y los servidores web.

Es posible que encuentres los siguientes problemas:

  • Subiste archivos comprimidos en gzip que usan la transcodificación de compresión a /dags y /plugins carpetas. Por lo general, esto sucede si usas la marca --gzip-local-all en un comando gcloud storage cp para subir datos al bucket.

    Solución: Borra el objeto que usó la transcodificación de compresión y vuelve a subirlo al bucket.

  • Uno de los objetos se llama .. Ese objeto no se sincroniza con los programadores y los trabajadores, y es posible que deje de sincronizarse por completo.

    Solución: Cambia el nombre del objeto.

  • Una carpeta y un archivo de Python DAG tienen los mismos nombres, por ejemplo, a.py. En este caso, el archivo DAG no se sincroniza correctamente con los componentes de Airflow.

    Solución: Quita la carpeta que tiene el mismo nombre que el archivo de Python DAG.

  • Uno de los objetos en las carpetas /dags o /plugins contiene un símbolo / al final del nombre del objeto. Esos objetos pueden interferir con el proceso de sincronización porque el símbolo / significa que un objeto es una carpeta, no un archivo.

    Solución: Quita el símbolo / del nombre del objeto problemático.

  • No almacenes archivos innecesarios en las carpetas /dags y /plugins.

    A veces, los DAG y los complementos que implementas incluyen archivos adicionales, como archivos que almacenan pruebas para estos componentes. Estos archivos se sincronizan con los trabajadores y los programadores, y afectan el tiempo necesario para copiarlos en los programadores, los trabajadores y los servidores web.

    Solución: No almacenes archivos adicionales ni innecesarios en las carpetas /dags y /plugins.

Los trabajadores y los programadores generan errores "Is a directory" o "Is a file"

Este problema ocurre porque los objetos pueden tener un espacio de nombres superpuesto en Cloud Storage, mientras que los componentes de Airflow de tu entorno usan sistemas de archivos Linux convencionales. En Cloud Storage, es posible agregar una carpeta y un objeto con el mismo nombre a un bucket. Cuando el bucket se sincroniza con los componentes de Airflow del entorno, se genera un error:

  • Si el objeto se sincronizó primero, no se sincronizará el contenido de la carpeta y se generará el error Is a file.
  • Si la carpeta se sincronizó primero, el objeto no se sincronizará y se generará el error Is a directory.

Ejemplo:

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

Ambos errores pueden provocar fallas en las tareas debido a la falta de archivos. En algunos casos, el proceso de sincronización se puede interrumpir y otros objetos en el bucket del entorno tampoco se sincronizarán.

Solución:

Para solucionar este problema, asegúrate de que no haya espacios de nombres superpuestos en el bucket del entorno.

Por ejemplo, si /dags/misc (un objeto) y /dags/misc/example_file.txt (otro objeto) están en un bucket, cambia el nombre del objeto misc o de la carpeta en la que se encuentra example_file.txt para que no haya superposición.

¿Qué sigue?