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. Consulta más información sobre los 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 y despliega 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 [transcodificación de compresión][storage-transcoding] 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 usaba 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 ni con 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 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.

El error Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...' se genera en los programadores y los trabajadores

Este problema se produce porque los objetos pueden tener un espacio de nombres superpuesto en Cloud Storage, mientras que los programadores y los trabajadores usan sistemas de archivos de Linux convencionales. Por ejemplo, es posible añadir tanto una carpeta como un objeto con el mismo nombre al mismo bucket de un entorno. Cuando el contenedor se sincroniza con los programadores y los trabajadores del entorno, se genera este error, que puede provocar fallos en las tareas.

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 archivo) como /dags/misc/example_file.txt (otro archivo) están en un contenedor, el programador generará un error.

Siguientes pasos