Monitoring und Debugging von Workflows

Auf dieser Seite finden Sie Informationen zum Monitoring und zur Fehlerbehebung von Dataproc-Workflows.

Workflows auflisten

Ein instanziiertes WorkflowTemplate wird als "Workflow" bezeichnet und als "Vorgang" behandelt.

Führen Sie den folgenden gcloud-Befehl aus, um die Workflows Ihres Projekts aufzulisten:

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

Im Folgenden finden Sie ein Beispiel für eine Anfrage zum Auflisten aller Workflows, die mit einer "TeraSort"-Vorlage gestartet wurden:

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

Beachten Sie, dass nur der UUID-Teil von OPERATION_NAME in nachfolgenden Abfragen verwendet wird.

WorkflowMetadata verwenden

Das Feld operation.metadata enthält Informationen zum Diagnostizieren von Workflow-Fehlern.

Hier ist ein Beispiel für WorkflowMetadata mit einem Diagramm aus Knoten (Jobs), die in einen Vorgang eingebettet sind:

{
  "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!

Eine Vorlage abrufen

Wie im vorherigen Beispiel gezeigt, enthalten die metadata die Vorlagen-ID und die Version.

"template": "terasort",
"version": 1,

Wenn eine Vorlage nicht gelöscht wurde, können instanziierte Vorlagenversionen durch eine "describe-with-version"-Anfrage abgerufen werden.

gcloud dataproc workflow-templates describe terasort \
    --region=region \
    --version=1

Clustervorgänge auflisten, die von einer Vorlage gestartet wurden:

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

Hier ist ein Beispiel-Request zum Auflisten von Jobs, die von einer Vorlage gesendet wurden:

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

Jobs auflisten, die von einer Workflowinstanz gesendet wurden:

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

Workflow-Zeitüberschreitungen

Sie können ein Workflow-Zeitlimit festlegen, das den Workflow abbricht, wenn die Jobs des Workflows nicht innerhalb des Zeitlimits abgeschlossen werden. Das Zeitlimit gilt für den DAG (Directed Acyclic Graph) der Jobs im Workflow (die Abfolge von Jobs im Workflow) und nicht für den gesamten Workflowvorgang. Der Ablaufzeitraum beginnt, wenn der erste Workflowjob gestartet wird, dies schließt die Zeit, die zum Erstellen eines verwalteten Clusters benötigt wird, aus. Wenn ein Job am Ende des Zeitlimits ausgeführt wird, werden alle laufenden Jobs angehalten, der Workflow beendet und wenn der Workflow auf einem verwalteten Cluster ausgeführt wurde, wird der Cluster gelöscht.

Vorteile: Mit dieser Funktion können Sie vermeiden, einen Workflow manuell zu beenden, der aufgrund von stockenden Jobs nicht abgeschlossen wird.

Zeitüberschreitung für Workflowvorlage festlegen

Sie können den Zeitraum für die Workflow-Vorlage festlegen, wenn Sie eine Workflow-Vorlage erstellen. Sie können einem vorhandenen Workflow auch eine Zeitüberschreitung für den Workflow hinzufügen, indem Sie die Workflow-Vorlage aktualisieren.

gcloud

Verwenden Sie das Flag --dag-timeout mit dem Befehl gcloud dataproc workflow-templates create, um ein Workflow-Zeitlimit für eine neue Vorlage festzulegen. Sie können die Suffixe "s", "m", "h" und "d" verwenden, um die Werte für die zweite, die Minute, die Stunde und den Tag festzulegen. Das Zeitlimit muss zwischen 10 Minuten ("10m") und 24 Stunden ("24h" oder "1d") liegen.

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

Zum Festlegen eines Workflow-Zeitlimits füllen Sie das Feld WorkflowTemplate dagTimeout als Teil einer Anfrage workflowTemplates.create aus.

Console

Das Erstellen einer Workflowvorlage wird von der Google Cloud Console derzeit nicht unterstützt.

Zeitlimit für Workflowvorlagen aktualisieren

Sie können eine vorhandene Workflowvorlage aktualisieren, um ein Workflow-Zeitlimit zu ändern, hinzuzufügen oder zu entfernen.

gcloud

Workflow-Zeitlimit hinzufügen oder ändern

Zum Hinzufügen oder Ändern eines Workflow-Zeitlimits für eine vorhandene Vorlage verwenden Sie das Flag --dag-timeout mit dem Befehl gcloud dataproc workflow-templates set-dag-timeout. Sie können die Suffixe "s", "m", "h" und "d" verwenden, um die Werte für Sekunde, Minute, Stunde und Tag festzulegen. Das Zeitlimit muss zwischen 10 Minuten ("10m") und 24 Stunden ("24h") liegen.

gcloud dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d")

Workflow-Zeitüberschreitung entfernen

Verwenden Sie den Befehl gcloud dataproc workflow-templates remove-dag-timeout, um ein Workflow-Timeout aus einer vorhandenen Vorlage zu entfernen.

gcloud dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \
    --region=region

API

Workflow-Zeitlimit hinzufügen oder ändern

Wenn Sie eine Workflow-Zeitüberschreitung für eine vorhandene Vorlage hinzufügen oder ändern möchten, aktualisieren Sie die Workflow-Vorlage, indem Sie das dagTimeout-Feld der Vorlage mit dem neuen oder geänderten Zeitüberschreitungswert ausfüllen.

Workflow-Zeitüberschreitung entfernen

Wenn Sie ein Workflow-Zeitlimit aus einer vorhandenen Vorlage entfernen möchten, aktualisieren Sie die Workflowvorlage. Entfernen Sie dazu das Feld dagTimeout der Vorlage.

Console

Die Google Cloud Console unterstützt derzeit nicht das Aktualisieren einer Workflowvorlage.