Joberstellung und -ausführung – Übersicht

In diesem Dokument werden der Ausführungsprozess und die Erstellungsoptionen für Jobs erläutert. Mit Batchjobs können Sie Batchverarbeitungsarbeitslasten in Google Cloud ausführen. Informationen zu den Komponenten eines Jobs und zu den Voraussetzungen für die Verwendung von Batch finden Sie unter Erste Schritte mit Batch.

So funktioniert die Erstellung und Ausführung von Jobs

Zur Verwendung von Batch erstellen Sie einen Job, der Ihre Arbeitslast und deren Anforderungen angibt. Anschließend führt Batch ihn automatisch aus.

In den folgenden Abschnitten wird die Erstellung und Ausführung von Jobs im Detail beschrieben:

  • Joblebenszyklus: Informieren Sie sich über die Status, die ein Job vom Erstellen bis zum Löschen durchläuft.
  • Jobwarteschlange und -planung: Lernen Sie die Faktoren kennen, die sich darauf auswirken, wie lange es dauert, bis ein Job ausgeführt wird.
  • Jobausführung: Verstehen, wie die Aufgaben eines Jobs während der Ausführung auf seinen Ressourcen ausgeführt werden.

Joblebenszyklus

In diesem Abschnitt werden der Lebenszyklus eines Jobs und seine Aufgaben vom Erstellen bis zum Löschen beschrieben.

Für jede Arbeitslast, die Sie in Batch ausführen möchten, führen Sie den folgenden grundlegenden Prozess aus:

  1. Job erstellen:Sie definieren die Arbeitslast, die Sie ausführen möchten, indem Sie die Runnables, Aufgaben und andere Anforderungen eines Jobs angeben. Die Details zum Erstellen eines Jobs werden im Abschnitt Optionen für die Joberstellung in diesem Dokument erläutert.
  2. Job überwachen und Fehler beheben:Wenn Sie einen Job erstellt haben, wird der Job automatisch in die Warteschlange gestellt, geplant und für die angegebenen Ressourcen ausgeführt. Sie können die Details eines erstellten Jobs oder einer seiner Aufgaben aufrufen, um den aktuellen Status zu sehen. Nachdem ein Job ausgeführt wurde oder abgeschlossen ist, können Sie ihn auch mithilfe von Logs überwachen und analysieren. Wenn ein Job fehlschlägt, können Sie ihn mithilfe von Fehlermeldungen, Statusereignissen oder Logs beheben, um das Problem zu diagnostizieren, bevor Sie den Job neu erstellen.
  3. Job löschen oder exportieren: Die Logs eines Jobs werden automatisch gemäß der Aufbewahrungsrichtlinie von Cloud Logging beibehalten und gelöscht. Die anderen Informationen eines Jobs bleiben in Batch verfügbar, bis sie von Ihnen oder Google Cloud gelöscht werden. Google Cloud löscht einen Job automatisch 60 Tage, nachdem er abgeschlossen ist. Vorher können Sie den Job optional selbst löschen oder, wenn Sie die Informationen beibehalten müssen, den Job exportieren, bevor er gelöscht wird.

Nachdem Sie einen Job erstellt haben, durchläuft er die folgenden Status:

  1. Queued (QUEUED): Die Jobanfrage wurde zugelassen und wartet in der Warteschlange. Der Job bleibt in der Warteschlange, bis die erforderlichen Ressourcen verfügbar sind und die davor liegenden Jobs bewertet wurden.
  2. Geplant (SCHEDULED): Der Job wurde aus der Warteschlange ausgewählt, um mit der Ausführung zu beginnen, und die Ressourcen werden zugewiesen.
  3. Wird ausgeführt (RUNNING): Die Ressourcen für den Job wurden erfolgreich erstellt und die zugehörigen Aufgaben können ausgeführt werden.

    Wenn ein Job ausgeführt wird, durchläuft jede seiner Aufgaben die folgenden Status:

    1. Ausstehend (PENDING): Die Aufgabe wartet auf die Ausführung einer VM.
    2. Zugewiesen (ASSIGNED): Der Aufgabe wurde eine VM zugewiesen, auf der sie ausgeführt werden soll.
    3. Wird ausgeführt (RUNNING): Die Aufgabe wird auf einer VM ausgeführt.
    4. Eine Aufgabe wird mit einem der folgenden Status beendet:
      • Erfolgreich (SUCCEEDED): Die Aufgabe war erfolgreich, da jedes ihrer Runnables entweder erfolgreich war (einen Exit-Code von null zurückgegeben hat) oder mit dem Feld „Exit-Status ignorieren“ (ignoreExitStatus) als nicht kritisch markiert wurde.
      • Fehlgeschlagen (FAILED): Die Aufgabe ist fehlgeschlagen, weil mindestens eines ihrer kritischen Runnables fehlgeschlagen ist (ein Exit-Code ungleich null zurückgegeben wurde).
  4. Ein Job wird in einem der folgenden Status abgeschlossen:

    • Erfolgreich (SUCCEEDED): Alle Aufgaben für den Job waren erfolgreich.
    • Fehlgeschlagen (FAILED): Mindestens eine Aufgabe für den Job ist fehlgeschlagen.

Weitere Informationen finden Sie in der Referenzdokumentation unter Jobstatus und Aufgabenstatus.

Warteschlange und Planung von Jobs

Im Allgemeinen ist es wahrscheinlicher, dass Jobs früher ausgeführt und abgeschlossen werden, wenn sie kleiner sind und nur wenige gemeinsame Ressourcen benötigen. Die Beispieljobs in der Batch-Dokumentation, die in der Regel sehr klein sind und nur minimale Ressourcen benötigen, können möglicherweise bereits nach wenigen Minuten abgeschlossen sein.

Insbesondere variiert die Zeit, die ein Job bis zum Abschluss der Warteschlange und Planung benötigt, für verschiedene Jobs und zu unterschiedlichen Zeiten und hängt von den folgenden Faktoren ab:

  • Verfügbarkeit von Jobressourcen: die Verfügbarkeit der erforderlichen Ressourcen des Jobs innerhalb der zulässigen Standorte.

    Erstens kann ein Job nicht ausgeführt werden, wenn Sie Ressourcen angeben, die an diesem Standort nicht angeboten werden. In diesem Fall schlägt der Job mit einem Fehler bei der Zonenverfügbarkeit fehl.

    Zweitens ist es wahrscheinlicher, dass ein Job verzögert wird oder fehlschlägt, wenn eine seiner erforderlichen Ressourcen im Vergleich zum aktuellen Bedarf aufgrund von Fehlern bei der Ressourcenverfügbarkeit gering ist. Daher wird Ihr Job möglicherweise früher ausgeführt, wenn Sie weniger, gängigere Ressourcen benötigen und die Ausführung des Jobs in keiner Zone einer Region eingeschränkt wird.

    Weitere Informationen zu den Ressourcen für einen Job finden Sie in diesem Dokument unter Jobausführung. Weitere Informationen zu den Standorten, die Sie für einen Batch-Job und seine Ressourcen angeben können, finden Sie auf der Seite Standorte.

  • Jobpriorität: Die Priorität eines Jobs im Verhältnis zu den Prioritäten anderer Jobs in Ihrem Projekt.

    Optional können Sie die Priorität eines Jobs angeben. Dazu fügen Sie das Flag --priority für die gcloud CLI oder das JSON-Feld priority ein. Sie können die Priorität eines Jobs als eine Zahl zwischen 0 (niedrigste Priorität) und 99 (höchste Priorität) definieren. Wenn Sie eine höhere Priorität festlegen, kann ein Job in Ihrem Projekt schneller ausgeführt werden als Jobs mit niedrigerer Priorität.

    Wenn Sie die Priorität eines Jobs nicht konfigurieren, wird standardmäßig die niedrigste Priorität 0 verwendet. Wenn zwei Jobs in der Warteschlange dieselbe Priorität haben, hat der zuerst erstellte Job die höhere Priorität.

  • Kontingente und Limits: Die Grenzwerte Ihres Projekts für Google Cloud-Ressourcen und -Anfragen.

    Ein Job kann nicht ausgeführt werden, wenn er ein Limit oder das Kontingent Ihres Projekts für eine der erforderlichen Ressourcen oder Anfragen überschreitet. In diesem Fall kann Batch einen Job verzögern und zu einem späteren Zeitpunkt wiederholen oder den Job fehlschlagen und einen zugehörigen Fehler anzeigen.

    Sie können Verzögerungen und Fehler für Ihren Job vermeiden, indem Sie Jobs erstellen, die alle relevanten Limits einhalten und dafür sorgen, dass Ihr Projekt genügend relevante Kontingente hat. Weitere Informationen finden Sie unter Batchkontingente und -limits.

Jobausführung

Die Ausführungszeit eines Jobs kann je nach Aufgabenplanung und Jobressourcen variieren.

Aufgabenplanung

Wenn ein Job ausgeführt wird, werden seine Aufgaben gemäß dem Feld für die Planungsrichtlinie (schedulingPolicy) geplant, in dem Sie eine der folgenden Optionen angeben können:

  • So bald wie möglich (AS_SOON_AS_POSSIBLE) (Standardeinstellung): Aufgaben werden ausgeführt, sobald Ressourcen verfügbar sind, und können parallel ausgeführt werden. Die Anzahl der Aufgaben, die gleichzeitig ausgeführt werden, hängt von den parallelen Aufgaben pro VM ab, die von den Ressourcen des Jobs zugelassen werden, und von anderen Konfigurationsoptionen, wie unter Jobressourcen in diesem Dokument erläutert.
  • In Reihenfolge (IN_ORDER): Aufgaben werden nacheinander in erhöhter Indexreihenfolge ausgeführt.

Jobressourcen

Jeder Batchjob wird in einer regionalen verwalteten Instanzgruppe (Managed Instance Group, MIG) ausgeführt. Dabei handelt es sich um eine Gruppe von einer oder mehreren übereinstimmenden Compute Engine-VM-Instanzen, die sich jeweils in einer der enthaltenen Zonen befinden. Jede VM hat dedizierte Hardware für CPU-Kerne (insbesondere virtuelle CPUs (vCPUs)) und Arbeitsspeicher, die sich auf die Leistung Ihres Jobs auswirken, sowie ein Bootlaufwerk, auf dem ein Betriebssystem-Image und Anweisungen zum Ausführen des Jobs gespeichert sind.

Während der Laufzeit eines Jobs erstellt und löscht Batch automatisch Ressourcen, die Ihren Spezifikationen entsprechen. Wenn Sie einen Job erstellen, konfigurieren Sie seine Ressourcen, indem Sie Folgendes angeben:

  • Sie müssen die Rechenressourcen – vCPUs, Arbeitsspeicher und (falls erforderlich) zusätzlicher Bootlaufwerkspeicher – angeben, die für die jeweilige Aufgabe erforderlich sind, sofern die Standardwerte nicht ausreichen. Weitere Informationen finden Sie im Feld Rechenressourcen pro Aufgabe (computeResource) und in den Unterfeldern.

  • Optional können Sie auch die zu verwendenden VM-Typen und zusätzliche Ressourcen für jede VM angeben, z. B. GPUs und Speicher-Volumes. Wenn Sie diese Optionen nicht angeben, wählt Batch kompatible VM-Typen aus und fügt keine zusätzlichen Ressourcen hinzu. Weitere Informationen finden Sie im Feld VM-Instanzressourcen (instances[]) und in den Unterfeldern.

Die Anzahl der VMs und die Anzahl der Aufgaben, die auf jeder VM gleichzeitig ausgeführt werden können, variieren für verschiedene Jobs je nach Aufgabenplanung und Ihren angegebenen Hardwareanforderungen. Wenn Sie für die Aufgaben eines Jobs die Ausführung von IN_ORDER angeben, hat der Job eine VM und führt jeweils nur eine Aufgabe aus. Wenn die Aufgaben eines Jobs AS_SOON_AS_POSSIBLE ausführen, können Sie die Anzahl der VMs und der Anzahl gleichzeitiger Aufgaben mithilfe der folgenden Formel schätzen:

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

Diese Formel hat folgende Werte:

  • \({vmsPerJob}\): Die maximale Anzahl von VMs für einen Job. Die tatsächliche Anzahl der für einen Job erstellten VMs ist möglicherweise geringer als dieser Wert, z. B. wenn Batch davon ausgeht, dass es schneller ist, einen Job für weniger Ressourcen auszuführen, als auf weitere Ressourcen zu warten. Dieser Wert wird auch durch die Limits für gleichzeitige VMs pro Job begrenzt.
  • \({taskCount}\): die Gesamtzahl der Aufgaben für den Job, die Sie mit dem Feld „Aufgabenanzahl (taskCount)“ definieren.
  • \({parallelTasksPerVM}\): die maximale Anzahl von Aufgaben, die gleichzeitig auf einer VM ausgeführt werden können.

    Dieser Wert wird durch alle folgenden Kriterien bestimmt:

    • Der Mindestwert ist 1 Aufgabe.

    • Der Höchstwert ist der kleinere der 20 Aufgaben und, falls definiert, der Wert des Felds max parallel Tasks per job (parallelism) (maximale parallele Aufgaben pro Job).

    • Wenn das Feld Maximale Anzahl paralleler Aufgaben pro VM (taskCountPerNode) definiert ist, wird dieser Wert verwendet.

      Wenn taskCountPerNode nicht definiert ist, bestimmt Batch einen Wert, indem die Gesamtzahl der Rechenressourcen (insbesondere vCPUs) pro VM durch die für jede Aufgabe erforderliche Menge geteilt wird:

      \[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]

      Diese Formel hat folgende Werte:

      • \({vcpusPerVm}\): die Gesamtzahl der vCPUs pro VM, die durch den Maschinentyp der VMs Ihres Jobs bestimmt wird.

      • \({vcpusPerTask}\): die Anzahl der vCPUs pro Aufgabe, die durch Umwandeln der Einheiten im Feld vCPUs pro Aufgabe (cpuMilli) bestimmt wird.

Optionen für die Joberstellung

Unter Einfachen Job erstellen und ausführen werden die Grundlagen erläutert. Dazu gehört unter anderem, wie ein ausführbares Objekt entweder mit einem Skript oder mit einem Container-Image definiert wird und wie vordefinierte und benutzerdefinierte Umgebungsvariablen konfiguriert werden.

Nachdem Sie mit den Grundlagen der Joberstellung vertraut sind, können Sie einen Job erstellen, für den eine oder mehrere der folgenden zusätzlichen Konfigurationsoptionen verwendet werden:

  • So steuern Sie den Zugriff für einen Job:

    • Unter Zugriff für einen Job mit einem benutzerdefinierten Dienstkonto steuern wird erläutert, wie Sie das Dienstkonto eines Jobs angeben. Dies hat Einfluss auf die Ressourcen und Anwendungen, auf die die VMs eines Jobs zugreifen können. Wenn Sie kein benutzerdefiniertes Dienstkonto angeben, verwenden Jobs standardmäßig das Compute Engine-Standarddienstkonto.

    • Die Netzwerkübersicht bietet einen Überblick darüber, wann und wie Sie die Netzwerkkonfiguration für einen Job anpassen können, einschließlich der Angabe des Netzwerks des Jobs, des Blockierens externer Verbindungen sowie des Schützens von Daten und Ressourcen mithilfe von VPC Service Controls.

    • Unter Sensible Daten mit Secret Manager schützen wird erläutert, wie Sie sensible Daten wie benutzerdefinierte Umgebungsvariablen und Anmeldedaten sicher definieren, indem Sie beim Erstellen eines Jobs mithilfe von Secret Manager-Secrets verschlüsselte Informationen angeben.

  • Konfigurieren Sie zusätzliche Optionen für einen Job:

    • Unter Aufgabenkommunikation mithilfe einer MPI-Bibliothek konfigurieren wird erläutert, wie Sie einen Job mit voneinander abhängigen Aufgaben konfigurieren, die über verschiedene VMs miteinander kommunizieren, indem Sie eine MPI-Bibliothek (Message Passing Interface) verwenden. Ein häufiger Anwendungsfall für MPI sind eng gekoppelte HPC-Arbeitslasten (Hochleistungs-Computing).

    • Passen Sie die Ressourcen an, auf denen ein Job ausgeführt wird:

      • Unter Jobressourcen mithilfe einer VM-Instanzvorlage definieren wird erläutert, wie Sie eine Compute Engine-VM-Vorlage angeben, um die Ressourcen eines Jobs beim Erstellen eines Jobs zu definieren.

      • Unter GPUs für einen Job verwenden wird erläutert, wie Sie einen Job definieren, der eine oder mehrere Grafikprozessoren (GPUs) verwendet. Zu den häufigsten Anwendungsfällen für Jobs mit GPUs gehören intensive Datenverarbeitung oder Arbeitslasten für maschinelles Lernen (ML).

      • Unter Speicher-Volumes für einen Job verwenden wird erläutert, wie ein Job definiert wird, der auf ein oder mehrere externe Speicher-Volumes zugreifen kann. Zu den Speicheroptionen gehören neue oder vorhandene nichtflüchtige Speicher, neue lokale SSDs, vorhandene Cloud Storage-Buckets und ein vorhandenes Netzwerkdateisystem (NFS) wie eine Filestore-Dateifreigabe.

      • Die VM-Betriebssystemumgebung bietet einen Überblick darüber, wann und wie Sie die VM-Betriebssystemumgebung für einen Job anpassen können, einschließlich des VM-Betriebssystem-Images und der Bootlaufwerke des Jobs.

    • Verschiedene Aspekte eines Jobs optimieren:

      • Überwachung und Analyse verbessern:

      • Unter Aufgabenwiederholungen automatisieren wird erläutert, wie die Aufgaben eines Jobs nach allen oder angegebenen Fehlern automatisch wiederholt werden. Automatisierte Wiederholungsversuche können dazu beitragen, Probleme zu beheben und die Gesamtlaufzeit zu reduzieren, die für Jobs erforderlich ist, bei denen temporäre Fehler auftreten. Verwenden Sie beispielsweise automatische Wiederholungsversuche für einen Job, der auf Spot-VMs ausgeführt wird. Diese bieten erhebliche Rabatte, sind aber möglicherweise nicht immer verfügbar und können jederzeit vorzeitig beendet werden.

      • Unter VMs am selben Standort platzieren, um die Latenz zu verringern wird erläutert, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren können, wenn sich die VMs physisch nahe beieinander befinden. Dieser Leistungsvorteil kann besonders für Jobs nützlich sein, bei denen eine häufige Netzwerkkommunikation zwischen VMs erfolgt, z. B. Aufgaben, die mithilfe von MPI-Bibliotheken kommunizieren.

      • Unter Ressourcenverfügbarkeit mit VM-Reservierungen gewährleisten wird erläutert, wie Sie einen Job konfigurieren, der auf reservierten VMs ausgeführt werden kann. Mit reservierten VMs können Sie die Planungszeit eines Jobs minimieren, Fehler bei der Ressourcenverfügbarkeit vermeiden und Kosten optimieren.

      • Unter Image-Streaming verwenden wird erläutert, wie Sie die Startzeit von Jobs durch Streaming von Container-Images aus Artifact Registry verbessern.

  • Verwenden Sie zusätzliche Dienste, um Jobs zu erstellen und auszuführen:

Nächste Schritte