In diesem Dokument wird beschrieben, wie Sie einen Job erstellen und ausführen, der erst geplant wird, wenn bestimmte Jobs erfolgreich abgeschlossen wurden oder fehlgeschlagen sind. Weitere Informationen zu Jobstatus finden Sie unter Übersicht über die Joberstellung und -ausführung.
Wenn Sie eine Arbeitslast mit unterschiedlichen Ressourcenanforderungen haben, sollten Sie abhängige Jobs verwenden, um eine automatisierte Kette von Jobs zu erstellen, die jeweils separate VMs verwenden. Trennen Sie beispielsweise die VM-Typen, die für Vorgänge mit geringer Last (z. B. Datenvorbereitung) und rechenintensive Vorgänge (z. B. Datenverarbeitung) verwendet werden. Durch die Verwendung abhängiger Jobs zur Optimierung des Ressourcenverbrauchs können Sie Kosten und Kontingentnutzung reduzieren.
Hinweis
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Artikel Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzererfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:
- Batch Job Editor (
roles/batch.jobsEditor) für das Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das Dienstkonto des Jobs, das standardmäßig das Standarddienstkonto für Compute Engine ist
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Batch Job Editor (
Beschränkungen
Für abhängige Jobs gelten die folgenden Einschränkungen:
Ein abhängiger Job kann bis zu vier Abhängigkeiten haben. Jede Abhängigkeit muss einen eindeutigen Jobnamen und einen der folgenden erforderlichen Status enthalten:
SUCCEEDED: erfolgreichFAILED: fehlgeschlagenFINISHED: erfolgreich oder fehlgeschlagen
Wenn Sie einen abhängigen Job erstellen, müssen alle zugehörigen Abhängigkeitsjobs vorhanden sein.
Ein abhängiger Job kann erst den Status „Geplant“ (
SCHEDULED) erreichen, wenn jeder Abhängigkeitsjob den erforderlichen Status erreicht hat. Wenn ein Abhängigkeitsjob den erforderlichen Status nicht erreichen kann, schlägt der abhängige Job sofort fehl, ohne geplant zu werden.Wie alle Jobs kann ein abhängiger Job den Status „Geplant“ (
SCHEDULED) nicht erreichen, wenn die maximale Wartezeit in der Warteschlange überschritten wird. Batch erzwingt dieses Limit, um zu verhindern, dass Ihre Jobs veraltet sind. Wenn Sie also davon ausgehen, dass die verbleibende Zeit, die für den Abschluss eines der Abhängigkeitsjobs erforderlich ist, dieses Limit überschreiten könnte, sollten Sie eine oder mehrere der folgenden Maßnahmen ergreifen:- Wenn Sie noch keinen Abhängigkeitsjob erstellt haben, versuchen Sie, die erwartete Laufzeit des Abhängigkeitsjobs zu verkürzen. Sie können beispielsweise den Parallelismus der Arbeitslast erhöhen oder die Laufzeit von Aufgaben und ausführbaren Dateien begrenzen, die nicht erfolgreich abgeschlossen werden müssen.
- Warten Sie mit dem Erstellen des abhängigen Jobs, bis die erwartete Laufzeit der Abhängigkeitsjobs unter dem Limit liegt.
Abhängigen Job erstellen
Sie können einen Job erstellen, der mit den folgenden Methoden abhängig ist:
- Verwenden Sie für die Google Cloud CLI den
gcloud alpha batch jobs submitBefehl. - Verwenden Sie für die Batch API die v1alpha
jobs.createMethode.
Wenn Sie angeben möchten, dass ein Job abhängig ist, fügen Sie das
dependencies[].items Feld,
das eine oder mehrere Abhängigkeiten unterstützt, die als Schlüssel-Wert-Paare angegeben werden, in den
Hauptteil der JSON-Datei ein:
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
}
}
]
Ersetzen Sie Folgendes:
DEPENDENCY_JOB_NAME: der Name eines Abhängigkeitsjobs, der den erforderlichen Status erreichen muss, bevor dieser abhängige Job geplant werden kann.REQUIRED_STATE: der erforderliche Status für den entsprechenden Abhängigkeitsjob. Dieser mussSUCCEEDED,FAILEDoderFINISHEDsein.
Ein abhängiger Job mit drei Abhängigkeiten kann beispielsweise eine JSON-Konfigurationsdatei haben, die der folgenden ähnelt:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
"DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
"DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
}
}
]
}
Nächste Schritte
- Wenn Sie Probleme beim Erstellen oder Ausführen eines Jobs haben, lesen Sie den Abschnitt zur Fehlerbehebung.
- Informationen zum Ansehen von Jobs und Aufgaben.
- Weitere Optionen für die Joberstellung .