Jobausgabe und ‑logs

Wenn Sie einen Managed Service for Apache Spark-Job senden, erfasst Managed Service for Apache Spark 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, wenn Jobs ausgeführt oder komplizierte Log-Dateien analysiert werden.

Spark-Logs

Es gibt zwei Arten von Spark-Logs: Spark-Treiberlogs und Spark-Executor-Logs. Spark-Treiberlogs enthalten die Jobausgabe. Spark-Executor-Logs enthalten die ausführbare Datei des Jobs oder die Launcher-Ausgabe, z. B. die Meldung spark-submit „Submitted application ...“ („Anwendung gesendet“). Sie können hilfreich sein, um Jobfehler zu beheben.

Der Job-Treiber von Managed Service for Apache Spark, der sich vom Spark-Treiber unterscheidet, ist ein Launcher für viele Jobtypen. Beim Starten von Spark-Jobs wird er als Wrapper für die zugrunde liegende ausführbare Datei spark-submit ausgeführt, die den Spark-Treiber startet. Der Spark-Treiber führt den Job im Managed Service for Apache Spark-Cluster im Spark-Modus client oder cluster aus:

  • client-Modus: Der Spark-Treiber führt den Job im spark-submit-Prozess aus und Spark-Logs werden an den Jobtreiber von Managed Service for Apache Spark gesendet.

  • cluster-Modus: Der Spark-Treiber führt den Job in einem YARN-Container aus. Spark-Treiberlogs sind für den Jobtreiber von Managed Service for Apache Spark nicht verfügbar.

Übersicht über Managed Service for Apache Spark und Spark-Job-Eigenschaften

Attribut Wert Default Beschreibung
dataproc:dataproc.logging.stackdriver.job.driver.enable "true" oder "false" falsch Muss beim Erstellen des Clusters festgelegt werden. Wenn true, befindet sich die Job-Treiberausgabe in Logging, verknüpft mit der Jobressource. Wenn false, befindet sich die Job-Treiberausgabe nicht in Logging.
Hinweis: Die folgenden Clusterattribut-Einstellungen sind ebenfalls erforderlich, um Jobtreiberlogs 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" falsch Muss beim Erstellen des Clusters festgelegt werden. Bei true werden Job-YARN-Containerlogs der Jobressource zugeordnet. Bei false werden Job-YARN-Containerlogs der Clusterressource zugeordnet.
spark:spark.submit.deployMode Client oder Cluster Client Steuert den Spark-Modus client oder cluster.

Spark-Jobs, die über die jobs API von Managed Service for Apache Spark gesendet werden

In den Tabellen in diesem Abschnitt wird die Auswirkung verschiedener Eigenschaftseinstellungen auf das Ziel der Ausgabedaten des Managed Service for Apache Spark-Jobtreibers aufgeführt, wenn Jobs über die Managed Service for Apache Spark-jobs API gesendet werden. Dazu gehört auch das Senden von Jobs über dieGoogle Cloud Console, die gcloud CLI und die Cloud-Clientbibliotheken.

Die aufgeführten Managed Service for Apache Spark- und Spark-Properties können beim Erstellen eines Clusters mit dem Flag --properties festgelegt werden und gelten für alle Spark-Jobs, die im 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 jobs-API von Managed Service for Apache Spark gesendet wird. Sie gelten dann nur für den Job.

Ausgabe des Jobtreibers für Managed Service for Apache Spark

In den folgenden Tabellen wird die Auswirkung verschiedener Property-Einstellungen auf das Ziel der Ausgabe des Job-Treibers von Managed Service for Apache Spark aufgeführt.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Ausgabe
false (Standardeinstellung)
  • An Client gestreamt
  • In Cloud Storage im von Managed Service for Apache Spark generierten driverOutputResourceUri
  • Nicht in der Protokollierung
wahr
  • An Client gestreamt
  • In Cloud Storage im von Managed Service for Apache Spark generierten driverOutputResourceUri
  • In Logging: dataproc.job.driver unter der Jobressource.

Spark-Treiberlogs

In den folgenden Tabellen wird die Auswirkung verschiedener Attribut-Einstellungen auf das Ziel von Spark-Treiberlogs 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 im von Managed Service for Apache Spark generierten driverOutputResourceUri
  • Nicht in der Protokollierung
Client wahr "true" oder "false"
  • An Client gestreamt
  • In Cloud Storage im von Managed Service for Apache Spark generierten driverOutputResourceUri
  • In Logging: dataproc.job.driver unter der Jobressource
Cluster false (Standardeinstellung) falsch
  • 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 Eigenschaftseinstellungen auf das Ziel von Spark-Executor-Logs aufgeführt.

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

Spark-Jobs, die ohne die jobs API von Managed Service for Apache Spark gesendet wurden

In diesem Abschnitt wird die Auswirkung verschiedener Eigenschaftseinstellungen auf das Ziel von Spark-Joblogs aufgeführt, wenn Jobs ohne Verwendung der Managed Service for Apache Spark-API jobs gesendet werden, z. B. wenn ein Job direkt auf einem Clusterknoten mit spark-submit oder mit einem Jupyter- oder Zeppelin-Notebook gesendet wird. Diese Jobs haben keine Managed Service for Apache Spark-Job-IDs oder -Treiber.

Spark-Treiberlogs

In den folgenden Tabellen ist die Auswirkung verschiedener Property-Einstellungen auf das Ziel von Spark-Treiberlogs für Jobs aufgeführt, die nicht über die jobs API des Managed Service for Apache Spark gesendet wurden.

spark:
spark.submit.deployMode
Treiberausgabe
Client
  • An Client gestreamt
  • Nicht in Cloud Storage
  • Nicht in der Protokollierung
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 jobs API von Managed Service for Apache Spark gesendet werden, befinden sich Executor-Logs in Logging yarn-userlogs unter der Clusterressource.

Jobausgabe ansehen

Sie können auf die Ausgabe von Managed Service for Apache Spark-Jobs in der Google Cloud Console, der gcloud CLI, Cloud Storage oder Logging zugreifen.

Console

Zum Aufrufen der Jobausgabe rufen Sie den Abschnitt Jobs von Managed Service for Apache Spark 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

Informationen zum Ansehen der Ausgabe von Managed Service for Apache Spark-Jobs in Logging finden Sie unter Managed Service for Apache Spark-Logs.