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.

A continuación, se muestra una muestra de WorkflowMetadata, incluido un grafo de nodos (trabajos), que se incorpora 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 que inició 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

A continuación, se muestra una solicitud de ejemplo para enumerar los 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 de flujo de trabajo

Puedes configurar un tiempo de espera de flujo de trabajo que cancelará el flujo de trabajo si sus trabajos no finalizan dentro del tiempo de espera. El tiempo de espera se aplica al DAG (grafo acíclico dirigido) de los trabajos en el flujo de trabajo (la secuencia de trabajos del flujo de trabajo), no a toda la operación del flujo de trabajo. El tiempo de espera comienza cuando se inicia el primer trabajo de flujo de trabajo; no incluye el tiempo que se toma para crear un clúster administrado. Si algún trabajo se ejecuta al final del tiempo de espera, se detienen todos los trabajos en ejecución, el flujo de trabajo finaliza y, si el flujo de trabajo se ejecutaba en un clúster administrado, el clúster 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.

Configura una plantilla de tiempo de espera de flujo de trabajo

Puedes configurar un tiempo de espera de 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.

gcloud

Para configurar el tiempo de espera de un flujo de trabajo en una plantilla nueva, usa la marca --dag-timeout con el comando gcloud dataproc workflow-templates create. Puedes usar los sufijos “s”, “m”, “h” y “d” para establecer los 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 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.

Consola

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

Actualiza una plantilla del tiempo de espera de un flujo de trabajo

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

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 dataproc workflow-templates set-dag-timeout. Puedes usar los sufijos “s”, “m”, “h” y “d” para establecer los 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”).

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

Quita un tiempo de espera de flujo de trabajo

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

gcloud 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 un tiempo de espera de flujo de trabajo

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

Consola

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