Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página, se explica cómo transferir DAG, datos y configuración de tus entornos existentes de Airflow 1.10.* a entornos con Airflow 2 y versiones posteriores de Airflow.
Otras guías de migración
De | A | Método | Guía |
---|---|---|---|
Cloud Composer 2 | Cloud Composer 3 | En paralelo, con la secuencia de comandos de migración | Guía de migración de secuencias de comandos |
Cloud Composer 2 | Cloud Composer 3 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 3 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Transferencia manual paralela | Guía de migración manual |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Comparación, con instantáneas | Guía de migración de instantáneas |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transferencia manual paralela | Guía de migración manual |
Cloud Composer 1, Airflow 1 | Cloud Composer 1, Airflow 2 | Transferencia manual paralela | Esta guía |
Actualizaciones en paralelo
Cloud Composer proporciona el secuencia de comandos de transferencia de la base de datos de Cloud Composer para migrar la base de datos de metadatos, los DAG, los datos y los complementos de los entornos de Cloud Composer con Airflow 1.10.14 y Airflow 1.10.15 a los entornos existentes de Cloud Composer con Airflow 2.0.1 y versiones posteriores de Airflow.
Esta es una ruta alternativa a la que se describe en esta guía. Algunas partes de esta guía aún se aplican cuando se usa la secuencia de comandos proporcionada. Por ejemplo, es posible que desees verificar la compatibilidad de tus DAGs con Airflow 2 antes de migrarlos o asegurarte de que no se produzcan ejecuciones simultáneas de DAGs y que no haya ejecuciones de DAGs adicionales o faltantes.
Antes de comenzar
Antes de comenzar a usar los entornos de Cloud Composer con Airflow 2, considera los cambios que Airflow 2 aporta a los entornos de Cloud Composer.
Varios programadores
Puedes usar más de un programador de Airflow en tu entorno. Puedes establecer la cantidad de programadores cuando creas un entorno o actualizas un entorno existente.
Ejecutor de Celery y Kubernetes
El ejecutor de Airflow 2 Celery+Kubernetes es compatible con Cloud Composer 3.
Cambios rotundos
Airflow 2 introduce muchos cambios importantes, algunos de los cuales son rotundos:
- No se garantiza que los DAG existentes de Airflow 1.10.* funcionen con Airflow 2. Se deben probar y, posiblemente, ajustar.
- Se migraron operadores, transferencias y hooks a paquetes de proveedores. Las instrucciones de importación en los DAG deben usar paquetes de proveedores nuevos. Es posible que las sentencias de importación anteriores ya no funcionen en Airflow 2.
- Es posible que algunas opciones de configuración de Airflow 1.10.* ya no sean compatibles porque Airflow 2 ya no admite ciertas opciones de configuración.
- Es posible que algunos paquetes de PyPI personalizados sean incompatibles con la nueva versión de Airflow o Python.
- La IU de Airflow con control de acceso es la IU predeterminada de Airflow 2. Airflow 2 no admite otros tipos de IU de Airflow.
- La API de REST experimental se reemplaza por la API estable de Airflow. La API de REST experimental está inhabilitada de forma predeterminada en Airflow 2.
- Otros cambios importantes en Airflow 2.0.0
- Otros cambios importantes en Airflow 2.0.1
Diferencias entre los entornos con Airflow 2 y Airflow 1.10.*
Estas son las principales diferencias entre los entornos de Cloud Composer con Airflow 1.10.* y los entornos con Airflow 2:
- Los entornos con Airflow 2 usan Python 3.8. Esta es una versión más reciente que la que se usa en los entornos de Airflow 1.10.*. No se admiten Python 2, Python 3.6 ni Python 3.7.
- Airflow 2 usa un formato de CLI diferente. Cloud Composer admite el nuevo formato en entornos con Airflow 2 a través del comando
gcloud composer environments run
. - Los paquetes de PyPI preinstalados son diferentes en los entornos de Airflow 2. Para obtener una lista de los paquetes de PyPI preinstalados, consulta la lista de versiones de Cloud Composer.
- La serialización del DAG siempre está habilitada en Airflow 2. Como resultado, ya no se necesita la carga asíncrona del DAG, y no se admite en Airflow 2. Como resultado, no se admite la configuración de los parámetros
[core]store_serialized_dags
y[core]store_dag_code
para Airflow 2, y los intentos de configurarlos se informarán como errores. - No se admiten los complementos del servidor web de Airflow. Esto no afecta a los complementos del programador o trabajador, incluidos los operadores y sensores de Airflow.
- En los entornos de Airflow 2, el rol de usuario predeterminado de Airflow es
Op
. En entornos con Airflow 1.10.*, el rol predeterminado esAdmin
.
Paso 1: Verifica la compatibilidad con Airflow 2
Para verificar si hay posibles conflictos con Airflow 2, consulta la guía de actualización a Airflow 2.0+ en la sección sobre la actualización de DAGs.
Un problema habitual que puedes encontrar se relaciona con las rutas de importación incompatibles. Para obtener más información sobre cómo resolver este problema de compatibilidad, consulta la sección sobre proveedores de versiones anteriores en la guía de actualización a Airflow 2.0 y versiones posteriores.
Paso 2: Crea un entorno de Airflow 2 y transfiere las anulaciones de configuración y las variables de entorno
Crea un entorno de Airflow 2 y transfiere las anulaciones de configuración y las variables de entorno:
Sigue los pasos para crear un entorno. Antes de crear un entorno, también debes especificar anulaciones de configuración y variables de entorno, como se explica más adelante.
Cuando selecciones una imagen, elige una imagen con Airflow 2.
Transfiere manualmente los parámetros de configuración de tu entorno de Airflow 1.10.* al nuevo entorno de Airflow 2.
Console
Cuando crees un entorno, expande la sección Herramientas de redes, anulaciones de configuración de Airflow y funciones adicionales.
En Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.
Copia todas las anulaciones de configuración de tu entorno de Airflow 1.10.*.
Algunas opciones de configuración usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios de configuración.
En Variables de entorno, haz clic en Agregar variable de entorno.
Copia todas las variables de entorno de tu entorno de Airflow 1.10.*.
Haz clic en Crear para crear un entorno.
Paso 3: Instala paquetes de PyPI en el entorno de Airflow 2
Después de crear tu entorno de Airflow 2, instala los paquetes de PyPI en él:
Console
En la consola de Google Cloud , ve a la página Entornos.
Selecciona tu entorno de Airflow 2.
Ve a la pestaña Paquetes de PyPI y haz clic en Editar.
Copia los requisitos del paquete de PyPI de tu entorno de Airflow 1.10.*. Haz clic en Guardar y espera a que se actualice el entorno.
Dado que los entornos de Airflow 2 usan un conjunto diferente de paquetes preinstalados y una versión diferente de Python, es posible que encuentres conflictos de paquetes de PyPI que sean difíciles de resolver.
Paso 4: Transfiere variables y grupos a Airflow 2
Airflow 1.10.* admite la exportación de variables y grupos a archivos JSON. Luego, puedes importar estos archivos a tu entorno de Airflow 2.
Solo necesitas transferir grupos si tienes grupos personalizados que no sean default_pool
. De lo contrario, omite los comandos que exportan e importan grupos.
gcloud
Exporta variables desde tu entorno de Airflow 1.10.*:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ variables -- -e /home/airflow/gcs/data/variables.json
Reemplaza lo siguiente:
AIRFLOW_1_ENV
por el nombre de tu entorno de Airflow 1.10.*.AIRFLOW_1_LOCATION
por la región en la que se encuentra el entorno.
Exporta grupos desde tu entorno de Airflow 1.10.*:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ pool -- -e /home/airflow/gcs/data/pools.json
Obtén el URI del bucket de tu entorno de Airflow 2.
Ejecuta el siguiente comando:
gcloud composer environments describe AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Reemplaza lo siguiente:
AIRFLOW_2_ENV
por el nombre de tu entorno de Airflow 2.AIRFLOW_2_LOCATION
por la región en la que se encuentra el entorno.
En el resultado, quita la carpeta
/dags
. El resultado es el URI del bucket de tu entorno de Airflow 2.Por ejemplo, cambia
gs://us-central1-example-916807e1-bucket/dags
ags://us-central1-example-916807e1-bucket
.
Transfiere archivos JSON con variables y grupos a tu entorno de Airflow 2:
gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION \ --source=variables.json gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION \ --source=pools.json
Reemplaza
AIRFLOW_2_BUCKET
por el URI del bucket de tu entorno de Airflow 2, que obtuviste en el paso anterior.Importa variables y grupos a Airflow 2:
gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ variables import \ -- /home/airflow/gcs/data/variables.json gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.json
Verifica que se hayan importado las variables y los grupos:
gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ variables list gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ pools list
Quita los archivos JSON de los buckets:
gcloud composer environments storage data delete \ variables.json \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION gcloud composer environments storage data delete \ pools.json \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION gcloud composer environments storage data delete \ variables.json \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION gcloud composer environments storage data delete \ pools.json \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Paso 5: Transfiere otros datos del bucket de tu entorno de Airflow 1.10.*
gcloud
Transfiere los complementos a tu entorno de Airflow 2. Para ello, exporta los complementos del bucket de tu entorno de Airflow 1.10.* a la carpeta
/plugins
del bucket de tu entorno de Airflow 2:gcloud composer environments storage plugins export \ --destination=AIRFLOW_2_BUCKET/plugins \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Verifica que la carpeta
/plugins
se haya importado correctamente:gcloud composer environments storage plugins list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Exporta la carpeta
/data
de tu entorno de Airflow 1.10.* al entorno de Airflow 2:gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Verifica que la carpeta
/data
se haya importado correctamente:gcloud composer environments storage data list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Paso 6: Transfiere conexiones y usuarios
Airflow 1.10.* no admite la exportación de usuarios ni conexiones. Para transferir usuarios y conexiones, crea manualmente cuentas de usuario y conexiones nuevas en tu entorno de Airflow 2.
gcloud
Para obtener una lista de las conexiones en tu entorno de Airflow 1.10.*, ejecuta el siguiente comando:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ connections -- --list
Para crear una conexión nueva en tu entorno de Airflow 2, ejecuta el comando
connections
de la CLI de Airflow a través de gcloud. Por ejemplo:gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ connections add \ -- --conn-host postgres.example.com \ --conn-port 5432 \ --conn-type postgres \ --conn-login example_user \ --conn-password example_password \ --conn-description "Example connection" \ example_connection
Para ver una lista de los usuarios en tu entorno de Airflow 1.10.*, sigue estos pasos:
Abre la interfaz web de Airflow para tu entorno de Airflow 1.10.*.
Ve a Administrador > Usuarios.
Para crear una cuenta de usuario nueva en tu entorno de Airflow 2, ejecuta el comando
users create
de la CLI de Airflow a través de gcloud. Por ejemplo:gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ users create \ -- --username example_username \ --firstname Example-Name \ --lastname Example-Surname \ --email example-user@example.com \ --use-random-password \ --role Admin
Paso 7: Asegúrate de que tus DAG estén listos para Airflow 2
Antes de transferir DAGs a tu entorno de Airflow 2, asegúrate de lo siguiente:
Tus DAG se ejecutan correctamente y no quedan problemas de compatibilidad.
Tus DAGs usan instrucciones de importación correctas.
Por ejemplo, la nueva instrucción de importación para
BigQueryCreateDataTransferOperator
puede verse así:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
Tus DAGs se actualizaron para Airflow 2. Este cambio es compatible con Airflow 1.10.14 y versiones posteriores.
Paso 8: Transfiere DAGs al entorno de Airflow 2
Los siguientes problemas potenciales pueden ocurrir cuando transfieres DAGs entre entornos:
Si un DAG está habilitado (no pausado) en ambos entornos, cada entorno ejecuta su propia copia del DAG según lo programado. Esto podría generar ejecuciones simultáneas del DAG para los mismos datos y el mismo tiempo de ejecución.
Debido a la recuperación de DAG, Airflow programa ejecuciones de DAG adicionales, comenzando desde la fecha de inicio especificada en tus DAGs. Esto sucede porque la nueva instancia de Airflow no tiene en cuenta el historial de ejecuciones de DAG del entorno 1.10.*. Esto podría generar una gran cantidad de ejecuciones de DAG programadas a partir de la fecha de inicio especificada.
Cómo evitar ejecuciones simultáneas del DAG
En tu entorno de Airflow 2, anula la opción de configuración de Airflow dags_are_paused_at_creation
. Después de realizar este cambio, todos los DAGs nuevos se pausarán de forma predeterminada.
Sección | Clave | Valor |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Cómo evitar ejecuciones de DAG adicionales o faltantes
Especifica una nueva fecha de inicio estática en los DAG que transfieras a tu entorno de Airflow 2.
Para evitar brechas y superposiciones en las fechas de ejecución, la primera ejecución del DAG debe ocurrir en el entorno de Airflow 2 en la próxima ocurrencia del intervalo de programación. Para ello, establece la nueva fecha de inicio en tu DAG para que sea anterior a la fecha de la última ejecución en el entorno de Airflow 1.10.*.
Por ejemplo, si tu DAG se ejecuta a las 15:00, las 17:00 y las 21:00 todos los días en el entorno de Airflow 1.10.*, la última ejecución del DAG ocurrió a las 15:00 y planeas transferir el DAG a las 15:15, la fecha de inicio del entorno de Airflow 2 puede ser hoy a las 14:45. Después de habilitar el DAG en el entorno de Airflow 2, Airflow programa una ejecución del DAG para las 17:00.
Como otro ejemplo, si tu DAG se ejecuta a las 00:00 todos los días en el entorno de Airflow 1.10.*, la última ejecución de DAG ocurre a las 20:00 el 26 de abril de 2021 y planeas transferir el DAG a las 13:00 del 26 de abril de 2021, la fecha de inicio del entorno de Airflow 2 puede ser a las 23:45 del 25 de abril de 2021. Después de habilitar el DAG en el entorno de Airflow 2, Airflow programa una ejecución del DAG para las 00:00 el 27 de abril de 2021.
Transfiere tus DAG uno por uno al entorno de Airflow 2
Para cada DAG, sigue este procedimiento para transferirlo:
Asegúrate de que la nueva fecha de inicio en el DAG esté configurada como se describe en la sección anterior.
Sube el DAG actualizado al entorno de Airflow 2. Este DAG está en pausa en el entorno de Airflow 2 debido a la anulación de la configuración, por lo que aún no se programó ninguna ejecución del DAG.
En la interfaz web de Airflow, ve a DAGs y busca los errores de sintaxis del DAG que se hayan informado.
En el momento en que planees transferir el DAG, haz lo siguiente:
Pausa el DAG en tu entorno de Airflow 1.10.*.
Reanuda el DAG en tu entorno de Airflow 2.
Verifica que la nueva ejecución del DAG esté programada para la hora correcta.
Espera a que se ejecute el DAG en el entorno de Airflow 2 y verifica si la ejecución se realizó correctamente.
Según si la ejecución del DAG es exitosa, haz lo siguiente:
Si la ejecución del DAG se realiza correctamente, puedes continuar y usar el DAG desde tu entorno de Airflow 2. Finalmente, considera borrar la versión 1.10.* del DAG de Airflow.
Si la ejecución del DAG falló, intenta solucionar los problemas del DAG hasta que se ejecute correctamente en Airflow 2.
Si es necesario, siempre puedes volver a la versión 1.10.* de Airflow del DAG:
Pausa el DAG en tu entorno de Airflow 2.
Reanuda el DAG en tu entorno de Airflow 1.10.*. Esto programa una nueva ejecución del DAG para la misma fecha y hora que la ejecución fallida.
Cuando esté todo listo para continuar con la versión de Airflow 2 del DAG, ajusta la fecha de inicio, sube la nueva versión del DAG a tu entorno de Airflow 2 y repite el procedimiento.
Paso 9: Supervisa tu entorno de Airflow 2
Después de transferir todos los DAG y la configuración al entorno de Airflow 2, supervisa si hay problemas potenciales, ejecuciones de DAG fallidas y el estado general del entorno. Si el entorno de Airflow 2 se ejecuta sin problemas durante un período suficiente, puedes quitar el entorno de Airflow 1.10.*.
¿Qué sigue?
- Soluciona problemas de los DAG
- Solución de problemas de creación de entornos
- Solución de problemas de actualizaciones y mejoras de entornos
- Cómo usar paquetes de portabilidad a versiones anteriores