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.
Aquí hay un WorkflowMetadata
de muestra, que incluye un grafo de nodos (trabajos), incorporado 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 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 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
Enumera 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 establecer un tiempo de espera para el flujo de trabajo que cancelará el flujo de trabajo si los trabajos no lo finalizan dentro del tiempo de espera. El período de 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 a toda la operación de flujo de trabajo. El período de tiempo de espera comienza cuando se inicia el primer trabajo de flujo de trabajo; no incluye el tiempo dedicado a crear un clúster administrado. Si hay algún trabajo en ejecución al final del tiempo de espera, todos los trabajos en ejecución se detienen, el flujo de trabajo finaliza y si el flujo de trabajo se ejecutó 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 el tiempo de espera de una plantilla de flujo de trabajo
Puedes configurar un período de tiempo de espera de la 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 establecer el tiempo de espera del flujo de trabajo en una plantilla nueva, usa la marca --dag-timeout
con el comando gcloud dataproc workflow-templates create. Puedes usar sufijos “s”, “m”, “h” y “d” para establecer los valores de duración de segundo, minuto, hora y día, respectivamente. El tiempo de espera debe ser de 10 minutos ("10 min") 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, Google Cloud Console 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 de 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. El tiempo de espera debe ser de 10 minutos ("10 min") 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 el tiempo de espera del flujo de trabajo
Para quitar un tiempo de espera del 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 el tiempo de espera del 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, Google Cloud Console no admite la actualización de una plantilla de flujo de trabajo.