Monitorize e depure fluxos de trabalho

Esta página fornece informações para ajudar a monitorizar e depurar workflows do Dataproc.

Listar fluxos de trabalho

Um WorkflowTemplate instanciado é denominado "fluxo de trabalho" e é modelado como uma "operação".

Execute o seguinte comando gcloud para listar os fluxos de trabalho do seu projeto:

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

Segue-se um pedido de exemplo para listar todos os fluxos de trabalho iniciados a partir de um modelo "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

Tenha em atenção que apenas a parte UUID de OPERATION_NAME é usada em consultas subsequentes.

Usar WorkflowMetadata

O campo operation.metadata fornece informações para ajudar a diagnosticar falhas no fluxo de trabalho.

Segue-se um exemplo WorkflowMetadata, incluindo um gráfico de nós (tarefas), incorporado numa operação:

{
  "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!

Recupere um modelo

Conforme mostrado no exemplo anterior, o elemento metadata contém o ID do modelo e a versão.

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

Se um modelo não for eliminado, é possível obter versões instanciadas do modelo através de um pedido describe-with-version.

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

Liste as operações de cluster iniciadas por um modelo:

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

Segue-se um exemplo de um pedido para listar trabalhos enviados a partir de um modelo:

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

Liste os trabalhos enviados a partir de uma instância de fluxo de trabalho:

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

Fluxos de trabalho com limite de tempo

Pode definir um limite de tempo limite do fluxo de trabalho que cancela o fluxo de trabalho se as tarefas do fluxo de trabalho não terminarem dentro do período de limite de tempo. O período de limite de tempo aplica-se ao DAG (gráfico acíclico orientado) de tarefas no fluxo de trabalho (a sequência de tarefas no fluxo de trabalho) e não a toda a operação do fluxo de trabalho. O período de limite de tempo começa quando a primeira tarefa do fluxo de trabalho é iniciada. Não inclui o tempo necessário para criar um cluster gerido. Se alguma tarefa estiver em execução no final do período de limite de tempo, todas as tarefas em execução são paradas, o fluxo de trabalho termina e, se o fluxo de trabalho estiver a ser executado num cluster gerido, o cluster é eliminado.

Vantagem: use esta funcionalidade para evitar ter de terminar manualmente um fluxo de trabalho que não é concluído devido a tarefas bloqueadas.

Defina um limite de tempo do modelo de fluxo de trabalho

Pode definir um período de limite de tempo do modelo de fluxo de trabalho quando criar um modelo de fluxo de trabalho. Também pode adicionar um limite de tempo de fluxo de trabalho a um modelo de fluxo de trabalho existente atualizando o modelo de fluxo de trabalho.

gcloud

Para definir um limite de tempo de fluxo de trabalho num novo modelo, use a flag --dag-timeout com o comando gcloud dataproc workflow-templates create. Pode usar os sufixos "s", "m", "h" e "d" para definir, respetivamente, valores de duração em segundos, minutos, horas e dias. A duração do limite de tempo tem de ser entre 10 minutos ("10m") e 24 horas ("24h" ou "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 definir um limite de tempo de um fluxo de trabalho, preencha o campo WorkflowTemplate dagTimeout como parte de um pedido workflowTemplates.create.

Consola

Atualmente, a consola Google Cloud não suporta a criação de um modelo de fluxo de trabalho.

Atualize o limite de tempo de um modelo de fluxo de trabalho

Pode atualizar um modelo de fluxo de trabalho existente para alterar, adicionar ou remover um limite de tempo do fluxo de trabalho.

gcloud

Adicionar ou alterar um limite de tempo de fluxo de trabalho

Para adicionar ou alterar um limite de tempo de fluxo de trabalho num modelo existente, use a flag --dag-timeout com o comando gcloud dataproc workflow-templates set-dag-timeout. Pode usar os sufixos "s", "m", "h" e "d" para definir valores de duração em segundos, minutos, horas e dias, respetivamente. A duração do limite de tempo tem de ser de 10 minutos ("10m") a 24 horas ("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")

Remover um limite de tempo do fluxo de trabalho

Para remover um limite de tempo de fluxo de trabalho de um modelo existente, use o comando gcloud dataproc workflow-templates remove-dag-timeout.

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

API

Adicionar ou alterar um limite de tempo de fluxo de trabalho

Para adicionar ou alterar um limite de tempo de fluxo de trabalho num modelo existente, atualize o modelo de fluxo de trabalho preenchendo o campo dagTimeout do modelo com o valor do limite de tempo novo ou alterado.

Remover um limite de tempo do fluxo de trabalho

Para remover um limite de tempo de fluxo de trabalho de um modelo existente, atualize o modelo de fluxo de trabalho removendo o campo dagTimeout do modelo.

Consola

Atualmente, a Google Cloud consola não suporta a atualização de ummodelo de fluxo de trabalho.