Cette page fournit des informations pour vous aider à surveiller et à déboguer les workflows Dataproc.
Répertorier des workflows
Un objet WorkflowTemplate instancié est appelé un "workflow", calqué sur la structure d'une "opération".
Exécutez la commande gcloud
suivante pour répertorier les flux de travail de votre projet :
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
Voici un exemple de requête permettant de répertorier tous les workflows lancés à partir d'un modèle nommé "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
Sachez que seule la partie UUID de OPERATION_NAME
est utilisée dans les requêtes suivantes.
Utiliser WorkflowMetadata
Le champ operation.metadata
fournit des informations pour vous aider à diagnostiquer les échecs de workflow.
Voici un exemple WorkflowMetadata
, comprenant un graphique de nœuds (tâches), intégré à une opération :
{ "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!
Récupérer un modèle
Comme indiqué dans l'exemple précédent, metadata
contient l'identifiant et la version du modèle.
"template": "terasort", "version": 1,
Si un modèle n'est pas supprimé, les versions de modèle instanciées peuvent être récupérées par une requête describe avec -version.
gcloud dataproc workflow-templates describe terasort \ --region=region \ --version=1
Voici comment répertorier les opérations de cluster lancées par un modèle :
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
Voici un exemple de requête permettant de répertorier les tâches soumises à partir d'un modèle :
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
Voici comment répertorier les tâches soumises à partir d'une instance de workflow :
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
Délais avant expiration des workflows
Vous pouvez définir un délai avant expiration du workflow qui va annuler le workflow si les tâches du workflow ne se terminent pas dans le délai imparti. Le délai avant expiration s'applique au graphe orienté acyclique (DAG, Directed Acyclic Graph) des tâches du workflow (séquence de tâches dans le workflow), et non à l'ensemble de l'opération du workflow. Le délai avant expiration commence au démarrage de la première tâche de workflow. Il n'inclut pas le temps nécessaire à la création d'un cluster géré. Si une tâche est en cours d'exécution à la fin du délai avant expiration, toutes les tâches en cours d'exécution sont arrêtées, le workflow est interrompu et, s'il était exécuté sur un cluster géré, le cluster est supprimé.
Avantage : Utilisez cette fonctionnalité pour éviter d'avoir à arrêter manuellement un workflow qui ne se termine pas en raison de tâches bloquées.
Définir un délai avant expiration pour un modèle de workflow
Lorsque vous créez un modèle de workflow, vous pouvez définir un délai avant expiration. Lorsque vous mettez à jour un modèle de workflow existant, vous pouvez également le doter d'un délai avant expiration.
gcloud
Pour définir un délai avant expiration de workflow sur un nouveau modèle, utilisez la commande gcloud beta dataproc workflow-template create avec l’option --dag-timeout
. Les suffixes "s", "m", "h" et "d" définissent les unités de temps : secondes, minutes, heures et jours respectivement. Le délai avant expiration doit durer entre 10 minutes ("10m") et 24 heures ("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
Pour définir un délai avant expiration de workflow, remplissez le champ WorkflowTemplate
dagTimeout
dans la requête workflowTemplates.create.
Console
Actuellement, Google Cloud Console ne permet pas de créer de modèle de workflow.
Mettre à jour le délai avant expiration d'un modèle de workflow
Pour modifier, ajouter ou supprimer un délai avant expiration sur un modèle de workflow existant, vous devez mettre à jour ce modèle.
gcloud
Ajouter ou modifier un délai avant expiration de workflow
Pour ajouter ou modifier un délai avant expiration de workflow sur un modèle existant, utilisez la commande gcloud beta dataproc workflow-templates set-dag-timeout avec l'option --dag-timeout
. Les suffixes "s", "m", "h" et "d" définissent les unités de temps : secondes, minutes, heures et jours respectivement. Le délai avant expiration doit durer entre 10 minutes ("10m") et 24 heures ("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")
Supprimer un délai avant expiration de workflow
Pour supprimer le délai avant expiration d'un modèle existant, utilisez la commande gcloud beta dataproc workflow-templates remove-dag-timeout.
gcloud dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \ --region=region
API
Ajouter ou modifier un délai avant expiration de workflow
Pour ajouter ou modifier un délai avant expiration de workflow sur un modèle existant, mettez à jour le modèle en remplissant le champ dagTimeout
du modèle avec la nouvelle valeur du délai.
Supprimer un délai avant expiration de workflow
Pour supprimer un délai avant expiration de workflow d'un modèle existant, mettez à jour le modèle de workflow en supprimant le champ dagTimeout
.
Console
Actuellement, Google Cloud Console ne permet pas de mettre à jour les modèles de workflow.