Soluciona problemas de sincronización de archivos

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cloud Composer sincroniza carpetas específicas del bucket de tu entorno con los componentes de Airflow que se ejecutan en tu entorno. Para obtener más información, consulta Datos almacenados en Cloud Storage. En esta página, se hace referencia a 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.

Manejo de una gran cantidad de DAGs y complementos en las carpetas de DAGs y complementos

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 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 la cantidad mínima de archivos necesarios.

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

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

  • En caso de que haya una gran cantidad de DAGs, 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 DAGs programáticos en la página de solución de problemas de DAGs para evitar problemas con la programación y ejecución de DAGs generados de forma programática.

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

Cloud Composer sincroniza el contenido de las carpetas /dags y /plugins con los programadores y los trabajadores. Es posible que ciertos objetos en las carpetas /dags y /plugins impidan que esta sincronización funcione correctamente o la ralenticen.

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

    Esta carpeta no está sincronizada 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 en las carpetas /dags y /plugins. 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 .. Este objeto no se sincroniza con los programadores ni los trabajadores, y es posible que deje de sincronizarse por completo.

    Solución: Cambia el nombre del objeto.

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

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

  • Uno de los objetos de las carpetas /dags o /plugins contiene un símbolo / al final de su nombre. Estos objetos pueden interferir en 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 DAGs y los complementos que implementas incluyen archivos adicionales, como los 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 innecesarios en las carpetas /dags y /plugins.

Los trabajadores y los programadores generan errores de "Es un directorio" o "Es un archivo"

Este problema ocurre porque los objetos pueden tener espacios de nombres superpuestos en Cloud Storage, mientras que los componentes de Airflow de tu entorno usan sistemas de archivos convencionales de Linux. 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 primero se sincronizó la carpeta, el objeto no se sincroniza y se genera 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 puede interrumpirse y otros objetos del 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 tanto /dags/misc (un objeto) como /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?