Questo documento illustra 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, consulta Panoramica della creazione e dell'esecuzione dei job.
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 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 (
-
Ogni volta che crei un job, assicurati che abbia una configurazione di rete valida.
- Se non hai requisiti di rete specifici per il tuo progetto o carico di lavoro e non hai modificato la rete predefinita per il progetto, non è richiesta alcuna azione.
- In caso contrario, devi configurare la rete quando crei un job. Scopri come configurare il networking per un job prima di crearne uno di base, in modo da poter modificare gli esempi riportati di seguito per soddisfare i tuoi requisiti di networking.
-
Ogni volta che crei un job, assicurati che abbia un ambiente VM
sistema operativo (OS) valido.
- Se non hai requisiti specifici per l'immagine del sistema operativo o il disco di avvio della VM per il tuo workload o progetto, non devi fare nulla.
- 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 del sistema operativo della VM o scopri come personalizzare l'ambiente del sistema operativo della VM in modo da poter modificare gli esempi riportati di seguito in base alle tue esigenze.
Creare 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 tutte uno o più
elementi eseguibili,
ovvero gli script e/o i container eseguibili per il job.
Per illustrare le nozioni di base, questa sezione spiega come creare un job di esempio con un solo elemento eseguibile, uno script o un'immagine container:
- Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta la sezione Creare un job container.
- In caso contrario, se non sai se vuoi utilizzare le immagini dei contenitori o se non hai dimestichezza con i contenitori, ti consigliamo di creare un job di script.
Il job di esempio 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à alla volta.
Crea un job di container di base
Puoi selezionare o creare un'immagine contenitore per fornire il codice e le dipendenze necessarie per l'esecuzione del tuo job da qualsiasi ambiente di calcolo. Per ulteriori informazioni, consulta Utilizzare le immagini container e Eseguire i container sulle istanze VM.
Puoi creare un job di container 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 contenitore di base utilizzando la console Google Cloud, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Elenco di job.
Fai clic su
Crea. Viene visualizzata 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 contenitore per l'esecuzione di questo job.
Ad esempio, per aggiungere un contenitore:
Seleziona URL immagine container (valore predefinito).
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 del contenitore 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, procedi nel seguente modo: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 un nuovo rigo.
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 Numero di 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 delle VM di questo job:
Se il tuo job può sopportare il prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la località per questo job:
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 solo 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 Per uso generico.
Per i carichi di lavoro ad alte 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 la sezione Creare ed eseguire un job che utilizza le GPU.
Ad esempio, fai clic su Uso generico (valore predefinito).
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 (valore predefinito).
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) (valore predefinito).
Configura la quantità di risorse VM richieste per ogni attività:
Nel campo Core, inserisci il numero di vCPU 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 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 contenitore in cui viene eseguita ogni attività. Come minimo, un contenitore deve specificare un'immagine nel sottocampoimageUri
, ma potrebbero essere necessari anche sottocampi aggiuntivi. Per ulteriori informazioni, consulta i sottocampicontainer
e il job contenitore di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore viene 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 di non riprovare a eseguire l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui è consentita l'esecuzione di un'attività prima di riprovare o di non riuscire, 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
, consulta Limitare i tempi di esecuzione di 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 viene 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 viene 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 località 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'busybox
immagine del container Docker:
Crea un file JSON nella directory attuale denominato
hello-world-container.json
con i seguenti contenuti:{ "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 di contenitore di base utilizzando l'API Batch, utilizza il metodo jobs.create
.
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
.
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
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.CONTAINER
: il contenitore in cui viene eseguita ogni attività. Come minimo, un contenitore deve specificare un'immagine nel sottocampoimageUri
, ma potrebbero essere necessari anche sottocampi aggiuntivi. Per ulteriori informazioni, consulta i sottocampicontainer
e il job contenitore di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore viene 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 di non riprovare a eseguire l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui è consentita l'esecuzione di un'attività prima di riprovare o di non riuscire, 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
, consulta Limitare i tempi di esecuzione di 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 viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al 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 viene impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando l'immagine del 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 Go.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Java.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Node.js.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Python.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch C++.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Creare 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 di job.
Fai clic su
Crea. Viene visualizzata 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 contenitore per l'esecuzione di questo job.
Ad esempio, per aggiungere uno script:
Seleziona Script. Viene visualizzato un campo.
Nel campo, inserisci uno script da eseguire per ogni attività di 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 Numero di 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 delle VM di questo job:
Se il tuo job può sopportare il prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la località per questo job:
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 solo 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 Per uso generico.
Per i carichi di lavoro ad alte 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 la sezione Creare ed eseguire un job che utilizza le GPU.
Ad esempio, fai clic su Uso generico (valore predefinito).
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 (valore predefinito).
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) (valore predefinito).
Configura la quantità di risorse VM richieste per ogni attività:
Nel campo Core, inserisci il numero di vCPU 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 ulteriori informazioni, consulta i subcampiscript
e il job di script di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore viene 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 di non riprovare a eseguire l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui è consentita l'esecuzione di un'attività prima di riprovare o di non riuscire, 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
, consulta Limitare i tempi di esecuzione di 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 viene 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 viene 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 località 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 i seguenti contenuti:{ "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 ulteriori informazioni 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
: il ID progetto del tuo progetto.LOCATION
: la località 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 ulteriori informazioni, consulta i subcampiscript
e il job di script di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore viene 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 di non riprovare a eseguire l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui è consentita l'esecuzione di un'attività prima di riprovare o di non riuscire, 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
, consulta Limitare i tempi di esecuzione di 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 viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al 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 viene 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 Go.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Java.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Node.js.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Python.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch C++.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Utilizzare le variabili di ambiente
Utilizza le variabili di ambiente quando scrivi uno script o un'immagine container per cui vuoi che venga eseguito un job. Puoi utilizzare una delle variabili di ambiente predefinite per tutti i job batch e le eventuali variabili di ambiente personalizzate che definisci durante la creazione del job.
Utilizzare le variabili di ambiente predefinite
Per impostazione predefinita, i file eseguibili nel 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 questa attività è stata già tentata. Il valore è0
durante il primo tentativo di un'attività e viene incrementato per ogni nuovo tentativo. 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, consulta Automatizzare i tentativi ripetuti delle attività.
Per un esempio di come utilizzare le variabili di ambiente predefinite, consulta gli esempi di eseguibili precedenti in Creare un job di base in questo documento.
Definire e utilizzare 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 preferito per i relativi dati:
Per una variabile che ha lo stesso valore per tutte le attività, utilizza una delle seguenti opzioni:
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 distinto per tutti i runnable, utilizza uno o più ambienti di runnable 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 sottocampi dell'ambiente:
Per definire la variabile direttamente nel file JSON di configurazione del job, utilizza il sottocampo delle 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 delle variabili di secret (
secretVariables
). Per saperne di più sull'utilizzo dei secret in un job, consulta Proteggere i dati sensibili utilizzando Secret Manager.Per utilizzare i contenuti criptati di una chiave Cloud Key Management Service esistente, utilizza il sottocampo delle 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 l'interfaccia a riga di comando gcloud o l'API Batch. Gli esempi riportati di seguito spiegano come creare due job che definiscono e utilizzano variabili standard. Il primo job di esempio ha una variabile per un eseguibile specifico. Il secondo job di esempio ha una variabile array, che ha un valore diverso per ogni attività.
gcloud
Se vuoi definire un job che trasmette una variabile di ambiente a un programma eseguibile eseguito da ogni attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un programma eseguibile. In caso contrario, se vuoi definire un job che trasmette 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à.
Definire e utilizzare una variabile di ambiente per un file eseguibile
Per creare un job che trasmette le variabili di ambiente a un file eseguibile utilizzando la CLI gcloud, 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 tre attività, effettua la seguente richiesta:
Crea un file JSON nella directory attuale denominato
hello-world-environment-variables.json
con i seguenti contenuti:{ "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 delle variabili di ambiente sono scritti in maiuscolo.VARIABLE_VALUE
: facoltativo. Il valore della variabile di ambiente passata a ogni attività.
Esegui questo comando:
gcloud batch jobs submit example-environment-variables-job \ --location us-central1 \ --config hello-world-environment-variables.json
Definire e utilizzare una variabile di ambiente per ogni attività
Per creare un job che trasmette 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 3 variabili di ambiente con nomi corrispondenti e valori diversi e che trasmetta 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 i seguenti contenuti:{ "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 nomi delle variabili di ambiente sono scritti in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata alla prima attività, per la 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 alla terza attività, per la 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 trasmette una variabile di ambiente a un programma eseguibile eseguito da ogni attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un programma eseguibile. In caso contrario, se vuoi definire un job che trasmette 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à.
Definire e utilizzare una variabile di ambiente per un file eseguibile
Per creare un job che trasmette le variabili di ambiente a un file 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à, effettua 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
: il ID progetto del tuo progetto.VARIABLE_NAME
: il nome della variabile di ambiente passata a ogni attività. Per convenzione, i nomi delle variabili di ambiente sono scritti in maiuscolo.VARIABLE_VALUE
: il valore della variabile di ambiente passata a ogni attività.
Definire e utilizzare una variabile di ambiente per ogni attività
Per creare un job che trasmette 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 le passi agli script di tre attività in base ai relativi indici, effettua 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
: il ID progetto del tuo progetto.TASK_VARIABLE_NAME
: il nome delle variabili di ambiente passate alle attività con indici corrispondenti. Per convenzione, i nomi delle variabili di ambiente sono scritti in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata alla prima attività, per la 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 alla terza attività, per la qualeBATCH_TASK_INDEX
è uguale a2
.
Passaggi successivi
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.