En esta página se proporciona información para ayudarle a monitorizar y depurar flujos de trabajo de Dataproc.
Mostrar flujos de trabajo
Una WorkflowTemplate instanciada se denomina "flujo de trabajo" y se modela como una "operación".
Ejecuta el siguiente comando gcloud
para enumerar 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 a partir de 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 del UUID de OPERATION_NAME
en las consultas posteriores.
Usar WorkflowMetadata
El campo operation.metadata
proporciona información que le ayuda a diagnosticar errores en el flujo de trabajo.
Aquí tienes un ejemplo de WorkflowMetadata
,
que incluye un gráfico de nodos (trabajos) insertado 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!
Recuperar una plantilla
Como se muestra en el ejemplo anterior, el metadata
contiene el ID de la plantilla y la versión.
"template": "terasort", "version": 1,
Si no se elimina una plantilla, se pueden recuperar versiones de plantilla instanciadas mediante una solicitud de descripción con versión.
gcloud dataproc workflow-templates describe terasort \ --region=region \ --version=1
Lista de operaciones de clústeres iniciadas por 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 enviados 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
Lista de tareas enviadas 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 flujos de trabajo
Puedes definir un tiempo de espera para el flujo de trabajo que lo cancele si los trabajos del flujo de trabajo no finalizan en ese periodo. El periodo de tiempo de espera se aplica al grafo acíclico dirigido (DAG) de las tareas del flujo de trabajo (la secuencia de tareas del flujo de trabajo), no a toda la operación del flujo de trabajo. El periodo de tiempo de espera empieza cuando se inicia el primer trabajo del flujo de trabajo. No incluye el tiempo necesario para crear un clúster gestionado. Si hay alguna tarea en ejecución al final del periodo de tiempo de espera, se detendrán todas las tareas en ejecución, se finalizará el flujo de trabajo y, si el flujo de trabajo se estaba ejecutando en un clúster gestionado, se eliminará el clúster.
Ventaja: usa esta función para no tener que finalizar manualmente un flujo de trabajo que no se completa debido a que los trabajos se han quedado bloqueados.
Definir un tiempo de espera de plantilla de flujo de trabajo
Puedes definir un periodo de tiempo de espera de la plantilla de flujo de trabajo cuando creas una plantilla de flujo de trabajo. También puedes añadir un tiempo de espera de flujo de trabajo a una plantilla de flujo de trabajo ya creada actualizando la plantilla de flujo de trabajo.
gcloud
Para definir un tiempo de espera de flujo de trabajo en una plantilla nueva, usa la marca --dag-timeout
con el comando gcloud dataproc workflow-templates create. Puede usar los sufijos "s", "m", "h" y "d" para definir valores de duración en segundos, minutos, horas y días, respectivamente. La duración del tiempo de espera debe ser de entre 10 minutos ("10m") y 24 horas ("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
Para definir un tiempo de espera de un flujo de trabajo, completa el campo WorkflowTemplate
dagTimeout
como parte de una solicitud workflowTemplates.create.
Consola
Actualmente, la consola de Google Cloud no permite crear una plantilla de flujo de trabajo.
Actualizar el tiempo de espera de una plantilla de flujo de trabajo
Puedes actualizar una plantilla de flujo de trabajo para cambiar, añadir o quitar un tiempo de espera del flujo de trabajo.
gcloud
Añadir o cambiar el tiempo de espera de un flujo de trabajo
Para añadir o cambiar el tiempo de espera de un flujo de trabajo en una plantilla, usa la marca --dag-timeout
con el comando gcloud dataproc workflow-templates set-dag-timeout. Puede usar los sufijos "s", "m", "h" y "d" para definir los valores de duración en segundos, minutos, horas y días, respectivamente. La duración del tiempo de espera debe ser de entre 10 minutos ("10m") y 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")
Eliminar el tiempo de espera de un flujo de trabajo
Para quitar un tiempo de espera de un flujo de trabajo de una plantilla, 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
Añadir o cambiar el tiempo de espera de un flujo de trabajo
Para añadir o cambiar el tiempo de espera de un flujo de trabajo en una plantilla, actualice la plantilla del flujo de trabajo rellenando el campo dagTimeout
de la plantilla con el valor del tiempo de espera nuevo o modificado.
Eliminar el tiempo de espera de un flujo de trabajo
Para quitar el tiempo de espera de un flujo de trabajo de una plantilla,
actualice la plantilla de flujo de trabajo
quitando el campo
dagTimeout
de la plantilla.
Consola
Actualmente, la consola de Google Cloud no permite actualizar una plantilla de flujo de trabajo.