Supervisa y depura flujos de trabajo

En esta página, se proporciona información para ayudarte a supervisar y depurar los flujos de trabajo de Dataproc.

Crea una lista de flujos de trabajo

La creación de una instancia de WorkflowTemplate se denomina “flujo de trabajo” y se modela como una “operación”.

Ejecuta el siguiente comando gcloud para ver los flujos de trabajo de tu proyecto:

gcloud dataproc operations list \
    --region=region \
    --filter="operationType = WORKFLOW"
...
OPERATION_NAME                                                DONE
projects/.../operations/07282b66-2c60-4919-9154-13bd4f03a1f2  True
projects/.../operations/1c0b0fd5-839a-4ad4-9a57-bbb011956690  True

A continuación, se muestra una solicitud de ejemplo para enumerar todos los flujos de trabajo iniciados desde una plantilla “terasort”:

gcloud dataproc operations list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-template-id=terasort"
...
OPERATION_NAME                                     DONE
projects/.../07282b66-2c60-4919-9154-13bd4f03a1f2  True
projects/.../1c0b0fd5-839a-4ad4-9a57-bbb011956690  True

Ten en cuenta que solo se usa la parte UUID de OPERATION_NAME en consultas posteriores.

Usa WorkflowMetadata

El campo operation.metadata proporciona información para ayudarte a diagnosticar fallas en el flujo de trabajo.

Aquí hay un WorkflowMetadata de muestra, que incluye un grafo de nodos (trabajos), incorporado en una operación:

{
  "name": "projects/my-project/regions/us-central1/operations/671c1d5d-9d24-4cc7-8c93-846e0f886d6e",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.WorkflowMetadata",
    "template": "terasort",
    "version": 1,
    "createCluster": {
      "operationId": "projects/my-project/regions/us-central1/operations/8d472870-4a8b-4609-9f7d-48daccb028fc",
      "Done": true
    },
    "graph": {
      "nodes": [
        {
          "stepId": "teragen",
          "jobId": "teragen-vtrprwcgepyny",
          "state": "COMPLETED"
        },
        {
          "stepId": "terasort",
          "prerequisiteStepIds": [
            "teragen"
          ],
          "jobId": "terasort-vtrprwcgepyny",
          "state": "FAILED",
          "error": "Job failed"
        },
        {
          "stepId": "teravalidate",
          "prerequisiteStepIds": [
            "terasort"
          ],
          "state": "FAILED",
          "error": "Skipped, node terasort failed"
        }
      ]
    },
    "deleteCluster": {
      "operationId": "projects/my-project/regions/us-central1/operations/9654c67b-2642-4142-a145-ca908e7c81c9",
      "Done": true
    },
    "state": "DONE",
    "clusterName": "terasort-cluster-vtrprwcgepyny"
  },
  "done": true,
  "error": {
    "message": "Workflow failed"
  }
}
Done!

Recupera una plantilla

Como se muestra en el ejemplo anterior, metadata contiene el ID y la versión de la plantilla.

"template": "terasort",
"version": 1,

Si no se borra una plantilla, las versiones de plantilla creadas con una instancia se pueden recuperar con una solicitud de descripción con una versión.

gcloud dataproc workflow-templates describe terasort \
    --region=region \
    --version=1

Enumera las operaciones de clúster iniciadas por una plantilla:

gcloud dataproc operations list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
...
OPERATION_NAME                                     DONE
projects/.../cf9ce692-d6c9-4671-a909-09fd62041024  True
projects/.../1bbaefd9-7fd9-460f-9adf-ee9bc448b8b7  True

Esta es una solicitud de muestra para enumerar trabajos que se envían desde una plantilla:

gcloud dataproc jobs list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-template-id = terasort"
...
JOB_ID                TYPE     STATUS
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort1-ci2ejdq2ta7l6  pyspark  DONE
terasort3-3xwsy6ubbs4ak  pyspark  DONE
terasort2-3xwsy6ubbs4ak  pyspark  DONE
terasort1-3xwsy6ubbs4ak  pyspark  DONE
terasort3-ajov4nptsllti  pyspark  DONE
terasort2-ajov4nptsllti  pyspark  DONE
terasort1-ajov4nptsllti  pyspark  DONE
terasort1-b262xachbv6c4  pyspark  DONE
terasort1-cryvid3kreea2  pyspark  DONE
terasort1-ndprn46nesbv4  pyspark  DONE
terasort1-yznruxam4ppxi  pyspark  DONE
terasort1-ttjbhpqmw55t6  pyspark  DONE
terasort1-d7svwzloplbni  pyspark  DONE

Enumera los trabajos enviados desde una instancia de flujo de trabajo:

gcloud dataproc jobs list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
...
JOB_ID                TYPE     STATUS
terasort3-ci2ejdq2ta7l6  pyspark  DONE
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort1-ci2ejdq2ta7l6  pyspark  DONE

Tiempos de espera del flujo de trabajo

Puedes establecer un tiempo de espera del flujo de trabajo que lo cancelará si sus trabajos no lo finalizan dentro del tiempo de espera. El tiempo de espera se aplica al DAG (grafo acíclico dirigido) de trabajos en el flujo de trabajo (la secuencia de trabajos en el flujo de trabajo), no a toda la operación de flujo de trabajo. El período de tiempo de espera comienza cuando se inicia el primer trabajo de flujo de trabajo; no incluye el tiempo dedicado a crear un clúster administrado. Si algún trabajo se ejecuta al final del tiempo de espera, todos los trabajos en ejecución se detienen, el flujo de trabajo finaliza y, si el flujo de trabajo se ejecutaba en un clúster administrado, este se borra.

Beneficio: Usa esta función para evitar tener que finalizar de forma manual un flujo de trabajo que no se completa debido a trabajos atascados o bloqueados.

Configura un tiempo de espera de plantilla de flujo de trabajo

Puedes configurar un período de tiempo de espera de la plantilla de flujo de trabajo cuando creas una plantilla de flujo de trabajo. También puedes agregar un tiempo de espera de flujo de trabajo a una plantilla de flujo de trabajo existente si actualizas la plantilla de flujo de trabajo.

Comando de gcloud

Para establecer un tiempo de espera de flujo de trabajo en una plantilla nueva, usa la marca --dag-timeout con el comando gcloud beta dataproc workflow-template create. Puedes usar los sufijos "s", "m", "h" y "d" para establecer valores de duración de segundo, minuto, hora y día, respectivamente. La duración del tiempo de espera debe ser de 10 minutos ("10 m") a 24 horas ("24 h" o "1d").

gcloud beta dataproc workflow-templates create template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d"") \
    ... other args ...

API

Para configurar el tiempo de espera del flujo de trabajo, completa el campo WorkflowTemplate dagTimeout como parte de una solicitud workflowTemplates.create.

Console

Actualmente, Google Cloud Console no admite la creación de una plantilla de flujo de trabajo.

Actualiza el tiempo de espera de una plantilla de flujo de trabajo

Puedes actualizar una plantilla de flujo de trabajo existente para cambiar, agregar o quitar un tiempo de espera de flujo de trabajo.

Comando de gcloud

Agrega o cambia el tiempo de espera del flujo de trabajo

Para agregar o cambiar el tiempo de espera de un flujo de trabajo en una plantilla existente, usa la marca --dag-timeout con el comando gcloud beta dataproc workflow-template set-dag-timeout. Puedes usar los sufijos “s”, “m”, “h” y “d” para establecer los valores de duración de segundos, minutos, hora y día, respectivamente. La duración del tiempo de espera debe ser de 10 minutos ("10 m") a 24 horas ("24 h").

gcloud beta dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d")

Quita el tiempo de espera del flujo de trabajo

Para quitar un tiempo de espera de flujo de trabajo de una plantilla existente, usa el comando gcloud beta dataproc workflow-templates remove-dag-timeout.

gcloud beta dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \
    --region=region

API

Agrega o cambia el tiempo de espera del flujo de trabajo

Para agregar o cambiar el tiempo de espera de un flujo de trabajo en una plantilla existente, completa el campo dagTimeout de la plantilla con el valor de tiempo de espera nuevo o modificado para actualizar la plantilla de flujo de trabajo.

Quita el tiempo de espera del flujo de trabajo

Para quitar un tiempo de espera de flujo de trabajo de una plantilla existente, quita el campo dagTimeout de la plantilla para actualizar la plantilla de flujo de trabajo.

Console

Por el momento, Google Cloud Console no admite la actualización de una plantilla de flujo de trabajo.