Dataproc-Jobausgabe und -Protokolle

Wenn Sie einen Dataproc-Job einreichen, erfasst Dataproc automatisch die Jobausgabe und stellt sie Ihnen zur Verfügung. Sie können die Jobausgabe also schnell überprüfen, ohne eine Verbindung zum Cluster beibehalten zu müssen, während Jobs ausgeführt oder komplizierte Log-Dateien analysiert werden.

Spark-Protokolle

Es gibt zwei Arten von Spark-Protokollen: Spark-Treiberprotokolle und Spark-Executor-Protokolle. Spark-Treiber-Logs enthalten Jobausgaben. Spark-Executor-Logs enthalten die ausführbare Datei oder Launcher-Ausgabe des Jobs, z. B. die Meldung spark-submit „Anwendung xxx gesendet“. Sie können beim Beheben von Jobfehlern hilfreich sein.

Der Dataproc-Job-Treiber, der sich vom Spark-Treiber unterscheidet, ist ein Launcher für viele Jobtypen. Beim Starten von Spark-Jobs wird er als Wrapper auf der zugrunde liegenden spark-submit-Ausführdatei ausgeführt, die den Spark-Treiber startet. Der Spark-Treiber führt den Job im Dataproc-Cluster im Spark-client- oder cluster-Modus aus:

  • client-Modus: Der Spark-Treiber führt den Job im spark-submit-Prozess aus und Spark-Logs werden an den Dataproc-Job-Treiber gesendet.

  • cluster-Modus: Der Spark-Treiber führt den Job in einem YARN-Container aus. Spark-Treiberprotokolle sind für den Dataproc-Job-Treiber nicht verfügbar.

Dataproc- und Spark-Job-Eigenschaften – Übersicht

Attribut Wert Default Beschreibung
dataproc:dataproc.logging.stackdriver.job.driver.enable "true" oder "false" false Muss beim Erstellen des Clusters festgelegt werden. Wenn true festgelegt ist, ist die Job-Treiberausgabe in „Logging“ und mit der Jobressource verknüpft. Bei false ist die Job-Treiberausgabe nicht in „Logging“ enthalten.
Hinweis: Die folgenden Clustereigenschaften sind ebenfalls erforderlich, um Jobtreiber-Logs in Logging zu aktivieren. Sie werden beim Erstellen eines Clusters standardmäßig festgelegt: dataproc:dataproc.logging.stackdriver.enable=true und dataproc:jobs.file-backed-output.enable=true.
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable "true" oder "false" false Muss beim Erstellen des Clusters festgelegt werden. Bei true werden die YARN-Containerlogs des Jobs mit der Jobressource verknüpft. Bei false werden die YARN-Containerlogs des Jobs mit der Clusterressource verknüpft.
spark:spark.submit.deployMode Client oder Cluster Client Steuert den Spark-Modus client oder cluster.

Spark-Jobs, die mit der Dataproc jobs API gesendet wurden

In den Tabellen in diesem Abschnitt wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel der Dataproc-Job-Treiberausgabe aufgeführt, wenn Jobs über die Dataproc jobs API gesendet werden. Dazu gehört auch das Einreichen von Jobs über die Google Cloud Console, die gcloud CLI und Cloud-Clientbibliotheken.

Die aufgeführten Dataproc- und Spark-Properties können beim Erstellen eines Clusters mit dem Flag --properties festgelegt werden. Sie werden dann auf alle Spark-Jobs angewendet, die auf dem Cluster ausgeführt werden. Spark-Properties können auch mit dem Flag --properties (ohne das Präfix „spark:“) festgelegt werden, wenn ein Job an die Dataproc jobs API gesendet wird. Sie werden dann nur auf den Job angewendet.

Dataproc-Job-Treiberausgabe

In den folgenden Tabellen wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel der Dataproc-Job-Driver-Ausgabe aufgeführt.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Ausgabe
false (Standardeinstellung)
  • Zum Client gestreamt
  • In Cloud Storage unter der von Dataproc generierten driverOutputResourceUri
  • Nicht in „Logging“
wahr
  • Zum Client gestreamt
  • In Cloud Storage unter der von Dataproc generierten driverOutputResourceUri
  • Unter „Logging“: dataproc.job.driver unter der Jobressource.

Spark-Treiberprotokolle

In den folgenden Tabellen wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel von Spark-Treiberprotokollen aufgeführt.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Treiberausgabe
Client false (Standardeinstellung) "true" oder "false"
  • Zum Client gestreamt
  • In Cloud Storage unter der von Dataproc generierten driverOutputResourceUri
  • Nicht in „Logging“
Client wahr "true" oder "false"
  • Zum Client gestreamt
  • In Cloud Storage unter der von Dataproc generierten driverOutputResourceUri
  • In Logging: dataproc.job.driver unter der Jobressource
Cluster false (Standardeinstellung) false
  • Nicht an den Client gestreamt
  • Nicht in Cloud Storage
  • In Logging yarn-userlogs unter der Clusterressource
Cluster wahr wahr
  • Nicht an den Client gestreamt
  • Nicht in Cloud Storage
  • In Logging: dataproc.job.yarn.container unter der Jobressource

Spark-Ausführer-Logs

In den folgenden Tabellen wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel der Spark-Executor-Protokolle aufgeführt.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Executor-Log
false (Standardeinstellung) Unter „Logging“: yarn-userlogs unter der Clusterressource
wahr In Logging dataproc.job.yarn.container unter der Jobressource

Spark-Jobs, die ohne die Dataproc jobs API gesendet wurden

In diesem Abschnitt wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel von Spark-Jobprotokollen aufgeführt, wenn Jobs ohne Verwendung der Dataproc jobs API gesendet werden, z. B. wenn ein Job direkt über spark-submit auf einem Clusterknoten gesendet oder ein Jupyter- oder Zeppelin-Notebook verwendet wird. Diese Jobs haben keine Dataproc-Job-IDs oder ‑Treiber.

Spark-Treiberprotokolle

In den folgenden Tabellen wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel von Spark-Treiberprotokollen für Jobs aufgeführt, die nicht über die Dataproc jobs API gesendet wurden.

spark:
spark.submit.deployMode
Treiberausgabe
Client
  • Zum Client gestreamt
  • Nicht in Cloud Storage
  • Nicht in „Logging“
Cluster
  • Nicht an den Client gestreamt
  • Nicht in Cloud Storage
  • In Logging yarn-userlogs unter der Clusterressource

Spark-Ausführer-Logs

Wenn Spark-Jobs nicht über die Dataproc jobs API gesendet werden, finden Sie die Executor-Logs unter „Logging“ yarn-userlogs unter der Clusterressource.

Jobausgabe ansehen

Sie können über die Google Cloud Console, die gcloud CLI, Cloud Storage oder Logging auf die Dataproc-Jobausgabe zugreifen.

Console

Zum Aufrufen der Jobausgabe rufen Sie den Dataproc-Abschnitt Jobs für Ihr Projekt auf und klicken auf die Job-ID.

Während der Ausführung des Jobs wird die Jobausgabe regelmäßig mit neuen Inhalten aktualisiert.

gcloud-Befehl

Wenn Sie einen Job mit dem Befehl gcloud dataproc jobs submit senden, wird die Jobausgabe in der Konsole angezeigt. Sie können die Ausgabe zu einem späteren Zeitpunkt auf einem anderen Computer oder in einem neuen Fenster wieder aufrufen, indem Sie die ID des Jobs an den Befehl gcloud dataproc jobs wait übergeben. Die Job-ID ist eine GUID wie z. B. 5c1754a5-34f7-4553-b667-8a1199cb9cab . Hier ein Beispiel:

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

Die Jobausgabe wird in Cloud Storage entweder im Staging-Bucket oder in dem Bucket gespeichert, den Sie beim Erstellen des Clusters angegeben haben. Ein Link zur Jobausgabe in Cloud Storage wird im Feld Job.driverOutputResourceUri bereitgestellt. Dieses erhalten Sie über:

  • Eine API-Anfrage des Typs jobs.get
  • den Befehl gcloud dataproc jobs describe job-id.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...
    

Logging

Dataproc-Logs