Nesta página, você aprenderá a monitorar e depurar os fluxos de trabalho do Dataproc.
Como listar fluxos de trabalho
Um WorkflowTemplate instanciado é chamado de "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
Veja um exemplo de solicitação 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
Observe que somente a parte UUID de OPERATION_NAME
é usada em consultas subsequentes.
Como usar o WorkflowMetadata
O campo operation.metadata
fornece informações para ajudar você a diagnosticar
falhas no fluxo de trabalho.
Veja um exemplo de
WorkflowMetadata
,
incluindo um gráfico de nós (jobs), incorporados em uma 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!
Como recuperar um modelo
Conforme mostrado no exemplo anterior, o metadata
contém o ID do modelo
e a versão.
"template": "terasort", "version": 1,
Se um modelo não for excluído, as versões instanciadas do modelo poderão ser recuperadas por uma solicitação de descrição com versão.
gcloud dataproc workflow-templates describe terasort \ --region=region \ --version=1
Lista de 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
Veja abaixo um exemplo de solicitação para listar trabalhos enviados 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
Lista de jobs enviados 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
Tempos limite de fluxo de trabalho
Você pode definir um tempo limite para cancelar o fluxo de trabalho se os jobs dele não forem concluídos dentro do período de tempo limite. O tempo limite se aplica ao gráfico acíclico dirigido (DAG, na sigla em inglês) dos jobs no fluxo de trabalho (a sequência de jobs no fluxo de trabalho), não a toda a operação do fluxo de trabalho. O período de tempo limite começa quando o primeiro job do fluxo de trabalho é iniciado. Ele não inclui o tempo necessário para criar um cluster gerenciado. Se algum job estiver em execução no final do tempo limite, todos os jobs em execução serão interrompidos, o fluxo de trabalho será encerrado e, se o fluxo de trabalho estiver em execução em um cluster gerenciado, o cluster será excluído.
Benefício: use esse recurso para evitar a necessidade de encerrar manualmente um fluxo de trabalho que não tenha sido concluído devido a jobs travados.
Como definir o tempo limite de um modelo de fluxo de trabalho
Você pode definir um período de tempo limite do modelo de fluxo de trabalho ao criar um modelo de fluxo de trabalho. Também é possível adicionar um tempo limite de fluxo de trabalho a um modelo de fluxo de trabalho existente atualizando o modelo de fluxo de trabalho.
gcloud
Para definir um tempo limite de fluxo de trabalho em um novo modelo, use a sinalização --dag-timeout
com o
comando gcloud dataproc workflow-templates create. Use os sufixos "s", "m", "h" e "d" para definir os valores de duração de segundo, minuto, hora e dia, respectivamente. O tempo limite precisa ser de 10 minutos ("10m") a 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 tempo limite do fluxo de trabalho, preencha o campo WorkflowTemplate
dagTimeout
como parte de uma solicitação workflowTemplates.create.
Console
Atualmente, o console do Google Cloud não dá suporte à criação de uma modelo de fluxo de trabalho.
Como atualizar o tempo limite de um modelo de fluxo de trabalho
É possível atualizar um modelo de fluxo de trabalho existente para alterar, adicionar ou remover um tempo limite de um fluxo de trabalho.
gcloud
Como adicionar ou alterar um tempo limite de fluxo de trabalho
Para adicionar ou alterar um tempo limite de fluxo de trabalho em um novo existente, use a
sinalização --dag-timeout
com o
comando
gcloud dataproc workflow-templates set-dag-timeout. Use os sufixos "s", "m", "h" e "d" para definir os valores de duração de segundo, minuto, hora e dia, respectivamente. A duração do tempo limite precisa 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")
Como remover um tempo limite do fluxo de trabalho
Para remover um tempo limite do 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
Como adicionar ou alterar um tempo limite de fluxo de trabalho
Para adicionar ou alterar o tempo limite de um fluxo de trabalho em um modelo atual, atualize o modelo do fluxo de trabalho preenchendo o campo dagTimeout
do modelo com o valor de tempo limite novo ou alterado.
Como remover um tempo limite do fluxo de trabalho
Para remover um tempo limite do fluxo de trabalho de um modelo atual,
atualize o modelo de fluxo de trabalho
removendo as tags
dagTimeout
.
Console
Atualmente, o console do Google Cloud não dá suporte à atualização de uma modelo de fluxo de trabalho.