Pianificare job dipendenti

Questo documento descrive come creare ed eseguire un job non pianificato fino a quando job specifici non vengono completati o non vanno a buon fine. Per scoprire di più sugli stati dei job, consulta la Panoramica della creazione e dell'esecuzione dei job.

Se hai un carico di lavoro con requisiti di risorse variabili, valuta la possibilità di utilizzare job dipendenti per creare una catena automatizzata di job che utilizzano VM separate. Ad esempio, separa i tipi di VM utilizzati per le operazioni a bassa richiesta (come la preparazione dei dati) e le operazioni ad alta intensità di calcolo (come l'elaborazione dei dati). Utilizzando i job dipendenti per ottimizzare il consumo di risorse, puoi ridurre i costi e l'utilizzo delle quote.

Prima di iniziare

  1. Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
  2. Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Limitazioni

I job dipendenti presentano le seguenti limitazioni:

  • Un job dipendente può avere fino a quattro dipendenze. Ogni dipendenza deve contenere un nome del job univoco e uno dei seguenti stati obbligatori:

    • SUCCEEDED: operazione riuscita
    • FAILED: non riuscito
    • FINISHED: riuscita o non riuscita
  • Quando crei un job dipendente, tutti i relativi job di dipendenza devono esistere.

  • Un job dipendente non può passare allo stato Pianificato (SCHEDULED) finché ogni job dipendente non ha raggiunto lo stato richiesto. Se un job di dipendenza non può entrare nello stato richiesto, il job dipendente non viene pianificato e ha esito negativo immediato.

  • Come tutti i job, un job dipendente non può entrare nello stato pianificato (SCHEDULED) se supera il tempo di attesa massimo nella coda. Batch applica questo limite per evitare che i job diventino obsoleti. Di conseguenza, se prevedi che il tempo rimanente necessario per il completamento di uno dei job di dipendenza potrebbe superare questo limite, valuta la possibilità di eseguire una o più delle seguenti operazioni:

    • Se non hai ancora creato un job di dipendenza, prova a ridurre il tempo di esecuzione previsto del job di dipendenza. Ad esempio, puoi aumentare il parallelismo del carico di lavoro o limitare il tempo di esecuzione di qualsiasi attività e runnable che non devi completare.
    • Attendi di creare il job dipendente finché il tempo di esecuzione previsto dei job di dipendenza non sia inferiore al limite.

Creare un job dipendente

Puoi creare un job dipendente utilizzando i seguenti metodi:

Per specificare che un job è dipendente, includi il campo dependencies[].items, che supporta una o più dipendenze specificate come coppie chiave-valore, nel corpo principale del file JSON:

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

Sostituisci quanto segue:

  • DEPENDENCY_JOB_NAME: il nome di un job di dipendenza, che deve raggiungere lo stato richiesto prima che sia consentita la pianificazione di questo job dipendente.

  • REQUIRED_STATE: lo stato richiesto per il job di dipendenza corrispondente, che deve essere SUCCEEDED, FAILED o FINISHED.

Ad esempio, un job dipendente con tre dipendenze può avere un file di configurazione JSON simile al seguente:

{
  "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"
      }
    }
  ]
}

Passaggi successivi