Lebensdauer eines Dataproc-Jobs

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

  1. Der Nutzer sendet einen Job an Dataproc.
  2. 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.
  3. Sobald der Agent einen Job übernommen hat, prüft er, ob auf dem Masterknoten des Dataproc-Clusters 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.
  4. Wenn genügend Ressourcen verfügbar sind, startet der dataproc-Agent den Jobtreiberprozess.
    • In dieser Phase werden in der Regel eine oder mehrere Anwendungen in Apache Hadoop YARN ausgeführt. Yarn-Anwendungen werden jedoch möglicherweise erst gestartet, wenn der Treiber das Scannen der Cloud Storage-Verzeichnisse oder andere Startaufgaben abgeschlossen hat.
  5. Der dataproc-Agent sendet regelmäßig Updates zum Jobfortschritt, zu Clustermesswerten und zu Yarn-Anwendungen, die mit dem Job verknüpft sind, an Dataproc (siehe Monitoring und Fehlerbehebung für Jobs).
  6. 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.
  7. Der Treiber wird beendet. Der dataproc-Agent meldet den Abschluss an Dataproc.
    • Dataproc meldet für den Job den Status DONE.

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.

Weitere Informationen