Dataproc-Jobausgabe und -Logs

Wenn Sie einen Dataproc-Job senden, geschieht Folgendes: Dataproc erfasst automatisch die und stellt sie Ihnen zur Verfügung. Das bedeutet, dass Sie die Jobausgabe schnell überprüfen, ohne Verbindung zum Cluster während der Jobausführung oder kompliziertes Log prüfen Dateien.

Spark-Logs

Es gibt zwei Arten von Spark-Protokollen: Spark-Treiberprotokolle und Spark-Executor-Protokolle. Spark-Treiberlogs enthalten Jobausgaben. Spark Executor-Logs enthalten einen ausführbaren Job oder Launcher-Ausgabe, z. B. spark-submit „Submitted application xxx“ (Eingereichte Bewerbung xxx) Nachricht und kann bei der Fehlersuche bei Jobfehlern hilfreich sein.

Der Dataproc-Jobtreiber, der sich vom Spark-Treiber unterscheidet, ist ein Launcher für viele Arten von Dienstleistungen. Beim Starten von Spark-Jobs wird er als Wrapper für die zugrunde liegende ausführbare Datei spark-submit, die das Spark startet . Der Spark-Treiber führt den Job im Dataproc-Cluster in Spark aus. client- oder cluster-Modus:

  • Modus client: Der Spark-Treiber führt den Job im Prozess spark-submit aus. und Spark-Logs an den Dataproc-Jobtreiber 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-Jobattribute – Ü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. Wenn true, werden YARN-Containerlogs des Jobs zugeordnet mit der Jobressource beginnen. wenn false, Job-YARN-Containerlogs mit der Clusterressource verknüpft sind.
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 werden die Auswirkungen verschiedener Property-Einstellungen auf die Property Ziel der Dataproc-Job-Treiberausgabe beim Senden von Jobs über die Dataproc jobs API, einschließlich der Jobübermittlung über den Google Cloud Console, gcloud CLI und Cloud-Clientbibliotheken

Die aufgeführten Dataproc- und Spark-Attribute können beim Erstellen eines Clusters mit dem Flag --properties festgelegt werden und gelten dann für alle Spark-Jobs, die auf dem Cluster ausgeführt werden. Spark-Attribute 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 gelten dann nur für den Job.

Treiberausgabe des Dataproc-Jobs

In den folgenden Tabellen sind die Auswirkungen unterschiedlicher Property-Einstellungen auf die Property Ziel der Treiberausgabe des Dataproc-Jobs.

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

Spark-Treiberprotokolle

In den folgenden Tabellen sind die Auswirkungen unterschiedlicher Property-Einstellungen auf die Property Ziel von Spark-Treiberlogs.

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"
  • An Client gestreamt
  • In Cloud Storage unter der von Dataproc generierten driverOutputResourceUri
  • Nicht in Logging
Client wahr "true" oder "false"
  • An Client gestreamt
  • In Cloud Storage auf dem von Dataproc generierten driverOutputResourceUri
  • In Logging: dataproc.job.driver unter der Jobressource
Cluster false (Standardeinstellung) false
  • Nicht an 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-Executor-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-Protokoll
false (Standardeinstellung) In Logging: yarn-userlogs unter der Clusterressource
wahr In Logging unter der Jobressource dataproc.job.yarn.container

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

In diesem Abschnitt werden die Auswirkungen verschiedener Property-Einstellungen auf die Ziel der Spark-Joblogs beim Senden von Jobs ohne die Dataproc jobs API zu verwenden, z. B. beim Senden mithilfe von spark-submit oder einem Jupyter-Objekt direkt auf einem Clusterknoten erstellen. oder Zeppelin-Notebook. Diese Jobs haben keine Dataproc-Job-IDs oder ‑Treiber.

Spark-Treiberprotokolle

In den folgenden Tabellen sind die Auswirkungen unterschiedlicher Property-Einstellungen auf die Property Ziel von Spark-Treiberlogs für Jobs, die nicht über die Dataproc jobs API gesendet wurden.

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

Spark-Executor-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 in der Google Cloud Console auf die Dataproc-Jobausgabe zugreifen. über die gcloud CLI, Cloud Storage oder Logging.

Console

Rufen Sie die Dataproc-Anwendung Ihres Projekts auf, um die Jobausgabe anzusehen Karriere und Beruf und dann auf die Job-ID, um die Jobausgabe aufzurufen.

Wenn der Job ausgeführt wird, wird die Jobausgabe regelmäßig mit neuen Inhalten.

gcloud-Befehl

Wenn Sie einen Job mit der gcloud Dataproc-Jobs 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 zu die Jobausgabe in Cloud Storage im Job.driverOutputResourceUri zurückgegeben von:

  • 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