Übersicht
Nachdem Dataproc-Cluster gelöscht wurden, möchten Nutzer möglicherweise Jobverlaufsdateien zu Diagnose- oder anderen Zwecken aufrufen. Der Dataproc Persistent History Server (PHS) bietet eine Benutzeroberfläche, um den Jobverlauf für Jobs aufzurufen, die in aktiven oder gelöschten Dataproc-Clustern ausgeführt werden.
Der Persistent History Server wird in einem Dataproc-Cluster mit einzelnem Knoten ausgeführt und speichert Dateien mit Jobverlauf in Cloud Storage. Außerdem unterstützt er MapReduce-, Spark- und Pig-Jobs. Dieses Feature ist in Dataproc Image Version 1.5 und höher verfügbar.

Nichtflüchtigen Verlaufsserver einrichten
Geben Sie beim Erstellen eines PHS-Einzel-Knoten-Clusters die folgenden Flag- und Clusterattribute an:
--enable-component-gateway
: Erforderliches Flag. Dieses Flag muss verwendet werden, um das Component Gateway zu aktivieren.spark:spark.history.fs.logDirectory
: Erforderliches Clusterattribut, um den nichtflüchtigen Spark-Jobverlauf zu aktivieren. Dieses Attribut gibt den Cloud Storage-Bucket und die Verzeichnisse an, in denen der PHS auf Spark-Jobverlaufslogs zugreift, die von Jobclustern geschrieben wurden (siehe Dataproc-Jobcluster einrichten). Verwenden Sie Sternchen nicht als Platzhalter (z. B.gs://bucket-name/*/spark-job-history
), um bestimmte Bucket-Verzeichnisse anzugeben, damit der PHS-Server mehrere Verzeichnisse im angegebenen Bucket abgleichen kann, in die verschiedene Jobcluster geschrieben wurden. Siehe Hinweis zur Effizienz: Mid-Path-Platzhalter verwenden.mapred:mapreduce.jobhistory.read-only.dir-pattern
: Erforderliches Clusterattribut, um den nichtflüchtigen MapReduce-Jobverlauf zu aktivieren. Dieses Attribut gibt die Cloud Storage-Bucket-Verzeichnisse an, in denen die PHS auf MapReduce-Jobverlaufslogs zugreifen, die von Jobclustern geschrieben wurden (siehe Jobcluster einrichten). Statt bestimmte Bucket-Verzeichnisse anzugeben, verwenden Sie Sternchen als Platzhalter (z. B.gs://bucket-name/*/mapreduce-job-history/done
), damit der PHS-Server mehrere Verzeichnisse im angegebenen Bucket abzugleichen, die mit verschiedenen Jobclustern geschrieben werden (siehe Hinweis zur Effizienz: Mid-Path-Platzhalter verwenden)
- Führen Sie den Befehl
gcloud dataproc clusters create
aus, um einen Dataproc-PHS-Cluster mit einem einzelnen Knoten zu erstellen.gcloud dataproc clusters create cluster-name \ --single-node \ --region=region \ --enable-component-gateway \ --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done'
Dataproc-Jobcluster einrichten
Sie geben das folgende Flag und die Clusterattribute an, wenn Sie einen Dataproc-Cluster erstellen, der Jobs ausführt und Joblogs speichert, auf die ein Persistent History Server-Cluster zugreifen und diesen anzeigen kann.
--enable-component-gateway
: Erforderliches Flag. Dieses Flag muss verwendet werden, um das Component Gateway zu aktivieren.dataproc:job.history.to-gcs.enabled
: Erforderliches Clusterattribut. Dieses Attribut muss auf „true“ gesetzt sein, um den Jobverlaufsspeicher in Cloud Storage zu aktivieren.spark:spark.history.fs.logDirectory
undspark:spark.eventLog.dir
Optionale Clusterattribute. Diese Flags geben den Speicherort an, an dem Spark-Jobverlauf bzw. -Ereignislogs geschrieben werden sollen. Bei Verwendung müssen beide Flags festgelegt sein und auf Verzeichnisse im selben Bucket verweisen.
Beispielattribute:
spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history, spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
mapred:mapreduce.jobhistory.intermediate-done-dir
undmapred:mapreduce.jobhistory.done-dir
: Optionale Clusterattribute. Diese Flags geben den Cloud Storage-Speicherort an, um Zwischen- und endgültige MapReduce-Jobverlaufsdateien zu schreiben. Bei Verwendung müssen beide Flags festgelegt sein und auf Verzeichnisse im selben Bucket verweisen. Im Zwischenspeichermapreduce.jobhistory.intermediate-done-dir
wird vorübergehend gespeichert. Die Zwischendateien werden nach Abschluss des MapReduce-Jobs an den Speicherortmapreduce.jobhistory.done-dir
verschoben.
Beispielattribute:
mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done, mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
- Mit den folgenden Properties wird das Cloud Storage-Flausenverhalten für Ereignislogs für 1.5 und höher gesteuert. Hinweis: Die Standardkonfiguration dieser Attribute ermöglicht die Anzeige von laufenden Jobs in der Spark History Server-UI für Cluster, die Cloud Storage zum Speichern von Spark-Ereignislogs verwenden.
spark:spark.history.fs.gs.outputstream.type
(default:
BASIC) spark:spark.history.fs.gs.outputstream.sync.min.interval.ms
(default:5000ms
).
- Führen Sie den Befehl
gcloud dataproc clusters create
aus, um einen Jobcluster zu erstellen. Der Cluster muss mit Image 1.5 oder höher erstellt werden. Hinweis: Zur besseren Lesbarkeit werden die Flag-Werte--property
unten in separaten Zeilen angezeigt. Wenn Sie den Befehl ausführen, müssen alle kommagetrennten--property
-Flag-Werte in einer Zeile angegeben werden.gcloud dataproc clusters create cluster-name \ --region=region \ --enable-component-gateway \ --properties='dataproc:job.history.to-gcs.enabled=true, spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history, spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history, mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done, mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
Sie können den folgenden vereinfachten Befehl ausführen, damit Dataproc die Cloud Storage-Speicherorte für Jobverlaufsdateien einrichtet.
gcloud dataproc clusters create cluster-name \ --region=region \ --enable-component-gateway \ --properties='dataproc:job.history.to-gcs.enabled=true'
Wenn Sie den oben vereinfachten Befehl verwenden, werden Jobverlaufsdateien im Dataproc-Temp-Bucket in den Standardverzeichnissen gespeichert: /spark-job-history
, /mapreduce-job-history/done
, und /mapreduce-job-history/intermediate-done
.
Der temporäre Cloud Storage-Speicherort wird in der Ausgabe des Befehls gcloud dataproc clusters describe cluster-name --region=region
aufgeführt. Der Cloud Storage-Speicherort der Jobverlaufsdateien wird auch in den Dateien /etc/spark/conf/spark-defaults.conf
und /etc/hadoop/conf/mapred-site.xml
des Clusters aufgeführt.
Beispiele für SSH-Verbindungen in den Master-Knoten des Jobclusters:
cat /etc/spark/conf/spark-defaults.conf ... spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml ... <property> <name>mapreduce.jobhistory.done-dir</name> <value>gs://temp-bucket/mapreduce-job-history/done</value> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value> </property>
Component Gateway-Verlaufsserver-Links
Rufen Sie in der Cloud Console die Seite Clusterdetails des PHS-Clusters mit einem einzelnen Knoten auf und klicken Sie dann auf den Tab WEB-INTERFACES. Klicken Sie unter Component Gateway auf "MapReduce-Jobverlauf" oder "Spark-History Server", um die UIs für MapReduce und Spark-Jobverlauf aufzurufen.

Benutzeroberfläche des Spark-Verlaufsservers
Der folgende Screenshot zeigt die UI des Spark-History Servers mit Links zu Spark-Jobs, die auf job-cluster-1 und job-cluster-2 ausgeführt werden, nachdem die spark.history.fs.logDirectory
und spark:spark.eventLog.dir
der Jobcluster und die spark.history.fs.logDirectory
-Speicherorte des PHS-Clusters folgendermaßen erstellt wurden:
job-cluster-1 | gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history |
job-cluster-2 | gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history |
phs-cluster | gs://example-cloud-storage-bucket/*/spark-job-history |

Suche nach App-Namen
Sie können Jobs nach Anwendungsname in der Benutzeroberfläche des Spark-Verlaufsservers auflisten, indem Sie den Namen in das Suchfeld eingeben. App-Namen können auf eine der folgenden Arten festgelegt werden (nach Priorität aufgelistet):
- Wird im Anwendungscode beim Erstellen des Spark-Kontexts festgelegt
- Wird vom Attribut spark.app.name festgelegt, wenn der Job gesendet wird
- Setzen Sie von Dataproc den vollständigen REST-Ressourcennamen für den Job (
projects/project-id/regions/region/jobs/job-id
).

Ereignisprotokolle
Die Spark History Server-UI bietet eine Schaltfläche Ereignislog, auf die Sie klicken können, um Spark-Ereignislogs herunterzuladen. Diese Logs sind nützlich, um den Lebenszyklus der Spark-Anwendung zu untersuchen.
Spark-Jobs
Spark-Anwendungen sind in mehrere Jobs unterteilt, die weiter in mehrere Phasen unterteilt werden. Jede Phase kann mehrere Aufgaben enthalten, die auf Executor-Knoten (Workern) ausgeführt werden.

Klicken Sie in der UI auf eine Spark-Anwendungs-ID, um die Seite "Spark-Jobs" zu öffnen, die eine Ereigniszeitachse und eine Zusammenfassung der Jobs innerhalb der Anwendung enthält.
Klicken Sie auf einen Job, um die Seite "Jobdetails" mit einem gerichteten azyklischen Graphen (Directed Acyclic Graph, DAG) und einer Zusammenfassung der Jobphasen zu öffnen.
Klicken Sie auf eine Phase oder verwenden Sie den Tab "Phasen", um eine Phase auszuwählen, um die Seite "Phasendetails" zu öffnen.
Stage Details umfassen eine DAG-Visualisierung, eine Ereigniszeitachse und Messwerte für die Aufgaben innerhalb der Phase. Auf dieser Seite können Sie Probleme mit strangulierten Aufgaben, Planerverzögerungen und Speichermangel beheben. Der DAG-Visualisierer zeigt die Codezeile, aus der die Phase abgeleitet ist, sodass Sie Probleme wieder im Code verfolgen können.
Klicken Sie auf den Tab Executors für Informationen über die Treiber- und Executor-Knoten der Spark-Anwendung.
Wichtige Informationen auf dieser Seite umfassen die Anzahl der Kerne und die Anzahl der Aufgaben, die auf jedem Executor ausgeführt wurden.