Questo documento descrive come creare ed eseguire un job non pianificato fino a quando job specifici non sono stati completati o non sono stati generati errori. 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 automatica di job che utilizzano ciascuna VM separate. Ad esempio, separa i tipi di VM utilizzati per operazioni a bassa richiesta (come la preparazione dei dati) e operazioni ad alta intensità di calcolo (come l'elaborazione dei dati). Utilizzando job dipendenti per ottimizzare il consumo delle risorse, puoi ridurre i costi e l'utilizzo della quota.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida introduttiva all'utilizzo di Batch e attivalo 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:
-
Batch Job Editor (
roles/batch.jobsEditor
) nel progetto -
Utente dell'account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Batch Job Editor (
Limitazioni
I job dipendenti presentano le seguenti limitazioni:
Un job dipendente può avere fino a quattro dipendenze. Ogni dipendenza deve contenere un nome job univoco e uno dei seguenti stati obbligatori:
SUCCEEDED
: riuscitaFAILED
: non riuscitaFINISHED
: riuscita o non riuscita
Quando crei un job dipendente, tutti i job di dipendenza devono esistere.
Un job dipendente non può entrare nello stato pianificato (
SCHEDULED
) finché ogni job di dipendenza non ha raggiunto lo stato richiesto. Se diventa impossibile per un job di dipendenza accedere allo stato richiesto, il job dipendente non riesce immediatamente senza essere pianificato.Come tutti i job, un job dipendente non può entrare nello stato pianificato (
SCHEDULED
) se supera il tempo di attesa massimo in coda. Batch applica questo limite per impedire che i job diventino inutilizzabili. 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 eventuali attività e elementi eseguibili che non sono necessari per il completamento.
- 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 dipendente utilizzando i seguenti metodi:
- Per Google Cloud CLI, utilizza il comando
gcloud alpha batch jobs submit
. - Per l'API Batch, utilizza il metodo
jobs.create
v1alpha.
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 questo job dipendente possa essere pianificato.REQUIRED_STATE
: lo stato richiesto per il compito di dipendenza corrispondente, che deve essereSUCCEEDED
,FAILED
oFINISHED
.
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.