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-Protokolle

Es gibt zwei Arten von Spark-Logs: Spark-Treiberlogs und Spark-Executor-Logs. 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-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 im Spark-client- oder cluster-Modus aus:

  • 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-Treiber Für den Dataproc-Jobtreiber sind keine Logs 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, die Job-Treiberausgabe in Logging ist, die mit der Jobressource verknüpft sind. wann false, Fahrer Die Ausgabe befindet sich nicht in Logging.
Hinweis: Die folgenden Einstellungen für Clusterattribute sind ebenfalls erforderlich, um und werden standardmäßig festgelegt, wenn ein Cluster wird erstellt: 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.

Mit der Dataproc jobs API gesendete Spark-Jobs

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 aufgelisteten Dataproc- und Spark-Attribute kann beim Erstellen eines Clusters mit dem Flag --properties festgelegt werden und gilt auf alle im Cluster ausgeführten Spark-Jobs; Spark-Attribute können auch mit der --properties (ohne das Präfix „spark:“), wenn ein Job an die Dataproc jobs API gesendet und nur auf den Job angewendet.

Dataproc-Job-Treiberausgabe

In den folgenden Tabellen sehen Sie, wie sich verschiedene 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 auf dem von Dataproc generierten driverOutputResourceUri
  • Nicht in Logging
wahr
  • Zum 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 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"
  • An Client gestreamt
  • In Cloud Storage auf dem 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 Client gestreamt
  • Nicht in Cloud Storage
  • In Logging: dataproc.job.yarn.container unter der Jobressource

Spark-Ausführer-Logs

In den folgenden Tabellen sehen Sie, wie sich verschiedene Property-Einstellungen auf die Property Ziel von Spark-Executor-Logs.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Executor-Protokoll
false (Standardeinstellung) In 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 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-Treiberlogs

In den folgenden Tabellen sehen Sie, wie sich verschiedene 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 gespeichert, entweder den Staging-Bucket oder den Bucket, 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

Siehe Dataproc-Logs Informationen zum Aufrufen der Dataproc-Jobausgabe in Logging.