Abhängige Jobs planen

In diesem Dokument wird beschrieben, wie Sie einen Job erstellen und ausführen, der erst geplant wird, wenn bestimmte Jobs erfolgreich abgeschlossen oder fehlgeschlagen sind. Weitere Informationen zu Jobstatus finden Sie unter Job erstellen und ausführen – Übersicht.

Wenn Sie eine Arbeitslast mit unterschiedlichen Ressourcenanforderungen haben, sollten Sie abhängige Jobs verwenden, um eine automatisierte Kette von Jobs zu erstellen, für die jeweils separate VMs verwendet werden. Trennen Sie beispielsweise die VM-Typen, die für Vorgänge mit geringer Nachfrage (z. B. Datenvorbereitung) und rechenintensive Vorgänge (z. B. Datenverarbeitung) verwendet werden. Wenn Sie abhängige Jobs verwenden, um den Ressourcenverbrauch zu optimieren, können Sie Kosten und Kontingentnutzung senken.

Hinweise

  1. Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Abschnitt Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
  2. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:

    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.

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: erfolgreich
    • FAILED: fehlgeschlagen
    • FINISHED: 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 in den Status „Geplant“ (SCHEDULED) übergehen, 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 nicht in den Status „Geplant“ (SCHEDULED) wechseln, wenn er die maximale Wartezeit in der Warteschlange überschreitet. 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ängigen Jobs erforderlich ist, dieses Limit überschreiten könnte, sollten Sie eine oder mehrere der folgenden Maßnahmen in Betracht ziehen:

    • Wenn Sie noch keinen Abhängigkeitsjob erstellt haben, versuchen Sie, die erwartete Laufzeit des Abhängigkeitsjobs zu verkürzen. Sie können beispielsweise die Parallelität der Arbeitslast erhöhen oder die Laufzeit von Tasks und Runnables 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 abhängigen Job erstellen, indem Sie eine der folgenden Methoden verwenden:

Wenn Sie angeben möchten, dass ein Job abhängig ist, fügen Sie das Feld dependencies[].items ein, das ein oder mehrere als Schlüssel/Wert-Paare angegebene Abhängigkeiten unterstützt, 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 darf.

  • REQUIRED_STATE: Der erforderliche Status für den entsprechenden Abhängigkeitsjob, der SUCCEEDED, FAILED oder FINISHED sein muss.

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