Questo documento spiega le nozioni di base per la creazione di job batch: come creare ed eseguire un job basato su uno script o un'immagine container e utilizzare variabili predefinite e personalizzate. Per scoprire di più sulla creazione e l'esecuzione dei job, vedi Panoramica della creazione e dell'esecuzione dei job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la sezione 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:
-
Batch Job Editor (
roles/batch.jobsEditor
) sul progetto -
Utente service account (
roles/iam.serviceAccountUser
) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito
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.
-
Batch Job Editor (
-
Ogni volta che crei un job, assicurati che abbia una configurazione di rete valida.
- Se non hai requisiti di networking specifici per il tuo carico di lavoro o progetto e non hai modificato la rete predefinita per il tuo progetto, non è necessario alcun intervento.
- In caso contrario, devi configurare il networking quando crei un job. Scopri come configurare il networking per un job prima di creare un job di base, in modo da poter modificare gli esempi riportati di seguito in base ai tuoi requisiti di networking.
-
Ogni volta che crei un job, assicurati che abbia un ambiente del sistema operativo (OS) VM valido.
- Se non hai requisiti specifici per l'immagine del sistema operativo VM o per il disco di avvio per il tuo carico di lavoro o progetto, non è richiesta alcuna azione.
- In caso contrario, devi preparare un'opzione di ambiente OS VM valida. Prima di creare un job di base, consenti la configurazione predefinita per l'ambiente OS della VM o scopri come personalizzare l'ambiente OS della VM in modo da poter modificare gli esempi riportati di seguito in base alle tue esigenze.
Crea un job di base
Per informazioni su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la
risorsa REST projects.locations.jobs
.
In sintesi, un job è costituito da un array di una o più attività
che eseguono uno o più
elementi eseguibili,
ovvero gli script e/o i container eseguibili per il job.
Per coprire le nozioni di base, questa sezione spiega come creare un job di esempio con
un solo elemento eseguibile, ovvero uno script o un'immagine container:
- Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta Creare un job container.
- In caso contrario, se non sai se vuoi utilizzare le immagini container o se non hai familiarità con i container, ti consigliamo di creare un job di script.
L'esempio di job per entrambi i tipi di job contiene un gruppo di attività con un array di 4 attività. Ogni attività stampa un messaggio e il relativo indice nell'output standard e in Cloud Logging. La definizione di questo job specifica un parallelismo di 2, il che indica che il job deve essere eseguito su 2 VM per consentire l'esecuzione di 2 attività contemporaneamente.
Crea un job container di base
Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze per l'esecuzione del job da qualsiasi ambiente di calcolo. Per ulteriori informazioni, vedi Utilizzare le immagini container e Eseguire container su istanze VM.
Puoi creare un job contenitore di base utilizzando la console Google Cloud , gcloud CLI, l'API Batch, Go, Java, Node.js, Python o C++.
Console
Per creare un job contenitore di base utilizzando la console Google Cloud , segui questi passaggi:
Nella console Google Cloud , vai alla pagina Elenco dei job.
Fai clic su
Crea. Si apre la pagina Crea job batch. Nel riquadro a sinistra è selezionata la pagina Dettagli job.Configura la pagina Dettagli job:
(Facoltativo) Nel campo Nome job, personalizza il nome del job.
Ad esempio, inserisci
example-basic-job
.Configura la sezione Dettagli attività:
Nella finestra Nuovo eseguibile, aggiungi almeno uno script o un container per l'esecuzione di questo job.
Ad esempio, per aggiungere un container:
Seleziona URL immagine container (impostazione predefinita).
Nel campo URL immagine container, inserisci l'URL di un'immagine container che vuoi eseguire per ogni attività in questo job.
Ad esempio, per utilizzare l'immagine container Docker
busybox
, inserisci il seguente URL:gcr.io/google-containers/busybox
(Facoltativo) Per eseguire l'override del comando
ENTRYPOINT
dell'immagine container, inserisci un comando nel campo Entry point.Ad esempio, inserisci quanto segue:
/bin/sh
(Facoltativo) Per eseguire l'override del comando
CMD
dell'immagine container, fai quanto segue:Seleziona la casella di controllo Esegui l'override del comando CMD dell'immagine container. Viene visualizzato un campo.
Nel campo, inserisci uno o più comandi, separando ciascun comando con una nuova riga.
Ad esempio, inserisci i seguenti comandi:
-c echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
Fai clic su Fine.
Nel campo Conteggio attività, inserisci il numero di attività per questo job. Il valore deve essere un numero intero compreso tra
1
e il limite di attività per gruppo di attività.Ad esempio, inserisci
4
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente. Il numero non può essere maggiore del numero totale di attività e deve essere un numero intero compreso tra
1
e il limite di attività parallele per job.Ad esempio, inserisci
2
.
Configura la pagina Specifiche delle risorse:
Nel riquadro a sinistra, fai clic su Specifiche delle risorse. Viene visualizzata la pagina Specifiche delle risorse.
Nella sezione Modello di provisioning delle VM, seleziona una delle seguenti opzioni per il modello di provisioning per le VM di questo job:
Se il tuo job può resistere al prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la sede per questo lavoro:
Nel campo Regione, seleziona una regione.
Ad esempio, seleziona
us-central1 (Iowa)
(impostazione predefinita).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione di questo job a una zona specifica, seleziona una zona.
In caso contrario, seleziona Qualsiasi.
Ad esempio, seleziona Qualsiasi (impostazione predefinita).
Seleziona una delle seguenti famiglie di macchine:
Per i carichi di lavoro comuni, fai clic su Uso generico.
Per i carichi di lavoro ad alta intensità di prestazioni, fai clic su Ottimizzato per il calcolo.
Per i workload che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Per i carichi di lavoro ottimizzati per l'acceleratore, fai clic su GPU. Per ulteriori informazioni, consulta Crea ed esegui un job che utilizza le GPU.
Ad esempio, fai clic su Uso generico (impostazione predefinita).
Nel campo Serie, seleziona una serie di macchine per le VM di questo job.
Ad esempio, se hai selezionato Uso generico per la famiglia di macchine, seleziona E2 (impostazione predefinita).
Nel campo Tipo di macchina, seleziona un tipo di macchina per le VM di questo job.
Ad esempio, se hai selezionato E2 per la serie di macchine, seleziona e2-medium (2 vCPU, 4 GB di memoria) (impostazione predefinita).
Configura la quantità di risorse VM necessarie per ogni attività:
Nel campo Core, inserisci la quantità di vCPUs per attività.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM in GB per attività.
Ad esempio, inserisci
0.5
(valore predefinito).
(Facoltativo) Per esaminare la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Per creare un job contenitore di base utilizzando gcloud CLI, procedi nel seguente modo:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job contenitore di base, crea un file JSON con i seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST
projects.locations.jobs
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { CONTAINER } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
Sostituisci quanto segue:
CONTAINER
: il container in cui viene eseguita ogni attività. Come minimo, un container deve specificare un'immagine nel campo secondarioimageUri
, ma potrebbero essere necessari anche altri campi secondari. Per ulteriori informazioni, consulta i sottocampicontainer
e l'esempio di job contenitore in questa sezione.CORES
: (Facoltativo). La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: (Facoltativo). La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: (Facoltativo). Il numero massimo di tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non è specificato, il valore viene impostato su0
, il che significa che l'attività non verrà ritentata. Per ulteriori informazioni sul campomaxRetryCount
, vedi Automatizzare i nuovi tentativi di esecuzione delle attività.MAX_RUN_DURATION
: (Facoltativo). Il tempo massimo consentito per l'esecuzione di un'attività prima di essere ritentata o non riuscita, formattato come un valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non è specificato, il valore viene impostato sulla durata massima di esecuzione di un job. Per ulteriori informazioni sul campomaxRunDuration
, vedi Limitare i tempi di esecuzione per attività e eseguibili utilizzando i timeout.TASK_COUNT
: (Facoltativo). Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non è specificato, il valore è impostato su1
.PARALLELISM
: (Facoltativo). Il numero di attività che il job esegue contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è specificato, il valore è impostato su1
.
Crea un job utilizzando il comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la sede del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
Ad esempio, per creare un job che esegue attività utilizzando l'immagine container Docker busybox
:
Crea un file JSON nella directory attuale denominato
hello-world-container.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." ] } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Esegui questo comando:
gcloud batch jobs submit example-container-job \ --location us-central1 \ --config hello-world-container.json
API
Per creare un job container di base utilizzando l'API Batch, utilizza
il metodo jobs.create
.
Per saperne di più su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la risorsa REST projects.locations.jobs
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
CONTAINER
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la sede del lavoro.JOB_NAME
: il nome del job.CONTAINER
: il container in cui viene eseguita ogni attività. Come minimo, un container deve specificare un'immagine nel campo secondarioimageUri
, ma potrebbero essere necessari anche altri campi secondari. Per ulteriori informazioni, consulta i sottocampicontainer
e l'esempio di job contenitore in questa sezione.CORES
: (Facoltativo). La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: (Facoltativo). La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: (Facoltativo). Il numero massimo di tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non è specificato, il valore viene impostato su0
, il che significa che l'attività non verrà ritentata. Per ulteriori informazioni sul campomaxRetryCount
, vedi Automatizzare i nuovi tentativi di esecuzione delle attività.MAX_RUN_DURATION
: (Facoltativo). Il tempo massimo consentito per l'esecuzione di un'attività prima di essere ritentata o non riuscita, formattato come un valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non è specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, vedi Limitare i tempi di esecuzione per attività e eseguibili utilizzando i timeout.TASK_COUNT
: (Facoltativo). Il numero di attività per il job, che deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non è specificato, il valore è impostato su1
.PARALLELISM
: (Facoltativo). Il numero di attività che il job esegue contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è specificato, il valore è impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando l'immagine container Docker busybox
, utilizza la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-container-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
]
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
dove PROJECT_ID
è l'ID progetto del tuo progetto.
Vai
Go
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Go.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Java.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Node.js.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Python.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per C++.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Crea un job di script di base
Puoi creare un job di script di base utilizzando la console Google Cloud , gcloud CLI, l'API Batch, Go, Java, Node.js, Python o C++.
Console
Per creare un job di script di base utilizzando la console Google Cloud , segui questi passaggi:
Nella console Google Cloud , vai alla pagina Elenco dei job.
Fai clic su
Crea. Si apre la pagina Crea job batch. Nel riquadro a sinistra è selezionata la pagina Dettagli job.Configura la pagina Dettagli job:
(Facoltativo) Nel campo Nome job, personalizza il nome del job.
Ad esempio, inserisci
example-basic-job
.Configura la sezione Dettagli attività:
Nella finestra Nuovo eseguibile, aggiungi almeno uno script o un container per l'esecuzione di questo job.
Ad esempio, per aggiungere un copione, procedi nel seguente modo:
Seleziona Script. Viene visualizzato un campo.
Nel campo, inserisci uno script che vuoi eseguire per ogni attività in questo job.
Ad esempio, inserisci il seguente script:
echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
Fai clic su Fine.
Nel campo Conteggio attività, inserisci il numero di attività per questo job. Il valore deve essere un numero intero compreso tra
1
e il limite di attività per gruppo di attività.Ad esempio, inserisci
4
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente. Il numero non può essere maggiore del numero totale di attività e deve essere un numero intero compreso tra
1
e il limite di attività parallele per job.Ad esempio, inserisci
2
.
Configura la pagina Specifiche delle risorse:
Nel riquadro a sinistra, fai clic su Specifiche delle risorse. Viene visualizzata la pagina Specifiche delle risorse.
Nella sezione Modello di provisioning delle VM, seleziona una delle seguenti opzioni per il modello di provisioning per le VM di questo job:
Se il tuo job può resistere al prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la sede per questo lavoro:
Nel campo Regione, seleziona una regione.
Ad esempio, seleziona
us-central1 (Iowa)
(impostazione predefinita).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione di questo job a una zona specifica, seleziona una zona.
In caso contrario, seleziona Qualsiasi.
Ad esempio, seleziona Qualsiasi (impostazione predefinita).
Seleziona una delle seguenti famiglie di macchine:
Per i carichi di lavoro comuni, fai clic su Uso generico.
Per i carichi di lavoro ad alta intensità di prestazioni, fai clic su Ottimizzato per il calcolo.
Per i workload che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Per i carichi di lavoro ottimizzati per l'acceleratore, fai clic su GPU. Per ulteriori informazioni, consulta Crea ed esegui un job che utilizza le GPU.
Ad esempio, fai clic su Uso generico (impostazione predefinita).
Nel campo Serie, seleziona una serie di macchine per le VM di questo job.
Ad esempio, se hai selezionato Uso generico per la famiglia di macchine, seleziona E2 (impostazione predefinita).
Nel campo Tipo di macchina, seleziona un tipo di macchina per le VM di questo job.
Ad esempio, se hai selezionato E2 per la serie di macchine, seleziona e2-medium (2 vCPU, 4 GB di memoria) (impostazione predefinita).
Configura la quantità di risorse VM necessarie per ogni attività:
Nel campo Core, inserisci la quantità di vCPUs per attività.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM in GB per attività.
Ad esempio, inserisci
0.5
(valore predefinito).
(Facoltativo) Per esaminare la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Per creare un job di script di base utilizzando gcloud CLI, procedi nel seguente modo:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job di script di base, crea un file JSON con i seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST
projects.locations.jobs
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { SCRIPT } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
Sostituisci quanto segue:
SCRIPT
: lo script eseguito da ogni attività. Uno script deve essere definito come testo utilizzando il sottocampotext
o come percorso di un file accessibile utilizzando il sottocampopath
. Per saperne di più, consulta i campi secondariscript
e l'esempio di job di script in questa sezione.CORES
: (Facoltativo). La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: (Facoltativo). La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: (Facoltativo). Il numero massimo di tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non è specificato, il valore viene impostato su0
, il che significa che l'attività non verrà ritentata. Per ulteriori informazioni sul campomaxRetryCount
, vedi Automatizzare i nuovi tentativi di esecuzione delle attività.MAX_RUN_DURATION
: (Facoltativo). Il tempo massimo consentito per l'esecuzione di un'attività prima di essere ritentata o non riuscita, formattato come un valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non è specificato, il valore viene impostato sulla durata massima di esecuzione di un job. Per ulteriori informazioni sul campomaxRunDuration
, vedi Limitare i tempi di esecuzione per attività e eseguibili utilizzando i timeout.TASK_COUNT
: (Facoltativo). Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non è specificato, il valore è impostato su1
.PARALLELISM
: (Facoltativo). Il numero di attività che il job esegue contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è specificato, il valore è impostato su1
.
Crea un job utilizzando il comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la sede del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
Ad esempio, per creare un job che esegue attività utilizzando uno script:
Crea un file JSON nella directory attuale denominato
hello-world-script.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Esegui questo comando:
gcloud batch jobs submit example-script-job \ --location us-central1 \ --config hello-world-script.json
API
Per creare un job di script di base utilizzando l'API Batch, utilizza il
metodo jobs.create
.
Per saperne di più su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la risorsa REST projects.locations.jobs
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
SCRIPT
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la sede del lavoro.JOB_NAME
: il nome del job.SCRIPT
: lo script eseguito da ogni attività. Uno script deve essere definito come testo utilizzando il sottocampotext
o come percorso di un file accessibile utilizzando il sottocampopath
. Per saperne di più, consulta i campi secondariscript
e l'esempio di job di script in questa sezione.CORES
: (Facoltativo). La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: (Facoltativo). La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: (Facoltativo). Il numero massimo di tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non è specificato, il valore viene impostato su0
, il che significa che l'attività non verrà ritentata. Per ulteriori informazioni sul campomaxRetryCount
, vedi Automatizzare i nuovi tentativi di esecuzione delle attività.MAX_RUN_DURATION
: (Facoltativo). Il tempo massimo consentito per l'esecuzione di un'attività prima di essere ritentata o non riuscita, formattato come un valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non è specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, vedi Limitare i tempi di esecuzione per attività e eseguibili utilizzando i timeout.TASK_COUNT
: (Facoltativo). Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non è specificato, il valore è impostato su1
.PARALLELISM
: (Facoltativo). Il numero di attività che il job esegue contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è specificato, il valore è impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando uno script, utilizza la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
dove PROJECT_ID
è l'ID progetto del tuo progetto.
Vai
Go
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Go.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Java.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Node.js.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per Python.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch per C++.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Utilizzare le variabili di ambiente
Utilizza le variabili di ambiente quando scrivi un'immagine container o uno script che vuoi che un job esegua. Puoi utilizzare una qualsiasi delle variabili di ambiente predefinite per tutti i job Batch e qualsiasi variabile di ambiente personalizzata definita durante la creazione del job.
Utilizzare le variabili di ambiente predefinite
Per impostazione predefinita, i runnable nel tuo job possono utilizzare le seguenti variabili di ambiente predefinite:
BATCH_TASK_COUNT
: il numero totale di attività in questo gruppo di attività.BATCH_TASK_INDEX
: il numero di indice di questa attività nel gruppo di attività. L'indice della prima attività è0
e viene incrementato per ogni attività aggiuntiva.BATCH_HOSTS_FILE
: il percorso di un file che elenca tutte le istanze VM in esecuzione in questo gruppo di attività. Per utilizzare questa variabile di ambiente, il camporequireHostsFile
deve essere impostato sutrue
.BATCH_TASK_RETRY_ATTEMPT
: il numero di volte in cui è già stato tentato di eseguire questa attività. Il valore è0
durante il primo tentativo di un'attività e viene incrementato per ogni tentativo successivo. Il numero totale di nuovi tentativi consentiti per un'attività è determinato dal valore del campomaxRetryCount
, che è0
se non è definito. Per ulteriori informazioni sui tentativi ripetuti, vedi Automatizzare i tentativi ripetuti delle attività.
Per un esempio di come utilizzare le variabili di ambiente predefinite, consulta gli esempi eseguibili precedenti in Crea un job di base in questo documento.
Definisci e utilizza variabili di ambiente personalizzate
Se vuoi, puoi definire una o più variabili di ambiente personalizzate in un job.
Definisci ogni variabile in un ambiente specifico in base all'ambito desiderato dei dati:
Per una variabile che ha lo stesso valore per tutte le attività, utilizza uno dei seguenti valori:
Se la variabile ha lo stesso valore per tutti i runnable, utilizza l'ambiente di tutti i runnable (campo secondario
environment
ditaskSpec
).In caso contrario, se la variabile ha un valore separato per tutti gli eseguibili, utilizza uno o più ambienti di eseguibili specifici (campo secondario
environment
dirunnables[]
).
In caso contrario, per una variabile array che ha un valore separato per ogni attività, utilizza l'ambiente di tutte le attività (
taskEnvironment
).
Nell'ambiente selezionato, definisci il nome e i valori di ogni variabile utilizzando uno dei seguenti campi secondari dell'ambiente:
Per definire la variabile direttamente nel file JSON di configurazione del job, utilizza il sottocampo variabili standard (
variables
), come mostrato in questa sezione. Questa opzione è consigliata per i dati che non vuoi criptare.Per definire la variabile utilizzando dati criptati, puoi utilizzare Secret Manager o Cloud Key Management Service:
Per utilizzare i contenuti criptati di un secret di Secret Manager esistente, utilizza il sottocampo variabili secret (
secretVariables
). Per saperne di più sull'utilizzo dei secret in un job, vedi Proteggere i dati sensibili utilizzando Secret Manager.Per utilizzare i contenuti criptati di una chiave Cloud Key Management Service esistente, utilizza il campo secondario variabili criptate (
encryptedVariables
). Per ulteriori informazioni sulle chiavi Cloud KMS, consulta la documentazione di Cloud Key Management Service.
Puoi definire e utilizzare variabili di ambiente personalizzate per il tuo job utilizzando gcloud CLI o l'API Batch. I seguenti esempi spiegano come creare due job che definiscono e utilizzano variabili standard. Il primo esempio di job ha una variabile per un eseguibile specifico. Il secondo esempio di job ha una variabile array, che ha un valore diverso per ogni attività.
gcloud
Se vuoi definire un job che passa una variabile di ambiente a un eseguibile che ogni attività esegue, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un eseguibile. Altrimenti, se vuoi definire un job che passa un elenco di variabili di ambiente a diverse attività in base all'indice dell'attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un eseguibile
Per creare un job che passi le variabili di ambiente a un eseguibile utilizzando
gcloud CLI, utilizza il
comando gcloud batch jobs submit
e specifica le variabili di ambiente nel file di configurazione del job.
Ad esempio, per creare un job di script che definisce una variabile di ambiente e la passa agli script di 3 attività, invia la seguente richiesta:
Crea un file JSON nella directory attuale denominato
hello-world-environment-variables.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, "environment": { "variables": { "VARIABLE_NAME": "VARIABLE_VALUE" } } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
Sostituisci quanto segue:
VARIABLE_NAME
: il nome della variabile di ambiente trasmessa a ogni attività. Per convenzione, i nomi variabile di ambiente sono scritti in maiuscolo.VARIABLE_VALUE
: (Facoltativo). Il valore della variabile di ambientee passata a ogni attività.
Esegui questo comando:
gcloud batch jobs submit example-environment-variables-job \ --location us-central1 \ --config hello-world-environment-variables.json
Definisci e utilizza una variabile di ambiente per ogni attività
Per creare un job che passa le variabili di ambiente a un'attività in base all'indice
dell'attività utilizzando gcloud CLI, utilizza il
comando gcloud batch jobs submit
e specifica il campo dell'array taskEnvironments
nel file di configurazione del job.
Ad esempio, per creare un job che includa un array di tre variabili di ambiente con nomi corrispondenti e valori diversi e che passi le variabili di ambiente agli script delle attività i cui indici corrispondono agli indici delle variabili di ambiente nell'array:
Crea un file JSON nella directory attuale denominato
hello-world-task-environment-variables.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "taskEnvironments": [ { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2" } } ] } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
Sostituisci quanto segue:
TASK_VARIABLE_NAME
: il nome delle variabili di ambiente dell'attività trasmesse alle attività con indici corrispondenti. Per convenzione, i nomivariabile di ambientee sono in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata al primo task, per il qualeBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passata alla seconda attività, per la qualeBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passata al terzo task, per il qualeBATCH_TASK_INDEX
è uguale a2
.
Esegui questo comando:
gcloud batch jobs submit example-task-environment-variables-job \ --location us-central1 \ --config hello-world-task-environment-variables.json
API
Se vuoi definire un job che passa una variabile di ambiente a un eseguibile che ogni attività esegue, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un eseguibile. Altrimenti, se vuoi definire un job che passa un elenco di variabili di ambiente a diverse attività in base all'indice dell'attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un eseguibile
Per creare un job che passa le variabili di ambiente a un eseguibile utilizzando
l'API Batch, utilizza il
comando gcloud batch jobs submit
e specifica le variabili di ambiente nel campo environment
.
Ad esempio, per creare un job che includa una variabile di ambiente e la trasmetta agli script di tre attività, invia la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"environment": {
"variables": {
"VARIABLE_NAME": "VARIABLE_VALUE"
}
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.VARIABLE_NAME
: il nome della variabile di ambiente passata a ogni attività. Per convenzione, i nomi variabile di ambiente sono scritti in maiuscolo.VARIABLE_VALUE
: il valore della variabile di ambiente trasmessa a ogni attività.
Definisci e utilizza una variabile di ambiente per ogni attività
Per creare un job che passa le variabili di ambiente a un'attività in base all'indice dell'attività utilizzando l'API Batch, utilizza il metodo jobs.create
e specifica le variabili di ambiente nel campo dell'array taskEnvironments
.
Ad esempio, per creare un job che includa un array di tre variabili di ambiente con nomi corrispondenti e valori diversi e che passi le variabili di ambiente agli script di tre attività in base ai relativi indici, invia la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-task-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"taskEnvironments": [
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2"
}
}
]
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.TASK_VARIABLE_NAME
: il nome delle variabili di ambiente trasmesse alle attività con indici corrispondenti. Per convenzione, i nomivariabile di ambientee sono in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata al primo task, per il qualeBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passata alla seconda attività, per la qualeBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passata al terzo task, per il qualeBATCH_TASK_INDEX
è uguale a2
.
Passaggi successivi
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizzare lavori e attività.
- Scopri di più sulle opzioni di creazione dei job.