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. Consulta Datos almacenados en Cloud Storage para obtener más información. 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 [transcodificación de compresión][storage-transcoding] a las carpetas /dags y /plugins. Esto suele ocurrir 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 tipo de 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 programadores y trabajadores generan el error Done [Errno 21] Is a directory: "/home/airflow/gcs/dags/…"

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 convencionales de Linux. Por ejemplo, es posible agregar una carpeta y un objeto con el mismo nombre al bucket de un entorno. Cuando el bucket se sincroniza con los programadores y los trabajadores del entorno, se genera este error, lo que puede provocar fallas en las tareas.

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

¿Qué sigue?