Solucionar 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 la sección Datos almacenados en Cloud Storage. En esta página se describen los problemas que pueden interrumpir el proceso de sincronización y cómo solucionarlos.

Incidencias frecuentes

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

Gestionar un gran número de DAGs y complementos en las carpetas dags y plugins

El contenido de las carpetas /dags y /plugins se sincroniza desde el segmento 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 se tardará en realizar la sincronización. Para abordar estas situaciones, sigue estos pasos:

  • Limita el número de archivos de las carpetas /dags y /plugins. Almacena solo el mínimo de archivos necesarios.

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

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

  • Si hay un número muy elevado de DAGs, divídelos en lotes, comprímelos en archivos ZIP e implementa estos archivos en la carpeta /dags. Este enfoque acelera el proceso de sincronización de los DAGs. Los componentes de Airflow extraen archivos ZIP antes de procesar los DAGs.

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

Antipatrones que afectan a la sincronización de DAGs 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 algunos objetos de 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.

Puede que te encuentres con los siguientes problemas:

  • Has subido archivos comprimidos con gzip que usan la transcodificación de compresión a las carpetas /dags y /plugins. Esto suele ocurrir si usa la marca --gzip-local-all en un comando gcloud storage cp para subir datos al segmento.

    Solución: Elimine el objeto que usó la transcodificación de compresión y vuelva a subirlo al segmento.

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

    Solución: cambia el nombre del objeto.

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

    Solución: Elimina la carpeta que tenga el mismo nombre que el archivo Python del DAG.

  • Uno de los objetos de las carpetas /dags o /plugins contiene el símbolo / al final del nombre del objeto. Estos objetos pueden interferir en el proceso de sincronización porque el símbolo / indica 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 archivos que almacenan pruebas de estos componentes. Estos archivos se sincronizan con los trabajadores y los programadores, y afectan al tiempo necesario para copiar estos archivos en los programadores, los trabajadores y los servidores web.

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

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

Este problema se produce 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 de Linux convencionales. En Cloud Storage, es posible añadir tanto una carpeta como un objeto con el mismo nombre a un segmento. Cuando el bucket se sincroniza con los componentes de Airflow del entorno, se genera un error:

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

Ejemplo:

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

Ambos errores pueden provocar fallos en las tareas debido a que faltan archivos. En algunos casos, el proceso de sincronización puede interrumpirse y otros objetos del contenedor del entorno tampoco se sincronizarán.

Solución:

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

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

Siguientes pasos