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.