Dataproc-Jobausgabe und -Logs

Wenn Sie einen Dataproc-Job senden, erfasst Dataproc automatisch die Jobausgabe und stellt sie Ihnen zur Verfügung. Das bedeutet, dass Sie die Jobausgabe schnell überprüfen können, ohne eine Verbindung zum Cluster aufrechterhalten zu müssen, während Ihre Jobs ausgeführt werden oder komplizierte Logdateien durchgehen müssen.

Spark-Logs

Es gibt zwei Arten von Spark-Logs: Spark-Treiberlogs und Spark-Executor-Logs. Spark-Treiberlogs enthalten Jobausgaben; Spark-Executor-Logs enthalten ausführbare Jobs oder Launcher-Ausgaben, wie die Meldung spark-submit "Submitted application xxx" (Gesendete Anwendung xxx) und können bei der Fehlerbehebung von Jobfehlern hilfreich sein.

Der Dataproc-Jobtreiber, der sich vom Spark-Treiber unterscheidet, ist ein Launcher für viele Jobtypen. Beim Starten von Spark-Jobs wird es als Wrapper für die zugrunde liegende ausführbare spark-submit-Datei ausgeführt, die den Spark-Treiber startet. Der Spark-Treiber führt den Job auf dem Dataproc-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 Dataproc-Jobtreiber gesendet.

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

Dataproc- und Spark-Jobattribute – Übersicht

Attribut Wert Standard Beschreibung
dataproc:dataproc.logging.stackdriver.job.driver.enable Richtig oder falsch? false Muss bei der Clustererstellung festgelegt werden. Bei true befindet sich die Jobtreiberausgabe in Logging und ist mit der Jobressource verknüpft. Bei false befindet sich die Jobtreiberausgabe 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 Richtig oder falsch? false Muss bei der Clustererstellung festgelegt werden. Bei true werden Job-YARN-Containerlogs der Jobressource zugeordnet, bei false der Clusterressource.
spark:spark.submit.deployMode Client oder Cluster client Steuert den Spark-Modus client oder cluster.

Mit der Dataproc API jobs gesendete Spark-Jobs

In den Tabellen in diesem Abschnitt werden die Auswirkungen unterschiedlicher Attributeinstellungen auf das Ziel der Dataproc-Jobtreiberausgabe aufgeführt, wenn Jobs über die Dataproc jobs API gesendet werden, einschließlich der Übertragung von Jobs über die Google Cloud Console, die 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 für alle im Cluster ausgeführten Spark-Jobs. Spark-Attribute können auch mit dem Flag --properties (ohne das Präfix „spark:“) festgelegt werden, wenn ein Job an die Dataproc API jobs gesendet wird. Sie gelten nur für den Job.

Treiberausgabe des Dataproc-Jobs

In den folgenden Tabellen werden die Auswirkungen unterschiedlicher Attributeinstellungen auf das Ziel der Dataproc-Jobtreiberausgabe aufgeführt.

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

Spark-Treiberlogs

In den folgenden Tabellen werden die Auswirkungen unterschiedlicher Attributeinstellungen 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) Richtig oder falsch?
  • An Kunden gestreamt
  • In Cloud Storage im von Dataproc generierten driverOutputResourceUri
  • Nicht in Logging
client wahr Richtig oder falsch?
  • An Kunden gestreamt
  • In Cloud Storage im von Dataproc generierten driverOutputResourceUri
  • In Logging: dataproc.job.driver unter der Jobressource
Cluster false (Standardeinstellung) false
  • Nicht an den Kunden gestreamt
  • Nicht in Cloud Storage
  • In Logging yarn-userlogs unter der Clusterressource
Cluster wahr wahr
  • Nicht an den Kunden gestreamt
  • Nicht in Cloud Storage
  • In Logging: dataproc.job.yarn.container unter der Jobressource

Spark-Executor-Logs

In den folgenden Tabellen werden die Auswirkungen unterschiedlicher Attributeinstellungen 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 Dataproc jobs API gesendet wurden

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

Spark-Treiberlogs

In den folgenden Tabellen werden die Auswirkungen unterschiedlicher Attributeinstellungen auf das Ziel von Spark-Treiberlogs für Jobs aufgeführt, die nicht über die Dataproc jobs API gesendet werden.

spark:
spark.submit.deployMode
Treiberausgabe
client
  • An Kunden gestreamt
  • Nicht in Cloud Storage
  • Nicht in Logging
Cluster
  • Nicht an den Kunden 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, befinden sich die Executor-Logs in Logging yarn-userlogs unter der Clusterressource.

Jobausgabe ansehen

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

Console

Rufen Sie dazu den Dataproc-Bereich Jobs Ihres Projekts auf und klicken Sie auf die Job-ID.

Wenn der Job ausgeführt wird, 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 aufnehmen, indem Sie die ID des Jobs an den Befehl gcloud dataproc jobswait ü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, das wie folgt zurückgegeben wird:

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

Logging

Informationen zum Aufrufen der Dataproc-Jobausgabe in Logging finden Sie unter Dataproc-Logs.