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 Arbeitslasten zur Batchverarbeitung in Google Cloud ausführen. Informationen zu den Komponenten eines Jobs und 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, in dem die Arbeitslast und die Anforderungen angegeben sind. Batch führt ihn dann automatisch aus.

In den folgenden Abschnitten werden detailliert beschrieben, wie Jobs erstellt und ausgeführt werden:

  • Joblebenszyklus: Informationen zu den Status eines Jobs vom Erstellen bis zum Löschen.
  • Jobwarteschlange und ‐planung: Informationen zu den Faktoren, die beeinflussen, wie lange es dauert, bis ein Job ausgeführt wird.
  • Jobausführung: Erfahren, wie die Aufgaben eines Jobs während der Ausführung mit den zugehörigen Ressourcen ausgeführt werden.

Joblebenszyklus

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

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

  1. Job erstellen:Sie definieren die Arbeitslast, die Sie ausführen möchten, indem Sie die Runnables, Tasks und sonstigen Anforderungen eines Jobs angeben. Die Details zum Erstellen eines Jobs werden im Abschnitt Optionen zum Erstellen von Jobs in diesem Dokument beschrieben.
  2. Job überwachen und Fehler beheben:Wenn Sie einen Job erstellt haben, wird er automatisch in die Warteschlange gestellt, geplant und auf den 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 oder abgeschlossen wurde, können Sie ihn auch mithilfe von Logs überwachen und analysieren. Wenn ein Job fehlschlägt, können Sie mithilfe von Fehlermeldungen, Statusereignissen oder Logs das Problem diagnostizieren, bevor Sie den Job neu erstellen.
  3. Job löschen oder exportieren:Die Logs eines Jobs werden gemäß der Aufbewahrungsrichtlinie von Cloud Logging automatisch beibehalten und gelöscht. Die anderen Informationen eines Jobs bleiben in Batch verfügbar, bis Sie oder Google Cloud sie löschen. Google Cloud löscht einen Job automatisch 60 Tage, nachdem er abgeschlossen wurde. Bis dahin können Sie den Job optional selbst löschen oder den Job exportieren, bevor er gelöscht wird, wenn Sie die Informationen beibehalten müssen.

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

  1. In der Warteschlange (QUEUED): Die Jobanfrage wurde zugelassen und befindet sich in der Warteschlange. Der Job bleibt in der Warteschlange, bis die erforderlichen Ressourcen verfügbar sind und die Vorgängerjobs 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 Aufgaben können ausgeführt werden.

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

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

    • 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.

Warteschlangen und -planung

Im Allgemeinen ist es wahrscheinlicher, dass Jobs schneller ausgeführt und beendet werden, wenn sie kleiner sind und nur wenige allgemeine Ressourcen erfordern. Die Beispieljobs in der Batch-Dokumentation, die in der Regel sehr klein sind und nur minimale Ressourcen verbrauchen, können in wenigen Minuten abgeschlossen sein.

Insbesondere die Zeit, die ein Job zum Abschluss der Warteschlange und Planung benötigt, variiert je nach Job und zu verschiedenen Zeiten aufgrund der folgenden Faktoren:

  • 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 Zonenverfügbarkeitsfehler fehl.

    Zweitens ist es wahrscheinlicher, dass ein Job verzögert wird oder fehlschlägt, wenn eine der erforderlichen Ressourcen im Verhältnis zum aktuellen Bedarf aufgrund von Fehlern bei der Ressourcenverfügbarkeit eine geringe Kapazität hat. Daher wird Ihr Job möglicherweise früher ausgeführt, wenn Sie weniger gängige Ressourcen benötigen und die Ausführung des Jobs in keiner Zone einer Region einschränken.

    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 zu den zugehörigen 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. Das Festlegen einer höheren Priorität kann dazu führen, dass ein Job in Ihrem Projekt früher ausgeführt wird 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 die gleiche Priorität haben, hat der Job, der zuerst erstellt wurde, die höhere Priorität.

  • Kontingente und Limits: die Schwellenwerte, die in Ihrem Projekt für Google Cloud-Ressourcen und -Anfragen gelten.

    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 später wiederholen oder den Job fehlschlagen und einen entsprechenden Fehler anzeigen.

    Sie können dazu beitragen, Verzögerungen und Fehler bei Jobs zu 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ührungsdauer eines Jobs kann je nach Aufgabenplanung und Jobressourcen variieren.

Aufgabenplanung

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

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

Jobressourcen

Jeder Batchjob wird in einer regionalen verwalteten Instanzgruppe (MIG) ausgeführt, die aus einer oder mehreren übereinstimmenden VM-Instanzen von Compute Engine besteht, 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 des Jobs auswirken, sowie über ein Bootlaufwerk, auf dem ein Betriebssystem-Image und Anweisungen zum Ausführen des Jobs gespeichert sind.

Während der Ausführung 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 angeben, die zum Ausführen jeder Aufgabe erforderlich sind: vCPUs, Arbeitsspeicher und (falls erforderlich) zusätzlicher Bootlaufwerkspeicher, sofern die Standardwerte nicht ausreichen. Weitere Informationen finden Sie unter Computing-Ressourcen pro Aufgabe (computeResource) und Unterfelder.

  • 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 unter VM-Instanzressourcen (instances[]) und Unterfelder.

Die Anzahl der VMs und die Anzahl der Aufgaben, die gleichzeitig auf jeder VM ausgeführt werden können, hängen von der Aufgabenplanung und den von Ihnen angegebenen Hardwareanforderungen für unterschiedliche Jobs ab. Wenn Sie für die Aufgaben eines Jobs IN_ORDER angeben, verfügt der Job über eine VM und führt jeweils nur eine Aufgabe aus. Wenn für die Aufgaben eines Jobs AS_SOON_AS_POSSIBLE ausgeführt wird, können Sie die Anzahl der VMs und die Anzahl der gleichzeitig ausgeführten Aufgaben mithilfe der folgenden Formel schätzen:

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

Diese Formel enthält folgende Werte:

  • \({vmsPerJob}\): die maximale Anzahl von VMs für einen Job. Die tatsächliche Anzahl der für einen Job erstellten VMs kann kleiner sein. Beispiel: Wenn Batch erwartet, dass es schneller geht, einen Job mit weniger Ressourcen auszuführen, als auf weitere Ressourcen zu warten. Dieser Wert ist auch durch die Limits gleichzeitiger VMs pro Job begrenzt.
  • \({taskCount}\): die Gesamtzahl der Tasks für den Job, die Sie im Feld für die Aufgabenanzahl (taskCount) definieren.
  • \({parallelTasksPerVM}\): Die maximale Anzahl von Tasks, die gleichzeitig auf einer VM ausgeführt werden können.

    Dieser Wert wird durch alle folgenden Kriterien bestimmt:

    • Der Mindestwert ist 1 Aufgabe.

    • Der Maximalwert ist der kleinere Wert von 20 Aufgaben und, falls definiert, dem Wert im Feld Maximale Anzahl paralleler Tasks pro Job (parallelism).

    • Wenn das Feld für die maximale Anzahl paralleler Aufgaben pro VM (taskCountPerNode) definiert ist, wird dieser Wert verwendet.

      Wenn taskCountPerNode nicht definiert ist, entscheidet Batch über 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 enthält 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 die Konvertierung der Einheiten des Felds vCPUs pro Task (cpuMilli) bestimmt wird.

Optionen für die Schaffung von Arbeitsplätzen

In Grundlegenden Job erstellen und ausführen werden die Grundlagen erläutert. Unter anderem erfahren Sie, wie Sie ein Runnable mithilfe eines Skripts oder Container-Images definieren und vordefinierte und benutzerdefinierte Umgebungsvariablen konfigurieren.

Nachdem Sie die Grundlagen der Joberstellung verstanden haben, können Sie einen Job erstellen, der eine oder mehrere der folgenden zusätzlichen Konfigurationsoptionen verwendet:

  • Zugriff für einen Job steuern:

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

    • Unter Netzwerkübersicht erhalten Sie einen Überblick darüber, wann und wie Sie die Netzwerkkonfiguration für einen Job anpassen können. Dazu gehört auch, das Netzwerk des Jobs anzugeben, externe Verbindungen zu blockieren und Daten und Ressourcen mit VPC Service Controls zu schützen.

    • In Sensible Daten mit Secret Manager schützen wird erläutert, wie Sie vertrauliche 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:

    • In Aufgabenkommunikation mit einer MPI-Bibliothek konfigurieren wird erläutert, wie Sie einen Job mit voneinander abhängigen Aufgaben konfigurieren, die über verschiedene VMs mithilfe einer MPI-Bibliothek (Message Passing Interface) miteinander kommunizieren. Ein häufiger Anwendungsfall für MPI sind eng gekoppelte HPC-Arbeitslasten (High Performance 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 beim Erstellen eines Jobs eine Compute Engine-VM-Vorlage angeben, um die Ressourcen eines Jobs zu definieren.

      • In 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 zählen intensive Datenverarbeitungs- oder ML-Arbeitslasten.

      • In Speicher-Volumes für einen Job verwenden wird erläutert, wie Sie einen Job definieren, 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 bestehendes Netzwerkdateisystem (Network File System, NFS) wie eine Filestore-Dateifreigabe.

      • Unter VM-Betriebssystemumgebung – Übersicht erhalten Sie 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:

        • In Aufgabenlogs schreiben wird erläutert, wie Sie die Runnables eines Jobs konfigurieren, um Aufgabenlogs zu schreiben. Durch das Schreiben von Aufgabenlogs können Sie benutzerdefinierte Informationen in Cloud Logging bereitstellen, was die Analyse und Fehlerbehebung von Jobs vereinfachen kann.

        • Unter Benutzerdefinierte Statusereignisse konfigurieren wird erläutert, wie Sie benutzerdefinierte Statusereignisse für die Runnables eines Jobs konfigurieren. Mit benutzerdefinierten Statusereignissen können Sie wichtige Ereignisse beschreiben, die für Runnables auftreten und die angezeigt werden, wenn Sie den Verlauf der Statusereignisse eines Jobs aufrufen. Dadurch lassen sich Jobs leichter analysieren und Fehler leichter beheben.

        • Unter Statusbenachrichtigungen aktivieren wird erläutert, wie Sie einen Job so konfigurieren, dass Pub/Sub-Benachrichtigungen zu seinem Status gesendet werden, die Sie optional in einer BigQuery-Tabelle speichern und abfragen können. Bevor Sie dieses Dokument lesen, konfigurieren Sie Ihr Projekt so, dass der Jobstatus mit Pub/Sub-Benachrichtigungen und BigQuery überwacht wird.

      • Unter Aufgabenwiederholungen automatisieren wird erläutert, wie die Aufgaben eines Jobs nach allen oder bestimmten Fehlern automatisch wiederholt werden. Automatische Wiederholungsversuche können die Fehlerbehebung und die Gesamtausführungszeit für Jobs reduzieren, 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 reduzieren wird erläutert, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren können, indem Sie die VMs physisch nahe beieinander befinden müssen. Diese Leistungsvorteile sind besonders nützlich für Jobs, bei denen eine häufige Netzwerkkommunikation zwischen VMs stattfindet, z. B. Aufgaben, die über MPI-Bibliotheken kommunizieren.

      • Unter Ressourcenverfügbarkeit mithilfe von VM-Reservierungen prüfen wird erläutert, wie ein Job konfiguriert wird, 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 die Kosten optimieren.

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

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

Nächste Schritte