Usar flujos de trabajo

Para configurar y ejecutar un flujo de trabajo, debes hacer lo siguiente:

  1. Crear una plantilla de flujo de trabajo
  2. Configurar un clúster gestionado (efímero) o seleccionar uno
  3. Añadir tareas
  4. Crear una instancia de la plantilla para ejecutar el flujo de trabajo

Crear una plantilla

CLI de gcloud

Ejecuta el siguiente command para crear un recurso de plantilla de flujo de trabajo de Dataproc.

gcloud dataproc workflow-templates create TEMPLATE_ID \
    --region=REGION

Notas:

  • REGION: especifica la región en la que se ejecutará la plantilla.
  • TEMPLATE_ID: Proporciona un ID para tu plantilla, como "workflow-template-1".
  • Cifrado con CMEK. Puedes añadir la marca --kms-key para usar el cifrado con CMEK en los argumentos de los trabajos de la plantilla de flujo de trabajo.

API REST

Envía un WorkflowTemplate como parte de una solicitud workflowTemplates.create. Puedes añadir el campo WorkflowTemplate.EncryptionConfig.kmsKey para usar el cifrado con CMEK en los argumentos de los trabajos de la plantilla de flujo de trabajo. kmsKey

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Configurar o seleccionar un clúster

Dataproc puede crear y usar un clúster nuevo y gestionado para tu flujo de trabajo o un clúster ya creado.

  • Clúster actual: consulta la sección sobre cómo usar selectores de clústeres con flujos de trabajo para seleccionar un clúster actual para tu flujo de trabajo.

  • Clúster gestionado: debes configurar un clúster gestionado para tu flujo de trabajo. Dataproc creará este clúster para ejecutar tareas de flujo de trabajo y, a continuación, lo eliminará al final del flujo de trabajo.

    Puedes configurar un clúster gestionado para tu flujo de trabajo con la herramienta de línea de comandos gcloud o la API de Dataproc.

    Comando gcloud

    Usa las marcas heredadas de gcloud dataproc cluster create para configurar el clúster gestionado, como el número de trabajadores y el tipo de máquina maestra y de trabajador. Dataproc añadirá un sufijo al nombre del clúster para asegurarse de que sea único. Puedes usar la marca --service-account para especificar una cuenta de servicio de VM para el clúster gestionado.

    gcloud dataproc workflow-templates set-managed-cluster TEMPLATE_ID \
        --region=REGION \
        --master-machine-type=MACHINE_TYPE \
        --worker-machine-type=MACHINE_TYPE \
        --num-workers=NUMBER \
        --cluster-name=CLUSTER_NAME
        --service-account=SERVICE_ACCOUNT
    

    API REST

    Consulta WorkflowTemplatePlacement.ManagedCluster, que puedes proporcionar como parte de un WorkflowTemplate completado que se envía con una solicitud workflowTemplates.create o workflowTemplates.update.

    Puedes usar el campo GceClusterConfig.serviceAccount para especificar una cuenta de servicio de VM para el clúster gestionado.

    Consola

    Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Añadir tareas a una plantilla

Todas las tareas se ejecutan simultáneamente, a menos que especifiques una o varias dependencias de tareas. Las dependencias de un trabajo se expresan como una lista de otros trabajos que deben finalizar correctamente para que pueda iniciarse el trabajo final. Debes proporcionar un step-id para cada trabajo. El ID debe ser único en el flujo de trabajo, pero no tiene por qué serlo a nivel global.

Comando gcloud

Usa el tipo de trabajo y las marcas heredadas de gcloud dataproc jobs submit para definir el trabajo que se va a añadir a la plantilla. También puedes usar la marca ‑‑start-after job-id of another workflow job para que la tarea se inicie después de que se completen una o varias tareas del flujo de trabajo.

Ejemplos:

Añade la tarea de Hadoop "foo" a la plantilla "my-workflow".

gcloud dataproc workflow-templates add-job hadoop \
    --region=REGION \
    --step-id=foo \
    --workflow-template=my-workflow \
    -- space separated job args

Añade el trabajo "bar" a la plantilla "my-workflow", que se ejecutará después de que el trabajo "foo" del flujo de trabajo se haya completado correctamente.

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=bar \
    --start-after=foo \
    --workflow-template=my-workflow \
    -- space separated job args

Añade otro trabajo "baz" a la plantilla "my-workflow" para que se ejecute después de que se completen correctamente los trabajos "foo" y "bar".

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=baz \
    --start-after=foo,bar \
    --workflow-template=my-workflow \
    -- space separated job args

API REST

Consulta WorkflowTemplate.OrderedJob. Este campo se proporciona como parte de un WorkflowTemplate completado que se envía con una solicitud workflowTemplates.create o workflowTemplates.update.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Ejecutar un flujo de trabajo

Al crear una instancia de una plantilla de flujo de trabajo, se ejecuta el flujo de trabajo definido por la plantilla. Se admiten varias instanciaciones de una plantilla, por lo que puedes ejecutar un flujo de trabajo varias veces.

Comando gcloud

gcloud dataproc workflow-templates instantiate TEMPLATE_ID \
    --region=REGION

El comando devuelve un ID de operación que puedes usar para monitorizar el estado del flujo de trabajo.

Ejemplo de comando y su resultado:
gcloud beta dataproc workflow-templates instantiate my-template-id \
    --region=us-central1
...
WorkflowTemplate [my-template-id] RUNNING
...
Created cluster: my-template-id-rg544az7mpbfa.
Job ID teragen-rg544az7mpbfa RUNNING
Job ID teragen-rg544az7mpbfa COMPLETED
Job ID terasort-rg544az7mpbfa RUNNING
Job ID terasort-rg544az7mpbfa COMPLETED
Job ID teravalidate-rg544az7mpbfa RUNNING
Job ID teravalidate-rg544az7mpbfa COMPLETED
...
Deleted cluster: my-template-id-rg544az7mpbfa.
WorkflowTemplate [my-template-id] DONE

API REST

Consulta workflowTemplates.instantiate.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Errores de trabajos de flujo de trabajo

Si falla alguna tarea de un flujo de trabajo, el flujo de trabajo fallará. Dataproc intentará mitigar el efecto de los fallos haciendo que fallen todas las tareas que se estén ejecutando simultáneamente e impidiendo que se inicien las tareas posteriores.

Monitorizar y enumerar un flujo de trabajo

Comando gcloud

Para monitorizar un flujo de trabajo, sigue estos pasos:

gcloud dataproc operations describe OPERATION_ID \
    --region=REGION

Nota: El operation-id se devuelve cuando creas una instancia del flujo de trabajo con gcloud dataproc workflow-templates instantiate (consulta la sección sobre cómo ejecutar un flujo de trabajo).

Para ver el estado del flujo de trabajo, haz lo siguiente:

gcloud dataproc operations list \
    --region=REGION \
    --filter="labels.goog-dataproc-operation-type=WORKFLOW AND status.state=RUNNING"

API REST

Para monitorizar un flujo de trabajo, usa la API operations.get de Dataproc.

Para enumerar los flujos de trabajo en ejecución, usa la API operations.list de Dataproc con un filtro de etiquetas.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Finalizar un flujo de trabajo

Puedes finalizar un flujo de trabajo mediante la CLI de Google Cloud o llamando a la API de Dataproc.

Comando gcloud

gcloud dataproc operations cancel OPERATION_ID \
    --region=REGION
Nota: El ID de operación que se devuelve al crear una instancia del flujo de trabajo con gcloud dataproc workflow-templates instantiate (consulta Ejecutar un flujo de trabajo).

API REST

Consulta la API operations.cancel.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Actualizar una plantilla de flujo de trabajo

Las actualizaciones no afectan a los flujos de trabajo en ejecución. La nueva versión de la plantilla solo se aplicará a los nuevos flujos de trabajo.

Comando gcloud

Las plantillas de flujo de trabajo se pueden actualizar emitiendo nuevos comandos gcloud workflow-templates que hagan referencia a un ID de plantilla de flujo de trabajo ya creado:

a una plantilla de flujo de trabajo.

API REST

Para actualizar una plantilla con la API REST, sigue estos pasos:

  1. Llama a workflowTemplates.get, que devuelve la plantilla actual con el campo version rellenado con la versión actual del servidor.
  2. Haz los cambios que quieras en la plantilla obtenida.
  3. Llama a workflowTemplates.update con la plantilla actualizada.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .

Eliminar una plantilla de flujo de trabajo

Comando gcloud

gcloud dataproc workflow-templates delete TEMPLATE_ID \
    --region=REGION

Nota: El operation-id que se devuelve al crear una instancia del flujo de trabajo con gcloud dataproc workflow-templates instantiate (consulta Ejecutar un flujo de trabajo).

API REST

Consulta workflowTemplates.delete.

Consola

Puedes ver las plantillas de flujo de trabajo y los flujos de trabajo creados en la página Flujos de trabajo de Dataproc en la consola de Google Cloud .