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 einen 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
- Nachdem der Agent einen Job übernommen hat, prüft er, ob auf dem Masterknoten des Cloud Dataproc-Clusters genug 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 genug Ressourcen verfügbar sind, startet der
dataproc
-Agent den Jobtreiberprozess.- In diesem Stadium werden in Hadoop Apache YARN in der Regel eine oder mehrere Anwendungen ausgeführt. Yarn-Anwendungen werden aber möglicherweise erst gestartet, wenn der Treiber das Scannen der Cloud Storage-Verzeichnisse oder andere anfängliche Jobaufgaben abgeschlossen hat.
- Der
dataproc
-Agent sendet an Cloud Dataproc regelmäßig Updates 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.