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 für die Batchverarbeitung inGoogle Cloudausführen. Informationen zu den Komponenten eines Jobs und den Voraussetzungen für die Verwendung von Batch finden Sie unter Erste Schritte mit Batch.

So funktionieren Joberstellung und -ausführung

Wenn Sie Batch verwenden möchten, erstellen Sie einen Job, in dem Sie Ihre Arbeitslast und die zugehörigen Anforderungen angeben. Batch führt den Job dann automatisch aus.

In den folgenden Abschnitten wird ausführlich beschrieben, wie die Joberstellung und -ausführung funktioniert:

  • Joblebenszyklus: Hier erfahren Sie, welche Status ein Job von der Erstellung bis zum Löschen durchläuft.
  • Jobwarteschlangen und -planung: Hier erfahren Sie, welche Faktoren die Zeit bis zum Start eines Jobs beeinflussen.
  • Jobausführung: Hier erfahren Sie, wie die Aufgaben eines Jobs während der Ausführung auf seinen Ressourcen ausgeführt werden.

Joblebenszyklus

In diesem Abschnitt wird der Lebenszyklus eines Jobs und seiner Aufgaben von der Erstellung bis zum Löschen beschrieben.

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

  1. Job erstellen: Sie definieren die Arbeitslast, die Sie ausführen möchten, indem Sie die ausführbaren Dateien, Aufgaben und alle anderen Anforderungen eines Jobs angeben. Details zum Erstellen eines Jobs finden Sie im Abschnitt Optionen für die Joberstellung in diesem Dokument.
  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. Bei Bedarf können Sie einen Job abbrechen, um ihn zu beenden oder zu verhindern, dass er ausgeführt wird. 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 anhand von Fehlermeldungen, Statusereignissen oder Protokollen beheben, um das Problem zu diagnostizieren, bevor Sie den Job neu erstellen.
  3. Job löschen oder exportieren: Die Informationen eines Jobs in Batch bleiben verfügbar, bis Sie oder Google Cloud sie löschen.Google Cloud löscht einen Job automatisch 60 Tage nach Abschluss. Vorher können Sie den Job optional selbst löschen. Wenn Sie die Informationen behalten möchten, können Sie die Informationen des Jobs in Batch exportieren, bevor der Job gelöscht wird. Informationen zu einem Job, die in anderen Google Cloud -Diensten gespeichert sind, sind vom Löschen eines Jobs nicht betroffen und unterliegen separaten Aufbewahrungsrichtlinien. Beispielsweise werden die Logs eines Jobs gemäß der Cloud Logging-Aufbewahrungsrichtlinie automatisch aufbewahrt und gelöscht.

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

  1. In der Warteschlange (QUEUED): Die Jobanfrage wurde angenommen und wartet in der Warteschlange. Der Job verbleibt in der Warteschlange Ihres Projekts, bis er geplant werden kann. Dies geschieht, wenn die erforderlichen Ressourcen verfügbar sind und die davor liegenden Jobs bewertet wurden. Damit Ihre Jobs jedoch nicht veralten, schlägt Batch automatisch fehl, wenn ein Job die maximale Wartezeit in der Warteschlange überschreitet, anstatt ihn zu planen.
  2. Geplant (SCHEDULED): Der Job wurde aus der Warteschlange ausgewählt, um ausgeführt zu werden, und die Ressourcen werden zugewiesen.
  3. Wird ausgeführt (RUNNING): Die Ressourcen für den Job wurden 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 Aufgabe wartet auf eine VM, auf der sie ausgeführt werden kann.
    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, weil jede ihrer ausführbaren Dateien eine der folgenden Bedingungen erfüllt hat:

        • Das Runnable war erfolgreich (hat den Exit-Code 0 zurückgegeben).
        • Das Runnable ist fehlgeschlagen (hat einen Exit-Code ungleich null zurückgegeben), war aber ein unkritisches Runnable (Sie haben das Feld ignoreExitStatus des Runnables aktiviert).
        • Das Runnable wurde nicht abgeschlossen, war aber ein Hintergrund-Runnable (Sie haben das Feld background des Runnables aktiviert).
      • Fehlgeschlagen (FAILED): Die Aufgabe ist fehlgeschlagen und wurde beendet, weil mindestens ein Runnable die oben genannten Bedingungen nicht erfüllt hat.

    Die Ressourcen für den Job werden gelöscht, bevor der Job abgeschlossen ist.

  4. Ein Job wird mit einem der folgenden Status beendet:

    • Erfolgreich (SUCCEEDED): Der Job war erfolgreich, da alle Aufgaben erfolgreich waren.
    • Fehlgeschlagen (FAILED): Der Job ist fehlgeschlagen und wurde beendet, weil mindestens eine seiner Aufgaben fehlgeschlagen ist.
    • Abgebrochen (CANCELLED): Ein Nutzer hat den Job abgebrochen, bevor er erfolgreich abgeschlossen wurde oder fehlgeschlagen ist.

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

Jobwarteschlangen und -planung

Im Allgemeinen werden Jobs eher ausgeführt und schneller abgeschlossen, wenn sie kleiner sind und nur wenige gängige Ressourcen erfordern. Die Beispieljobs in der Batch-Dokumentation sind in der Regel sehr klein und verbrauchen nur minimale Ressourcen. Sie werden möglicherweise in nur wenigen Minuten ausgeführt.

Insbesondere die Zeit, die ein Job benötigt, um in die Warteschlange gestellt und geplant zu werden, variiert je nach Job und Zeitpunkt aufgrund der folgenden Faktoren:

  • Vom Nutzer angegebene Jobvoraussetzungen: Alle Voraussetzungen, die erfüllt sein müssen, bevor der Job geplant wird.

    Standardmäßig hat ein Job keine Voraussetzungen. Optional können Sie festlegen, dass ein Job erst geplant werden kann, wenn ein oder mehrere vorhandene Jobs erfolgreich abgeschlossen wurden oder fehlgeschlagen sind. Weitere Informationen finden Sie unter Abhängige Jobs planen (Vorabversion).

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

    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.

  • Verfügbarkeit von Jobressourcen: Die Verfügbarkeit der für den Job erforderlichen Ressourcen an den zulässigen Standorten.

    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 aufgrund von Ressourcenverfügbarkeitsfehlern im Verhältnis zur aktuellen Nachfrage eine geringe Kapazität hat. Daher wird Ihr Job möglicherweise schneller ausgeführt, wenn Sie weniger, gängigere Ressourcen benötigen und die Ausführung des Jobs nicht auf bestimmte Zonen in einer Region beschrä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 seine Ressourcen angeben können, finden Sie auf der Seite Standorte.

  • Kontingente und Limits: Die Schwellenwerte, die Ihr Projekt für Google Cloud -Ressourcen und -Anfragen hat.

    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 lassen und einen entsprechenden Fehler anzeigen.

    Sie können Verzögerungen und Fehler bei Ihrem Job vermeiden, indem Sie Jobs erstellen, die alle relevanten Limits einhalten, und dafür sorgen, dass Ihr Projekt ein ausreichendes Kontingent hat. Weitere Informationen finden Sie unter Batch-Kontingente und -Limits.

Jobausführung

Die Ausführungszeit eines Jobs kann je nach Aufgabenplanung und den Ressourcen des Jobs variieren.

Aufgabenplanung

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

  • So schnell 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 gleichzeitig ausgeführten Aufgaben hängt von den parallelen Aufgaben pro VM ab, die durch die Ressourcen des Jobs und andere Konfigurationsoptionen zulässig sind, wie in diesem Dokument unter Jobressourcen erläutert.
  • In Reihenfolge (IN_ORDER): Aufgaben werden nacheinander in aufsteigender Indexreihenfolge ausgeführt.

Jobressourcen

Jeder Batchjob wird in einer regionalen verwalteten Instanzgruppe (Managed Instance Group, MIG) ausgeführt. Eine MIG ist 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 Ihres 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:

  • Rechenressourcen pro Aufgabe: Sofern die Standardwerte nicht ausreichen, müssen Sie die Rechenressourcen (vCPUs, Arbeitsspeicher und ggf. zusätzlichen Bootlaufwerkspeicher) angeben, die für die Ausführung der einzelnen Aufgaben erforderlich sind. Weitere Informationen finden Sie in den Feldern für Rechenressourcen pro Aufgabe (computeResource).

  • VM-Ressourcen: Optional können Sie auch die VMs des Jobs angeben, z. B. den Maschinentyp und das Betriebssystem, sowie zusätzliche Ressourcen wie GPUs, TPUs und Speicher-Volumes. Verwenden Sie dazu hauptsächlich die Felder der VM-Ressourcenrichtlinie (instances[].policy) oder das alternative Feld instances[].instanceTemplate. (Optional können Sie auch die instanceFlexibilityPolicy-Felder verwenden, wenn Sie mehrere Maschinentypen für einen Job zulassen möchten.)

    Wenn Sie diese Felder nicht definieren (was beim Erstellen eines Jobs mit derGoogle Cloud Console nicht möglich ist), versucht Batch automatisch, kompatible VMs auszuwählen, und fügt keine zusätzlichen Ressourcen hinzu.

Die Anzahl der VMs und die Anzahl der Aufgaben, die gleichzeitig auf jeder VM ausgeführt werden können, variieren je nach Aufgabenplanung und den von Ihnen angegebenen Hardwareanforderungen für verschiedene Jobs. Wenn Sie für die Aufgaben eines Jobs 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 ausgeführt werden, können Sie die Anzahl der VMs und die Anzahl der gleichzeitigen Aufgaben mit der folgenden Formel schätzen:

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

Diese Formel hat die folgenden Werte:

  • \({vmsPerJob}\): die maximale Anzahl von VMs für einen Job. Die tatsächliche Anzahl der für einen Job erstellten VMs kann geringer sein, z. B. wenn Batch davon ausgeht, dass es schneller ist, einen Job mit weniger Ressourcen auszuführen, als auf mehr Ressourcen zu warten. Dieser Wert ist auch durch die Limits für gleichzeitige VMs pro Job begrenzt.
  • \({taskCount}\): Die Gesamtzahl der Aufgaben für den Job, die Sie im 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 beträgt 1 Aufgabe.

    • Der Höchstwert ist der kleinere Wert von 20 Aufgaben und, falls definiert, der Wert des Felds Maximale Anzahl paralleler Aufgaben 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, legt Batch einen Wert fest, 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 die folgenden 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 Umwandlung der Einheiten des Felds „vCPUs pro Aufgabe“ (cpuMilli) bestimmt wird.

Optionen für die Joberstellung

Unter Einfachen Job erstellen und ausführen werden die Grundlagen erläutert, einschließlich der Definition eines ausführbaren Elements mithilfe eines Skripts oder Container-Images und der Konfiguration vordefinierter und benutzerdefinierter Umgebungsvariablen.

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:

    • Unter Zugriff für einen Job mit einem benutzerdefinierten Dienstkonto steuern wird erläutert, wie Sie das Dienstkonto eines Jobs angeben, das sich auf die Ressourcen und Anwendungen auswirkt, 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. Dazu gehören die Angabe des Netzwerks des Jobs, das Blockieren externer Verbindungen und der Schutz 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 verschlüsselte Informationen mithilfe von Secret Manager-Secrets angeben.

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

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

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

      • Unter Jobressourcen mit 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. Dies ist eine Alternative zur direkten Angabe der Ressourcen eines Jobs mit dem Feld instances[].policy.

      • Unter GPUs für einen Job verwenden wird erläutert, wie Sie einen Job definieren, der einen oder mehrere Grafikprozessoren (GPUs) verwendet. Zu den gängigen Anwendungsfällen für Jobs, die GPUs verwenden, gehören intensive Datenverarbeitung, künstliche Intelligenz (KI) oder Arbeitslasten für maschinelles Lernen (ML).

      • Unter TPUs für einen Job verwenden wird erläutert, wie Sie einen Job definieren, der eine oder mehrere Tensor Processing Units (TPUs) verwendet. Zu den gängigen Anwendungsfällen für Jobs, die TPUs verwenden, gehören Inferenz-, Bewertungs-, Feinabstimmungs- und Trainingsarbeitslasten für künstliche Intelligenz (KI) und maschinelles Lernen (ML).

      • Unter 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 vorhandenes Netzwerkdateisystem (NFS) wie eine Filestore-Dateifreigabe.

      • Die Übersicht über 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:

      • Monitoring und Analyse verbessern:

      • Unter Abhängige Jobs planen (Vorabversion) wird erläutert, wie Sie einen Job angeben, der erst ausgeführt wird, wenn ein oder mehrere vorhandene abhängige Jobs erfolgreich waren oder fehlgeschlagen sind. Wenn Sie eine Arbeitslast mit unterschiedlichen Ressourcenanforderungen haben, können Sie die Kosten und die Kontingentnutzung reduzieren, indem Sie die für Vorgänge mit geringem Bedarf (z. B. Datenvorbereitung) und rechenintensive Vorgänge (z. B. Datenverarbeitung) verwendeten VM-Typen trennen.

      • Unter Aufgabenwiederholungen automatisieren wird erläutert, wie Sie die Aufgaben eines Jobs nach allen oder bestimmten Fehlern automatisch wiederholen lassen. Automatisierte Wiederholungsversuche können dazu beitragen, den Aufwand für die Fehlerbehebung und die Gesamtlaufzeit für Jobs mit vorübergehenden Fehlern zu reduzieren. 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 Laufzeiten mit Zeitlimits begrenzen wird erläutert, wie Sie die Zeit begrenzen, die eine Aufgabe oder ein ausführbares Element ausgeführt werden darf. Wenn Sie übermäßige Laufzeiten verhindern, können Sie unerwartete Kosten und Verzögerungen reduzieren.

      • Ressourcenbeschaffung verbessern:

        • Unter Ressourcenverfügbarkeit verbessern wird erläutert, was Ressourcenverfügbarkeit ist, und es werden Empfehlungen gegeben, wie Sie die Verfügbarkeit beim Erstellen und Ausführen von Jobs verbessern können.

        • Unter Ressourcenverfügbarkeit mit VM-Reservierungen sicherstellen 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 die Kosten optimieren.

        • Unter Verfügbarkeit durch Instanzflexibilität verbessern wird erläutert, wie Sie einen Job auf mehreren Maschinentypen ausführen können, die Sie angeben und priorisieren können. Die Verwendung der Instanz-Flexibilität kann dazu beitragen, die Parallelität zu erhöhen, das vorzeitige Beenden von Spot-VMs zu verzögern und Fehler bei der Ressourcenverfügbarkeit zu vermeiden.

      • Latenz reduzieren:

        • Unter VMs zur Reduzierung der Latenz zusammenstellen wird erläutert, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren können, indem Sie festlegen, dass sich die VMs physisch nahe beieinander befinden müssen. Dieser Leistungsvorteil kann besonders nützlich für Jobs sein, die häufig über VMs hinweg kommunizieren, z. B. Aufgaben, die über MPI-Bibliotheken kommunizieren.

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

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

Nächste Schritte