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 Google Cloud 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 Folgendes angegeben ist: die Arbeitslast und ihre Anforderungen aus. führt er automatisch aus.

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

  • Joblebenszyklus: die Statuswerte eines Jobs verstehen vom Erstellen bis zum Löschen.
  • Warteschlangen und Planung von Jobs: Informieren Sie sich über die Faktoren, die beeinflussen, wie lange es dauert, bis ein Job ausgeführt wird.
  • Jobausführung: Hier erfahren Sie, wie die Aufgaben eines Jobs während der Ausführung auf den Ressourcen ausgeführt werden.

Joblebenszyklus

In diesem Abschnitt werden der Lebenszyklus eines Jobs und seine Aufgaben ab Erstellung beschrieben zum Löschen vor.

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

  1. Job erstellen: Sie definieren die Arbeitslast, die Sie ausführen möchten, indem Sie die ausführbaren Elemente, Aufgaben und alle anderen Anforderungen eines Jobs angeben. Einzelheiten zum Erstellen eines Jobs finden Sie in diesem Dokument im Abschnitt Optionen zum Erstellen von Jobs.
  2. Job überwachen und Fehler beheben: Nachdem Sie einen Job erstellt haben, wird er automatisch in die Warteschlange gestellt, geplant und auf den angegebenen Ressourcen ausgeführt. Sie können sich die Details eines erstellten Jobs oder einer seiner Aufgaben ansehen, um den aktuellen Status zu sehen. Bei Bedarf können Sie einen Job abbrechen (Vorschau), um ihn zu beenden oder zu verhindern, dass er ausgeführt wird. Sobald ein Job ausgeführt wird oder abgeschlossen ist, können Sie und analysieren den Job mithilfe von Logs. Wenn ein Job fehlschlägt, können Sie mithilfe von Fehlermeldungen, Statusereignissen oder Protokollen, um das Problem zu diagnostizieren bevor Sie den Job neu erstellen.
  3. Job löschen oder exportieren: Die Informationen zu einem Job in Batch bleiben verfügbar, bis Sie oder Google Cloud sie löschen. In Google Cloud werden Jobs 60 Tage nach Abschluss automatisch gelöscht. Bis dahin können Sie den Job optional selbst löschen. Wenn Sie die Informationen behalten möchten, können Sie sie vor dem Löschen des Jobs im Batch-Verfahren exportieren. Alle Informationen zu einer die in anderen Google Cloud-Diensten gespeichert sind, ein Job gelöscht wird und separate Aufbewahrungsrichtlinien hat. Zum Beispiel ist die automatisch aufbewahrt und gemäß der Aufbewahrungsrichtlinie für Cloud Logging.

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

  1. In der Warteschlange (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 bevorstehenden Jobs bewertet wurden.
  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 erfolgreich erstellt und die Aufgaben können gestartet 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 soll.
    2. Zugewiesen (ASSIGNED): Der Aufgabe wurde eine VM zugewiesen, auf der sie ausgeführt werden soll.
    3. Aktiv (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 ausführbare Element eine der folgenden Bedingungen erfüllt hat:

        • Das Runnable succeeded (zurückgegebene ein Exit-Code Null).
        • Die ausführbare Datei ist fehlgeschlagen (hat einen Exit-Code ungleich null zurückgegeben), war aber ein nicht kritisches Runnable (Sie haben die Option aktiviert des Runnables ignoreExitStatus-Feld).
        • Das ausführbare Programm wurde nicht beendet, war aber ein ausführbares Programm im Hintergrund (Sie haben das Feld background des ausführbaren Programms aktiviert).
      • Fehlgeschlagen (FAILED): Die Aufgabe ist fehlgeschlagen und wird nicht mehr ausgeführt aus folgendem Grund: Mindestens ein ausführbares Element hat die oben genannten Bedingungen nicht erfüllt.

  4. Ein Job wird in einem der folgenden Status abgeschlossen:

    • Erfolgreich (SUCCEEDED): Der Job wurde erfolgreich ausgeführt, weil alle Aufgaben erfolgreich war.
    • Failed (FAILED): Der Job ist fehlgeschlagen und wurde beendet, weil mindestens eine der Aufgaben fehlgeschlagen ist.
    • Abgebrochen (CANCELLED): Ein Nutzer hat den Job abgebrochen (Vorschau), bevor er erfolgreich war, oder fehlgeschlagen.

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

Warteschlange und Planung von Jobs

Im Allgemeinen ist die Wahrscheinlichkeit höher, dass Jobs ausgeführt und schneller abgeschlossen werden, wenn sie kleiner sind und nur wenige gemeinsame Ressourcen erfordern. Die Beispieljobs in der Batch-Dokumentation sind in der Regel sehr klein und verbrauchen nur minimale Ressourcen. Sie sind in wenigen Minuten abgeschlossen.

Insbesondere kann die Zeit, die ein Job für die Fertigstellung der Warteschlange und Planung benötigt, für unterschiedliche Jobs und zu unterschiedlichen Zeiten. Dabei werden die folgenden Faktoren berücksichtigt:

  • Verfügbarkeit der Jobressourcen: Die Verfügbarkeit der erforderlichen Ressourcen des Jobs an den zulässigen Standorten.

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

    Zweitens ist es wahrscheinlicher, dass ein Job verzögert wird oder fehlschlägt, wenn einer seiner erforderliche Ressourcen im Verhältnis zur aktuellen Nachfrage Fehler bei der Ressourcenverfügbarkeit. Daher wird Ihr Job möglicherweise früher ausgeführt, wenn Sie weniger benötigen, und die Ausführung des Jobs nicht in beliebigen Zonen in einer Region.

    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 Batchjob und seine Ressourcen angeben können, finden Sie auf der Seite Standorte.

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

    Optional können Sie die Priorität eines Jobs angeben, indem Sie das Flag --priority für die gcloud CLI oder das 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). Höherer Wert Priorität kann dazu beitragen, 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 Methode mit der niedrigsten Priorität: 0. Wenn zwei Jobs in der Warteschlange dieselbe Priorität haben, hat der zuerst erstellte Job die höhere Priorität.

  • Kontingente und Limits: Die Schwellenwerte, die Ihr Projekt hat. 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 Batch kann einen Job verzögern und zu einem späteren Zeitpunkt wiederholen. den Job fehlschlagen und einen zugehörigen Fehler anzeigen.

    Sie können dazu beitragen, Verzögerungen und Fehler für Ihren Job zu vermeiden, indem Sie Jobs erstellen, alle relevanten Grenzwerte einzuhalten und sicherzustellen, dass Ihr Projekt entsprechende Quote. Weitere Informationen finden Sie unter Kontingente und Limits für Batches.

Jobausführung

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

Aufgabenplanung

Wenn ein Job ausgeführt wird, werden seine Aufgaben gemäß den Zeitplanungsrichtlinie (schedulingPolicy), mit dem Sie eine der folgenden Optionen festlegen können:

  • 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 Aufgaben, die gleichzeitig ausgeführt werden, hängt von den parallelen Aufgaben pro VM ab die von den Ressourcen des Jobs und anderen Konfigurationsoptionen zugelassen werden, wie erläutert in diesem Dokument unter Jobressourcen.
  • Reihenfolge (IN_ORDER): Aufgaben werden nacheinander in erhöhter Reihenfolge ausgeführt. Indexreihenfolge angeben.

Jobressourcen

Jeder Batchjob wird in einer regionalen verwalteten Instanzgruppe (MIG) ausgeführt. eine Gruppe mit einer oder mehreren übereinstimmenden Compute Engine-VM-Instanzen, die sich jeweils in einer der eingeschlossenen Zonen. Jede VM hat dedizierte Hardware für CPU-Kerne (insbesondere virtuelle CPUs (vCPUs)) und Arbeitsspeicher, was sich auf die Leistung Job und ein Bootlaufwerk, auf dem ein System-Image (Betriebssystem-Image) und Anweisungen zum Ausführen des Jobs.

Während der Laufzeit eines Jobs werden mit Batch automatisch Ressourcen erstellt und gelöscht, die Ihren Spezifikationen entsprechen. Wenn Sie einen Job erstellen, konfigurieren Sie seine Ressourcen. Geben Sie dazu Folgendes an:

  • Rechenressourcen pro Aufgabe: Sofern die Standardwerte nicht ausreichen, müssen Sie die Rechenressourcen angeben, die für die Ausführung jeder Aufgabe erforderlich sind, also vCPUs, Arbeitsspeicher und (falls erforderlich) zusätzlicher Boot-Datenträgerspeicher. Für finden Sie in der Felder für Rechenressourcen pro Aufgabe (computeResource).

  • VM-Ressourcen:Optional können Sie auch den Typ des Jobs angeben. VMs, z. B. Maschinentyp und Betriebssystem sowie zusätzliche Ressourcen wie GPUs und Speicher-Volumes – mit der Methode Felder der VM-Ressourcenrichtlinie (instances[].policy) oder das alternative instances[].instanceTemplate-Feld. Wenn Sie keine wählt Batch kompatible VMs aus und verwendet zusätzliche Ressourcen hinzufügen.

Die Anzahl der VMs und die Anzahl der Aufgaben, die auf jeder VM gleichzeitig ausgeführt werden können, variieren je nach Job, je nach Aufgabenplanung und je nach den angegebenen Hardwareanforderungen. Wenn Sie für die Aufgaben eines Jobs IN_ORDER angeben, hat der Job eine VM und es wird jeweils nur eine Aufgabe ausgeführt. Andernfalls, 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. Das ist beispielsweise der Fall, wenn Batch davon ausgeht, dass es schneller ist, einen Job mit weniger Ressourcen auszuführen, als auf mehr Ressourcen zu warten. Dieser Wert wird auch durch die Limits für gleichzeitige VMs pro Job.
  • \({taskCount}\): die Gesamtzahl der Aufgaben für den Job, die Sie definieren mithilfe des Felds Aufgabenanzahl (taskCount).
  • \({parallelTasksPerVM}\): die maximale Anzahl von Aufgaben, die auf einer VM ausgeführt werden können gleichzeitig.

    Dieser Wert wird anhand der 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. Parallele Aufgaben pro Job (parallelism).

    • Wenn der Parameter Feld für maximale parallele Tasks pro VM (taskCountPerNode) definiert ist, wird dieser Wert verwendet.

      Ist taskCountPerNode nicht definiert, wird „Batch“ legt einen Wert fest, indem die Gesamtzahl der Rechenressourcen, insbesondere vCPUs, pro VM in der jeweiligen Menge die für jede Aufgabe erforderlich sind:

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

      Diese Formel hat die folgenden Werte:

      • \({vcpusPerVm}\): die Gesamtzahl der vCPUs pro VM, die vom 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) ermittelt wird.

Optionen zur Joberstellung

Unter Grundlegende Jobs erstellen und ausführen wird erläutert, Grundlagen, einschließlich der Definition eines Runnables mithilfe eines Skripts oder und wie Sie vordefinierte und benutzerdefinierte Umgebungsvariablen konfigurieren.

Nachdem Sie die Grundlagen der Schaffung von Arbeitsplätzen verstanden haben, Ein Job, der eine oder mehrere der folgenden zusätzlichen Konfigurationsoptionen verwendet:

  • Zugriff für einen Job steuern:

    • Zugriff auf einen Job mit einem benutzerdefinierten Dienstkonto steuern erklärt, wie das Dienstkonto eines Jobs angegeben wird, was sich auf die Ressourcen und Anwendungen, auf die die VMs eines Jobs zugreifen können. Wenn Sie keine ein benutzerdefiniertes Dienstkonto angeben, verwenden Jobs standardmäßig die Standardmäßiges Compute Engine-Dienstkonto

    • Netzwerkübersicht erhalten Sie einen Überblick darüber, wann und wie Sie Netzwerkkonfiguration für einen Job, einschließlich der Angabe der Netzwerk des Jobs blockieren, externe Verbindungen blockieren Daten und Ressourcen mithilfe von VPC Service Controls schützen

    • Im Hilfeartikel Vertrauliche Daten mit Secret Manager schützen wird beschrieben, wie Sie vertrauliche Daten wie benutzerdefinierte Umgebungsvariablen und Anmeldedaten sicher definieren, indem Sie beim Erstellen eines Jobs verschlüsselte Informationen mit Secret Manager-Secrets angeben.

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

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

    • Ressourcen anpassen, auf denen ein Job ausgeführt wird:

      • Jobressourcen mit einer VM-Instanzvorlage definieren wird erläutert, wie Sie eine Compute Engine-VM-Vorlage angeben, beim Erstellen eines Jobs die Ressourcen eines Jobs definieren. Dies ist ein Alternative zur direkten Angabe der Ressourcen eines Jobs mithilfe der Methode Feld instances[].policy.

      • GPUs für einen Job verwenden beschreibt, wie Sie einen Job definieren, der eine oder mehrere Grafikprozessoren (GPUs) verwendet. Gängige Anwendungsfälle für Jobs mit GPUs sind intensive Datenverarbeitung oder Arbeitslasten für maschinelles Lernen.

      • Informationen unter Speicher-Volumes für einen Job verwenden 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.

      • VM-Betriebssystem-Umgebung – Übersicht erhalten Sie einen Überblick darüber, wann und wie Sie VM-Betriebssystemumgebung (OS) für einen Job, einschließlich der VM-Betriebssystem-Image und Bootlaufwerke.

    • Verschiedene Aspekte eines Jobs optimieren:

      • Monitoring und Analyse verbessern:

      • Wiederholungsversuche für Aufgaben automatisieren wird erläutert, wie Sie die Aufgaben eines Jobs Fehler. Automatisierte Wiederholungsversuche können dazu beitragen, Probleme beheben und die Gesamtlaufzeit ist für Jobs mit temporären Fehlern erforderlich. Sie können automatische Wiederholungen beispielsweise für einen Job verwenden, der auf Spot-VMs ausgeführt wird. Diese bieten zwar erhebliche Rabatte, sind aber möglicherweise nicht immer verfügbar und können jederzeit aufgelöst werden.

      • VMs am selben Ort platzieren, um die Latenz zu verringern wird erläutert, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren, indem Sie die VMs müssen physisch nahe beieinander liegen. Dieser Leistungsvorteil ist besonders nützlich für Jobs, eine regelmäßige Netzwerkkommunikation zwischen VMs erfolgen, z. B. Aufgaben, mithilfe von MPI-Bibliotheken kommunizieren können.

      • Ressourcenverfügbarkeit mit VM-Reservierungen gewährleisten wird erläutert, wie Sie einen Job konfigurieren, 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.

      • Bildstreaming verwenden erläutert, wie Sie die Startzeit von Jobs durch Streamingcontainer verbessern Images aus Artifact Registry.

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

Nächste Schritte