Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página se explica cómo transferir DAGs, datos y configuración de tus entornos de Cloud Composer 1 y Airflow 1 a Cloud Composer 2 y Airflow 2.
Otras guías de migración
De | Para | 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 | En paralelo, con capturas | Guía de migración de capturas |
Cloud Composer 1, Airflow 2 | Cloud Composer 3 | En paralelo, con capturas | Guía de migración de capturas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | En paralelo, con capturas | Guía de migración de capturas |
Cloud Composer 1, Airflow 2 | Cloud Composer 2 | Transferencia manual en paralelo | Guía de migración manual |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | En paralelo, con capturas | Guía de migración de capturas |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transferencia manual en paralelo | Esta guía |
Cloud Composer 1, Airflow 1 | Cloud Composer 1, Airflow 2 | Transferencia manual en paralelo | Guía de migración manual |
Antes de empezar
- Cloud Composer admite la migración en paralelo de Cloud Composer 1 a Cloud Composer 2. No se puede actualizar de Cloud Composer 1 a Cloud Composer 2 in situ.
- Consulta la lista de diferencias entre Cloud Composer 1 y Cloud Composer 2.
Como Cloud Composer 2 usa Airflow 2, la migración incluye el cambio de los DAG y la configuración del entorno a Airflow 2. Consulta la guía de migración de Airflow 1 a Airflow 2 para obtener información sobre los cambios incompatibles entre Airflow 1 y Airflow 2 en Cloud Composer.
En esta guía, se combinan la migración a Airflow 2 y la migración a Cloud Composer 2 en un solo procedimiento de migración. De esta forma, no es necesario que migres a un entorno de Cloud Composer 1 con Airflow 2 antes de migrar a Cloud Composer 2.
Paso 1: Actualiza a Airflow 1.10.15
Si tu entorno usa una versión de Airflow anterior a la 1.10.15, actualiza tu entorno a una versión de Cloud Composer que use Airflow 1.10.15.
Paso 2: Comprueba la compatibilidad con Airflow 2
Para comprobar si hay posibles conflictos con Airflow 2, consulta la guía de actualización a Airflow 2.0+ en la sección sobre actualización de DAGs.
Un problema habitual que puede surgir está relacionado con las rutas de importación incompatibles. Para obtener más información sobre cómo solucionar este problema de compatibilidad, consulta la sección sobre proveedores de versiones anteriores de la guía de actualización a Airflow 2.0 o versiones posteriores.
Paso 3: Obtén la lista de anulaciones de configuración, paquetes de PyPI personalizados y variables de entorno
Consola
Obtén la lista de las anulaciones de configuración, los paquetes PyPI personalizados y las variables de entorno de tu entorno de Cloud Composer 1:
Ve a la página Entornos de la consola de Google Cloud :
Selecciona tu entorno de Cloud Composer 1.
Consulta las variables de entorno en la pestaña Variables de entorno.
Consulta las anulaciones de configuración en las pestañas Anulaciones de configuración de Airflow.
Consulta los paquetes de PyPI personalizados en la pestaña Paquetes de PyPI.
gcloud
Para obtener la lista de variables de entorno, ejecuta el siguiente comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.envVariables)"
Para obtener la lista de anulaciones de configuración de Airflow del entorno, ejecuta lo siguiente:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.airflowConfigOverrides)"
Para obtener la lista de paquetes PyPI personalizados, ejecuta el siguiente comando:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.pypiPackages)"
Sustituye:
COMPOSER_1_ENV
con el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.
Terraform
Saltar este paso La configuración de tu entorno de Cloud Composer 1 ya incluye anulaciones de configuración, paquetes PyPI personalizados y variables de entorno.
Paso 4: Crea un entorno de Cloud Composer 2
En este paso, crea un entorno de Cloud Composer 2. Puedes empezar con un ajuste predefinido del entorno que se adapte a las demandas de recursos previstas y, más adelante, escalar y optimizar aún más tu entorno.
Consola
Crea un entorno de Cloud Composer 2 y especifica las anulaciones de configuración y las variables de entorno.
También puede anular las configuraciones de Airflow y las variables de entorno después de crear un entorno.
Algunas opciones de configuración de Airflow 1 usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios en la configuración.
gcloud
Crea un entorno de Cloud Composer 2 y especifica las anulaciones de configuración y las variables de entorno.
También puede anular las configuraciones de Airflow y las variables de entorno después de crear un entorno.
Algunas opciones de configuración de Airflow 1 usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios en la configuración.
Terraform
Crea un entorno de Cloud Composer 2 basado en la configuración del entorno de Cloud Composer 1:
- Copia la configuración de tu entorno de Cloud Composer 1.
- Cambia el nombre de tu entorno.
Usa el proveedor de
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Especifica una imagen de Cloud Composer 2 en el bloque
config.software_config
:software_config { image_version = "composer-2.13.9-airflow-2.10.5" # ... }
Si aún no lo has hecho, especifica las anulaciones de configuración y las variables de entorno.
Especifica paquetes PyPI personalizados en el bloque
config.software_config.pypi_packages
:software_config { # ... pypi_packages = { numpy = "" scipy = ">=1.1.0" } }
Paso 5: Instala paquetes de PyPI en el entorno de Cloud Composer 2
Una vez que se haya creado tu entorno de Cloud Composer 2, instala paquetes PyPI personalizados en él.
Consola
Ve a la página Entornos de la consola de Google Cloud :
Selecciona tu entorno de Cloud Composer 2.
Ve a la pestaña Paquetes de PyPI y haz clic en Editar.
Copia los requisitos de los paquetes de PyPI de tu entorno de Cloud Composer 1. Haz clic en Guardar y espera a que se actualice el entorno.
gcloud
Crea un archivo
requirements.txt
con la lista de paquetes de PyPI personalizados:numpy scipy>=1.1.0
Actualiza tu entorno y pasa el archivo
requirements.txt
al comando--update-pypi-packages-from-file
:gcloud composer environments update COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --update-pypi-packages-from-file requirements.txt
Sustituye:
COMPOSER_2_ENV
con el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 2.
Terraform
Saltar este paso Ya has instalado paquetes PyPI personalizados al crear el entorno.
Paso 6: Transfiere variables y grupos
Airflow permite exportar variables y grupos a archivos JSON. A continuación, puedes importar estos archivos a tu entorno de Cloud Composer 2.
Los comandos de la CLI de Airflow que se usan en este paso operan en archivos locales de los trabajadores de Airflow. Para subir o descargar los archivos, usa la carpeta /data
del segmento de Cloud Storage de tu entorno. Esta carpeta se sincroniza con el directorio /home/airflow/gcs/data/
de los trabajadores de Airflow. En los comandos de la CLI de Airflow, especifica /home/airflow/gcs/data/
en el parámetro FILEPATH
.
gcloud
Exporta las variables de tu entorno de Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ variables -- -e /home/airflow/gcs/data/variables.json
Sustituye:
COMPOSER_1_ENV
con el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.
Exporta los grupos de tu entorno de Cloud Composer 1:
gcloud composer environments run COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ pool -- -e /home/airflow/gcs/data/pools.json
Sustituye:
COMPOSER_1_ENV
con el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.
Obtén el URI del segmento de tu entorno de Cloud Composer 2.
Ejecuta el siguiente comando:
gcloud composer environments describe COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Sustituye:
COMPOSER_2_ENV
con el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
por la región en la que se encuentra el entorno.
En el resultado, elimina la carpeta
/dags
. El resultado es el URI del bucket de tu entorno de Cloud Composer 2.Por ejemplo, cambia
gs://us-central1-example-916807e1-bucket/dags
porgs://us-central1-example-916807e1-bucket
.
Transfiere archivos JSON con variables y grupos a tu entorno de Cloud Composer 2:
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=variables.json
gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ --source=pools.json
Sustituye:
COMPOSER_2_BUCKET
con el URI del segmento de tu entorno de Cloud Composer 2, que has obtenido en el paso anterior.COMPOSER_1_ENV
con el nombre de tu entorno de Cloud Composer 1.COMPOSER_1_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 1.
Importa variables y grupos a Cloud Composer 2:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables import \ -- /home/airflow/gcs/data/variables.json
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.json
Comprueba que se hayan importado las variables y los grupos:
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ variables list
gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ pools list
Elimina los archivos JSON de los contenedores:
gcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
gcloud composer environments storage data delete \ pools.json \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
gcloud composer environments storage data delete \ variables.json \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
gcloud composer environments storage data delete \ pools.json \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Paso 7: Transfiere otros datos del segmento de tu entorno de Cloud Composer 1
Transfiere los complementos y otros datos del segmento de tu entorno de Cloud Composer 1.
gcloud
Transfiere los plugins a tu entorno de Cloud Composer 2. Para ello, exporta los complementos del segmento de tu entorno de Cloud Composer 1 a la carpeta
/plugins
del segmento de tu entorno de Cloud Composer 2:gcloud composer environments storage plugins export \ --destination=COMPOSER_2_BUCKET/plugins \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Comprueba que la carpeta
/plugins
se ha importado correctamente:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Exporta la carpeta
/data
de tu entorno de Cloud Composer 1 al entorno de Airflow 2:gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Comprueba que la carpeta
/data
se ha importado correctamente:gcloud composer environments storage data list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Paso 8: Transfiere las conexiones
Airflow 1.10.15 no admite la exportación de conexiones. Para transferir conexiones, crea manualmente las conexiones en tu entorno de Cloud Composer 2 desde el entorno de Cloud Composer 1.
gcloud
Para obtener una lista de las conexiones de tu entorno de Cloud Composer 1, ejecuta el siguiente comando:
gcloud composer environments run COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections -- --list
Para crear una conexión en tu entorno de Cloud Composer 2, ejecuta el comando de la CLI de Airflow
connections
a través degcloud
. Por ejemplo:gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_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
Paso 9: Transfiere cuentas de usuario
En este paso se explica cómo transferir usuarios creándolos manualmente.
Airflow 1.10.15 no admite la exportación de usuarios. Para transferir usuarios y conexiones, crea manualmente cuentas de usuario en tu entorno de Airflow 2 desde el entorno de Cloud Composer 1.
Interfaz de usuario de Airflow
Para ver una lista de los usuarios de tu entorno de Cloud Composer 1, sigue estos pasos:
Abre la interfaz web de Airflow de tu entorno de Cloud Composer 1.
Vaya a Administrar > Usuarios.
Para crear un usuario en tu entorno de Cloud Composer 2, sigue estos pasos:
Abre la interfaz web de Airflow de tu entorno de Cloud Composer 2.
Ve a Seguridad > Lista de usuarios.
Haz clic en Add a new record (Añadir un registro nuevo).
gcloud
-
No se puede ver una lista de usuarios a través de
gcloud
en Airflow 1. Usa la interfaz de usuario de Airflow. Para crear una cuenta de usuario en tu entorno de Cloud Composer 2, ejecuta el comando de la CLI de Airflow
users create
a través degcloud
. Por ejemplo:gcloud composer environments run \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ users create \ -- --username example_username \ --firstname Example-Name \ --lastname Example-Surname \ --email example-user@example.com \ --use-random-password \ --role Op
Sustituye:
COMPOSER_2_ENV
con el nombre de tu entorno de Cloud Composer 2.COMPOSER_2_LOCATION
con la región en la que se encuentra el entorno de Cloud Composer 2.- Todos los parámetros de configuración de usuario con sus valores de tu entorno de Cloud Composer 1, incluido el rol del usuario.
Paso 10: Asegúrate de que tus DAGs estén listos para Airflow 2
Antes de transferir los DAGs a tu entorno de Cloud Composer 1, asegúrate de lo siguiente:
Tus DAGs se ejecutan correctamente y no hay problemas de compatibilidad.
Tus DAGs usan instrucciones de importación correctas.
Por ejemplo, la nueva instrucción de importación de
BigQueryCreateDataTransferOperator
puede tener el siguiente aspecto:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
Tus DAGs se han actualizado para Airflow 2. Este cambio es compatible con Airflow 1.10.14 y versiones posteriores.
Paso 11: Transfiere los DAGs al entorno de Cloud Composer 2
Pueden surgir los siguientes problemas al transferir DAGs entre entornos:
Si un DAG está habilitado (no en pausa) en ambos entornos, cada entorno ejecuta su propia copia del DAG según la programación. Esto puede provocar que se dupliquen las ejecuciones de DAG para los mismos datos y el mismo tiempo de ejecución.
Debido a la puesta al día de DAGs, Airflow programa ejecuciones de DAGs adicionales, empezando por la fecha de inicio especificada en tus DAGs. Esto ocurre porque la nueva instancia de Airflow no tiene en cuenta el historial de ejecuciones de DAG del entorno de Cloud Composer 1. Esto puede provocar que se programen muchas ejecuciones de DAG a partir de la fecha de inicio especificada.
Evitar ejecuciones de DAG duplicadas
En tu entorno de Cloud Composer 2, añade una anulación de la opción de configuración de Airflow para la opción dags_are_paused_at_creation
. Después de hacer este cambio, todos los DAGs nuevos se pausarán de forma predeterminada.
Sección | Clave | Valor |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Evitar ejecuciones de DAGs adicionales o que falten
Para evitar que haya huecos y solapamientos en las fechas de ejecución, inhabilita la opción de puesta al día en Cloud Composer 2. De esta forma, después de subir los DAGs a tu entorno de Cloud Composer 2, Airflow no programa ejecuciones de DAGs que ya se hayan ejecutado en el entorno de Cloud Composer 1. Añade una anulación de opción de configuración de Airflow para la opción catchup_by_default
:
Sección | Clave | Valor |
---|---|---|
scheduler |
catchup_by_default |
False |
Transfiere tus DAGs al entorno de Cloud Composer 2
Para transferir tus DAGs al entorno de Cloud Composer 2, sigue estos pasos:
Sube el DAG del entorno de Cloud Composer 1 al entorno de Cloud Composer 2. Saltar el
airflow_monitoring.py
DAG.Los DAGs se han pausado en el entorno de Cloud Composer 2 debido a la anulación de la configuración, por lo que no se ha programado ninguna ejecución de DAG.
En la interfaz web de Airflow, ve a DAGs y comprueba si hay errores de sintaxis de DAG.
En el momento en que tengas previsto transferir el DAG:
Pausa los DAGs de tu entorno de Cloud Composer 1.
Reanuda los DAGs de tu entorno de Cloud Composer 2.
Comprueba que las nuevas ejecuciones del DAG se hayan programado a la hora correcta.
Espera a que se ejecuten los DAGs en el entorno de Cloud Composer 2 y comprueba si se han completado correctamente. Si una ejecución de un DAG se ha completado correctamente, no la reanudes en el entorno de Cloud Composer 1. Si lo haces, se producirá una ejecución del DAG a la misma hora y fecha en tu entorno de Cloud Composer 1.
Si falla la ejecución de un DAG específico, intenta solucionar los problemas del DAG hasta que se ejecute correctamente en Cloud Composer 2.
Si es necesario, siempre puedes volver a la versión de Cloud Composer 1 del DAG y ejecutar las ejecuciones de DAG que hayan fallado en Cloud Composer 2 desde tu entorno de Cloud Composer 1:
Pausa el DAG en tu entorno de Cloud Composer 2.
Reanuda el DAG en tu entorno de Cloud Composer 1. De esta forma, se programan ejecuciones de DAGs para el periodo en el que el DAG estuvo en pausa en el entorno de Cloud Composer 1.
Paso 12: Monitoriza tu entorno de Cloud Composer 2
Después de transferir todos los DAGs y la configuración al entorno de Cloud Composer 2, monitorízalo para detectar posibles problemas, ejecuciones de DAGs fallidas y el estado general del entorno. Si el entorno de Cloud Composer 2 funciona sin problemas durante un periodo suficiente, puedes eliminar el entorno de Cloud Composer 1.
Siguientes pasos
- Solucionar problemas de DAGs
- Solucionar problemas de creación de entornos
- Solucionar problemas de actualizaciones del entorno
- Usar paquetes de versiones anteriores