Auf dieser Seite wird die Schrittfolge beim Senden, Ausführen und Abschließen von Dataproc-Jobs beschrieben. Es werden die Jobdrosselung und die Fehlerbehebung für Jobs erörtert.
Ablauf von Dataproc-Jobs
- Der Nutzer sendet den Job an Dataproc.
- JobStatus.State ist als
PENDING
gekennzeichnet.
- JobStatus.State ist als
- Der Job wartet darauf, vom
dataproc
-Agent übernommen zu werden.- Wenn der Job übernommen wurde, ist JobStatus.State als
RUNNING
gekennzeichnet. - Wenn der Job aufgrund eines Agent-Fehlers, eines Compute Engine-Netzwerkfehlers oder aus einem anderen Grund nicht übernommen wurde, ist er als
ERROR
gekennzeichnet.
- Wenn der Job übernommen wurde, ist JobStatus.State als
- Wenn der Agent einen Job erhält, überprüft er, ob auf dem Dataproc-Cluster mit dem Masterknoten genügend Ressourcen verfügbar sind, um den Treiber zu starten.
- Falls nicht genug Ressourcen verfügbar sind, wird der Job verzögert (gedrosselt).
JobStatus.Substate zeigt für den Job
QUEUED
an und Job.JobStatus.details enthält Informationen zum Grund für die Verzögerung.
- Falls nicht genug Ressourcen verfügbar sind, wird der Job verzögert (gedrosselt).
JobStatus.Substate zeigt für den Job
- Wenn genügend Ressourcen verfügbar sind, startet der Agent
dataproc
den Jobtreiberprozess.- In dieser Phase werden in der Regel eine oder mehrere Anwendungen in Apache Hadoop YARN ausgeführt. Yarn-Anwendungen werden aber möglicherweise erst gestartet, wenn der Treiber das Scannen der Cloud Storage-Verzeichnisse oder andere Startjobaufgaben abgeschlossen hat.
- Der
dataproc
-Agent sendet an Cloud Dataproc regelmäßig Aktualisierungen zum Jobfortschritt, zu Clustermesswerten und zu Yarn-Anwendungen, die mit dem Job zusammenhängen (siehe Monitoring und Fehlerbehebung für Jobs). - Yarn-Anwendungen werden abgeschlossen.
- Der Job wird weiterhin als
RUNNING
gemeldet, während der Treiber Aufgaben für den Jobabschluss wie die Materialisierung von Sammlungen ausführt. - Ein nicht behandelter oder nicht erfasster Fehler im Main-Thread kann dazu führen, dass der Treiber einen Zombiestatus hat: Er ist als
RUNNING
gekennzeichnet, ohne dass Informationen zur Ursache des Fehlers vorliegen.
- Der Job wird weiterhin als
- Der Treiber wird beendet.
Der
dataproc
-Agent meldet den Abschluss an Dataproc.- Dataproc meldet für den Job den Status
DONE
.
- Dataproc meldet für den Job den Status
Gleichzeitige Jobverarbeitung
Sie können die maximale Anzahl gleichzeitiger Dataproc-Jobs mit dem Clusterattribut dataproc:dataproc.scheduler.max-concurrent-jobs konfigurieren, wenn Sie einen Cluster erstellen. Wenn dieser Attributwert nicht festgelegt ist, wird die Obergrenze für gleichzeitige Jobs als max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5)
berechnet. masterMemoryMb
wird vom Maschinentyp der Master-VM bestimmt. masterMemoryMbPerJob
ist standardmäßig 1024
, kann aber bei der Clustererstellung mit dem Clusterattribut dataproc:dataproc.scheduler.driver-size-mb konfiguriert werden.
Monitoring und Fehlerbehebung für Jobs
Verwenden Sie die Google Cloud CLI, die Dataproc REST API und die Google Cloud Console, um Dataproc-Jobs zu analysieren und Fehler zu beheben.
gcloud-Befehl
So prüfen Sie den Status eines laufenden Jobs:
gcloud dataproc jobs describe job-id \ --region=region
Informationen zum Aufrufen der Job-Treiberausgabe finden Sie unter Job-Ausgabe ansehen.
REST API
Rufen Sie jobs.get auf, um die Felder JobStatus.State, JobStatus.Substate, JobStatus.details und YarnApplication zu untersuchen.
Console
Informationen zum Aufrufen der Job-Treiberausgabe finden Sie unter Job-Ausgabe ansehen.
Wählen Sie zum Aufrufen des Logs des Dataproc-Agents in Logging in der Clusterauswahl des Log-Explorers Dataproc-Cluster → Clustername → Cluster-UUID aus.

Wählen Sie dann mit der Logauswahl google.dataproc.agent
Logs aus.

Joblogs in Logging ansehen
Wenn ein Job fehlschlägt, können Sie auf Joblogs in Logging zugreifen.
Bestimmen, wer einen Job gesendet hat
In den Jobdetails: Im Feld submittedBy
können Sie einsehen, wer diesen Job gesendet hat. Diese Jobausgabe zeigt beispielsweise, dass user@domain
den Beispieljob an einen Cluster gesendet hat.
... placement: clusterName: cluster-name clusterUuid: cluster-uuid reference: jobId: job-uuid projectId: project status: state: DONE stateStartTime: '2018-11-01T00:53:37.599Z' statusHistory: - state: PENDING stateStartTime: '2018-11-01T00:33:41.387Z' - state: SETUP_DONE stateStartTime: '2018-11-01T00:33:41.765Z' - details: Agent reported job success state: RUNNING stateStartTime: '2018-11-01T00:33:42.146Z' submittedBy: user@domain
Fehlermeldungen
- Aufgabe wurde nicht abgerufen: Zeigt an, dass der Dataproc-Agent auf dem Masterknoten die Aufgabe nicht von der Steuerungsebene abrufen konnte. Dies ist oft auf fehlenden Speicher (Out-Of-Memory, OOM) oder auf Netzwerkprobleme zurückzuführen. Wenn der Job zuvor erfolgreich ausgeführt wurde und Sie die Einstellungen für die Netzwerkkonfiguration nicht geändert haben, ist OOM wahrscheinlich die Ursache. Eventuell werden viele Jobs gleichzeitig ausgeführt, oder die Treiber einiger Jobs verbrauchen viel Arbeitsspeicher (Beispiel: Jobs, die große Datasets in den Speicher laden).