Questo documento descrive come creare ed eseguire un job che non viene pianificato fino a quando job specifici non sono stati completati o non sono riusciti. Per saperne di più sugli stati dei job, consulta la panoramica sulla creazione e l'esecuzione dei job.
Se hai un workload con requisiti di risorse variabili, valuta la possibilità di utilizzare job dipendenti per creare una catena automatizzata di job, ognuno dei quali utilizza VM separate. Ad esempio, separa i tipi di VM utilizzati per le operazioni a bassa richiesta (come la preparazione dei dati) e le operazioni a elevato utilizzo di calcolo (come l'elaborazione dei dati). Utilizzando i job dipendenti per ottimizzare il consumo di risorse, puoi ridurre i costi e l'utilizzo della quota.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Editor di job batch (
roles/batch.jobsEditor) sul progetto - Utente account di servizio (
roles/iam.serviceAccountUser) sul service account del job, che per impostazione predefinita è il service account predefinito di Compute Engine
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.
- Editor di job batch (
Limitazioni
I job dipendenti presentano le seguenti limitazioni:
Un job dipendente può avere fino a quattro dipendenze. Ogni dipendenza deve contenere un nome di job univoco e uno dei seguenti stati obbligatori:
SUCCEEDED: operazione riuscitaFAILED: operazione non riuscitaFINISHED: operazione riuscita o non riuscita
Quando crei un job dipendente, devono esistere tutti i job di dipendenza.
Un job dipendente non può passare allo stato pianificato (
SCHEDULED) finché ogni job di dipendenza non ha raggiunto lo stato richiesto. Se un job di dipendenza non può raggiungere lo stato richiesto, il job dipendente non viene pianificato e non riesce immediatamente.Come tutti i job, un job dipendente non può passare allo 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 workload o limitare il tempo di esecuzione di eventuali attività ed eseguibili che non devono essere completati.
- Attendi di creare il job dipendente finché il tempo di esecuzione previsto dei job di dipendenza non è inferiore al limite.
Creare un job dipendente
Puoi creare un job che è dipendente utilizzando i seguenti metodi:
- Per Google Cloud CLI, utilizza il
gcloud alpha batch jobs submitcomando. - Per l'API Batch, utilizza il v1alpha
jobs.createmetodo.
Per specificare che un job è dipendente, includi il
dependencies[].items campo,
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 questo job dipendente possa essere pianificato.REQUIRED_STATE: lo stato richiesto per il job di dipendenza corrispondente, che deve essereSUCCEEDED,FAILEDoFINISHED.
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
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Scopri come visualizzare job e attività.
- Scopri di più sulle opzioni di creazione dei job .