Usa operadores diferibles en tus DAG

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

En esta página, se explica cómo habilitar la compatibilidad con los operadores diferibles en tu y usar operadores diferibles de Google Cloud en tus DAG.

Acerca de los operadores diferibles en Cloud Composer

Si tienes al menos una instancia de activador (o al menos dos resilientes), puedes usar Operadores y activadores diferibles en tus DAG.

Para los operadores diferibles, Airflow divide la ejecución de las tareas en las siguientes etapas:

  1. Inicia la operación. En esta etapa, la tarea ocupa un trabajador de Airflow ranura. La tarea realiza una operación que delega el trabajo a un un servicio diferente.

    Por ejemplo, ejecutar un trabajo de BigQuery puede tardar segundos a varias horas. Después de crear el trabajo, la operación pasa el identificador de trabajo (ID de trabajo de BigQuery) a un Activador de Airflow.

  2. El activador supervisa el trabajo hasta que finaliza. En esta etapa, la ranura del trabajador no está ocupada. El activador de Airflow tiene una interfaz y es capaz de manejar cientos de trabajos de este tipo. Cuando El activador detecta que el trabajo finalizó y envía un evento que se activa la última etapa.

  3. En la última etapa, un trabajador de Airflow ejecuta una devolución de llamada. Esta devolución de llamada, para ejemplo, puede marcar la tarea como exitosa o ejecutar otra operación y configurar el trabajo para que el activador vuelva a supervisarlo.

El activador no tiene estado y, por lo tanto, es resistente a las interrupciones o reinicios, . Debido a esto, los trabajos de larga duración son resistentes a los reinicios del Pod a menos que el reinicio ocurra durante la última etapa, que es corta.

Antes de comenzar

  • Los sensores y operadores diferibles están disponibles en Cloud Composer 2 y requieren lo siguiente:
    • Cloud Composer 2.0.31 y versiones posteriores
    • Airflow 2.2.5, 2.3.3 y versiones posteriores

Cómo habilitar la compatibilidad con operadores diferibles

Un componente de entorno llamado activador de Airflow supervisa todos de forma asíncrona tareas diferidas en tu entorno. Después de una operación postergada desde una tarea de este tipo el activador pasa la tarea a un trabajador de Airflow.

Necesitas al menos una instancia de activador en tu entorno (o al menos dos en entornos de alta resiliencia) para usar el modo diferible en tus DAG. Puedes configurar los activadores cuando creas un entorno o ajustar la cantidad de activadores y los parámetros de rendimiento de un entorno existente

Operadores de Google Cloud que admiten el modo diferible

Solo algunos operadores de Airflow se han extendido para admitir el modelo diferible. La siguiente lista es una referencia para los operadores del Paquete airflow.providers.google.operators.cloud compatibles con el modo diferible. La columna con la versión mínima requerida del paquete airflow.providers.google.operators.cloud representa la primera versión del paquete en la que ese operador admite el modo diferible.

Operadores de Cloud Composer

Nombre del operadorVersión de apache-airflow-providers-google requerida
CloudComposerCreateEnvironmentOperator 6.4.0
CloudComposerDeleteEnvironmentOperator 6.4.0
CloudComposerUpdateEnvironmentOperator 6.4.0

Operadores de BigQuery

Nombre del operadorVersión de apache-airflow-providers-google requerida
BigQueryCheckOperator 8.4.0
BigQueryValueCheckOperator 8.4.0
BigQueryIntervalCheckOperator 8.4.0
BigQueryGetDataOperator 8.4.0
BigQueryInsertJobOperator 8.4.0

Operadores del Servicio de transferencia de datos de BigQuery

Nombre del operadorVersión de apache-airflow-providers-google requerida
BigQueryDataTransferServiceStartTransferRunsOperator 8.9.0

Operadores de Cloud Build

Nombre del operadorVersión de apache-airflow-providers-google requerida
CloudBuildCreateBuildOperator 8.7.0

Operadores de Cloud SQL

Nombre del operadorVersión de apache-airflow-providers-google requerida
CloudSQLExportInstanceOperator 10.3.0

Operadores de Dataflow

Nombre del operadorVersión de apache-airflow-providers-google requerida
DataflowTemplatedJobStartOperator 8.9.0
DataflowStartFlexTemplateOperator 8.9.0

Operadores de Cloud Data Fusion

Nombre del operadorVersión de apache-airflow-providers-google requerida
CloudDataFusionStartPipelineOperator 8.9.0

Operadores de Google Kubernetes Engine

Nombre del operadorVersión de apache-airflow-providers-google requerida
GKEDeleteClusterOperator 9.0.0
GKECreateClusterOperator 9.0.0

Operadores de AI Platform

Nombre del operadorVersión de apache-airflow-providers-google requerida
MLEngineStartTrainingJobOperator 8.9.0

Usa operadores diferibles en tus DAG

Una convención común para todos los operadores de Google Cloud es habilitar el modo diferible con el parámetro booleano deferrable. Si Google Cloud no tiene este parámetro, por lo que no se puede ejecutar en la función . Otros operadores pueden tener una convención diferente. Por ejemplo, algunos los operadores de la comunidad tienen una clase separada con el sufijo Async en el de la fuente de datos.

En el siguiente DAG de ejemplo, se usa el operador DataprocSubmitJobOperator en el modo diferible:

PYSPARK_JOB = {
    "reference": { "project_id": "PROJECT_ID" },
    "placement": { "cluster_name": "PYSPARK_CLUSTER_NAME" },
    "pyspark_job": {
        "main_python_file_uri": "gs://dataproc-examples/pyspark/hello-world/hello-world.py"
    },
}

DataprocSubmitJobOperator(
        task_id="dataproc-deferrable-example",
        job=PYSPARK_JOB,
        deferrable=True,
    )

Ver registros del activador

El activador genera registros que están disponibles junto con los registros de otros los componentes del entorno. Para obtener más información sobre cómo ver tu entorno de registros, consulta Visualiza los registros.

Supervisa el activador

Para obtener más información sobre cómo supervisar el componente activador, consulta Métricas de Airflow.

Además de supervisar el activador, puedes verificar la cantidad de instancias tareas en las métricas Unfinished Task del panel de Monitoring de la en un entorno de nube.

¿Qué sigue?