En esta página, se proporciona información para ayudarte a supervisar y depurar los flujos de trabajo de Dataproc.
Crea una lista de flujos de trabajo
La creación de una instancia de WorkflowTemplate se denomina “flujo de trabajo” y se modela como una “operación”.
Ejecuta el siguiente comando gcloud
para ver 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 desde 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 UUID de OPERATION_NAME
en consultas posteriores.
Usa WorkflowMetadata
El campo operation.metadata
proporciona información para ayudarte a diagnosticar fallas en el flujo de trabajo.
A continuación, se muestra una muestra de WorkflowMetadata
, incluido un grafo de nodos (trabajos), que se incorpora 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!
Recupera una plantilla
Como se muestra en el ejemplo anterior, metadata
contiene el ID y la versión de la plantilla.
"template": "terasort", "version": 1,
Si no se borra una plantilla, las versiones de plantilla creadas con una instancia se pueden recuperar con una solicitud de descripción con una versión.
gcloud dataproc workflow-templates describe terasort \ --region=region \ --version=1
Enumera las operaciones de clúster que inició 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 que se envían 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
Enumera los trabajos enviados 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 flujo de trabajo
Puedes configurar un tiempo de espera de flujo de trabajo que cancelará el flujo de trabajo si sus trabajos no finalizan dentro del tiempo de espera. El tiempo de espera se aplica al DAG (grafo acíclico dirigido) de trabajos en el flujo de trabajo (la secuencia de trabajos en el flujo de trabajo), no en el en toda la operación del flujo de trabajo. El tiempo de espera comienza cuando se inicia el primer trabajo de flujo de trabajo; no incluye el tiempo que se toma para crear un clúster administrado. Si algún trabajo se ejecuta al final del tiempo de espera, se detienen todos los trabajos en ejecución, el flujo de trabajo finaliza y, si el flujo de trabajo se ejecutaba en un clúster administrado, el clúster se borra.
Beneficio: Usa esta función para evitar tener que finalizar de forma manual un flujo de trabajo que no se completa debido a trabajos atascados.
Configura una plantilla de tiempo de espera de flujo de trabajo
Puedes configurar un tiempo de espera de plantilla de flujo de trabajo cuando creas una plantilla de flujo de trabajo. También puedes agregar un tiempo de espera de flujo de trabajo a una plantilla de flujo de trabajo existente si actualizas la plantilla de flujo de trabajo.
gcloud
Para configurar el tiempo de espera de un flujo de trabajo en una plantilla nueva, usa la marca --dag-timeout
con el comando gcloud dataproc workflow-templates create. Puedes usar los sufijos “s”, “m”, “h” y “d” para establecer los valores de duración de segundo, minuto, hora y día, respectivamente. La duración del tiempo de espera debe ser de 10 minutos (“10 m”) a 24 horas (“24 h” 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 configurar el tiempo de espera del flujo de trabajo, completa el campo WorkflowTemplate
dagTimeout
como parte de una solicitud workflowTemplates.create.
Console
Por el momento, la consola de Google Cloud no admite la creación de una plantilla de flujo de trabajo.
Actualiza una plantilla del tiempo de espera de un flujo de trabajo
Puedes actualizar una plantilla de flujo de trabajo existente para cambiar, agregar o quitar un tiempo de espera del flujo de trabajo.
gcloud
Agrega o cambia el tiempo de espera del flujo de trabajo
Para agregar o cambiar el tiempo de espera de un flujo de trabajo en una plantilla existente, usa la marca --dag-timeout
con el comando gcloud dataproc workflow-templates set-dag-timeout. Puedes usar los sufijos “s”, “m”, “h” y “d” para establecer los valores de duración de segundo, minuto, hora y día, respectivamente. La duración del tiempo de espera debe ser de 10 minutos (“10 m”) a 24 horas (“24 h”).
gcloud dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \ --region=region \ --dag-timeout=duration (from "10m" to "24h" or "1d")
Quita un tiempo de espera de flujo de trabajo
Para quitar un tiempo de espera de flujo de trabajo de una plantilla existente, 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
Agrega o cambia el tiempo de espera del flujo de trabajo
Para agregar o cambiar el tiempo de espera de un flujo de trabajo en una plantilla existente, completa el campo dagTimeout
de la plantilla con el valor de tiempo de espera nuevo o modificado para actualizar la plantilla de flujo de trabajo.
Quita un tiempo de espera de flujo de trabajo
Para quitar un tiempo de espera de flujo de trabajo de una plantilla existente, quita el campo dagTimeout
de la plantilla para actualizar la plantilla de flujo de trabajo.
Console
Por el momento, la consola de Google Cloud no admite la actualización de una plantilla de flujo de trabajo.