Monitorare ed eseguire il debug dei flussi di lavoro

Questa pagina fornisce informazioni utili per monitorare ed eseguire il debug dei workflow Dataproc.

Elenca workflow

Un WorkflowTemplate con istanze WorkflowTemplate viene chiamato "workflow" ed è modellato come "operazione."

Esegui il seguente gcloud comando per elencare i workflow del tuo progetto:

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

Ecco una richiesta di esempio per elencare tutti i workflow avviati da un "terasort" modello:

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

Tieni presente che nelle query successive viene utilizzata solo la parte UUID di OPERATION_NAME usata in successive query.

Utilizzo di WorkflowMetadata

Il campo operation.metadata fornisce informazioni utili per diagnosticare gli errori del workflow.

Ecco un esempio di WorkflowMetadata, incluso un grafico dei nodi (job), incorporato in un'operazione:

{
  "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 un modello

Come mostrato nell'esempio precedente, metadata contiene l'ID e la versione del modello.

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

Se un modello non viene eliminato, le versioni del modello con istanze possono essere recuperate da una richiesta describe-with-version.

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

Elenca le operazioni cluster avviate da un modello:

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

Ecco una richiesta di esempio per elencare i job inviati da un modello:

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

Elenca i job inviati da un'istanza del workflow:

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

Timeout del workflow

Puoi impostare un timeout del workflow che annullerà il workflow se i job del workflow non vengono completati entro il periodo di timeout. Il periodo di timeout si applica al DAG (grafo aciclico orientato) dei job nel workflow (la sequenza di job nel workflow), non all' intera operazione del workflow. Il periodo di timeout inizia quando viene avviato il primo job del workflow e non include il tempo impiegato per creare un cluster gestito. Se un job è in esecuzione alla fine del periodo di timeout, tutti i job in esecuzione vengono arrestati, il workflow viene terminato e, se il workflow era in esecuzione su un cluster gestito, il cluster viene eliminato.

Vantaggio: utilizza questa funzionalità per evitare di dover terminare manualmente un workflow che non viene completato a causa di job bloccati.

Imposta un timeout del modello di workflow

Puoi impostare un periodo di timeout del modello di workflow quando crei un modello di workflow. Puoi anche aggiungere un timeout del workflow a un modello di workflow esistente aggiornando il modello di workflow.

gcloud

Per impostare un timeout del workflow su un nuovo modello, utilizza il flag --dag-timeout con il comando gcloud dataproc workflow-templates create. Puoi utilizzare i suffissi "s", "m", "h" e "d" per impostare rispettivamente i valori di durata in secondi, minuti, ore e giorni. La durata del timeout deve essere compresa tra 10 minuti ("10m") e 24 ore ("24h" 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

Per impostare un timeout del workflow, completa il WorkflowTemplate dagTimeout campo nell'ambito di una richiesta workflowTemplates.create.

Console

Al momento, la Google Cloud console non supporta la creazione di un modello di workflow.

Aggiorna un timeout del modello di workflow

Puoi aggiornare un modello di workflow esistente per modificare, aggiungere o rimuovere un timeout del workflow.

gcloud

Aggiunta o modifica di un timeout del workflow

Per aggiungere o modificare un timeout del workflow su un modello esistente, utilizza il --dag-timeout flag con il comando gcloud dataproc workflow-templates set-dag-timeout. Puoi utilizzare i suffissi "s", "m", "h" e "d" per impostare rispettivamente i valori di durata in secondi, minuti, ore e giorni. La durata del timeout deve essere compresa tra 10 minuti ("10m") e 24 ore ("24h").

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

Rimozione di un timeout del workflow

Per rimuovere un timeout del workflow da un modello esistente, utilizza il comando gcloud dataproc workflow-templates remove-dag-timeout.

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

API

Aggiunta o modifica di un timeout del workflow

Per aggiungere o modificare un timeout del workflow su un modello esistente, aggiorna il modello di workflow compilando il campo dagTimeout del modello con il valore di timeout nuovo o modificato.

Rimozione di un timeout del workflow

Per rimuovere un timeout del workflow da un modello esistente, aggiorna il modello di workflow rimuovendo il campo dagTimeout del modello.

Console

Al momento, la Google Cloud console non supporta l'aggiornamento di un modello di workflow.