Questo documento spiega come creare ed eseguire un job batch che utilizza uno o più volumi di archiviazione esterni. Le opzioni di archiviazione esterna includono disco permanente nuovi o esistenti, nuove unità SSD locali, bucket Cloud Storage esistenti e un file system di rete (NFS) esistente, ad esempio una condivisione file Filestore.
Indipendentemente dall'aggiunta di volumi di archiviazione esterni, ogni VM Compute Engine per un job dispone di un disco di avvio, che fornisce spazio di archiviazione per le istruzioni e l'immagine del sistema operativo (OS) del job. Per informazioni sulla configurazione del disco di avvio per un job, consulta Panoramica dell'ambiente OS VM.
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 -
Crea un job che utilizza un bucket Cloud Storage:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) nel bucket
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 (
Crea un job che utilizza volumi di archiviazione
Se vuoi, un job può utilizzare uno o più di ciascuno dei seguenti tipi di volumi di archiviazione esterno. Per ulteriori informazioni su tutti i tipi di volumi di archiviazione, sulle differenze e sulle limitazioni di ciascuno, consulta la documentazione relativa alle opzioni di archiviazione delle VM Compute Engine.
- disco permanente: archiviazione a blocchi permanente a livello di zona o di regione
- SSD locale: archiviazione a blocchi transitoria ad alte prestazioni
- Bucket Cloud Storage: archiviazione di oggetti a prezzi accessibili
- Network File System (NFS): sistema file distribuito che segue il protocollo NFS, ad esempio una condivisione file Filestore, che è un NFS ad alte prestazioni ospitato su Google Cloud
Puoi consentire a un job di utilizzare ogni volume di archiviazione includendolo
nella definizione del job e specificandone il
percorso di montaggio (mountPath
)
nei file eseguibili. Per scoprire come creare un job che utilizza volumi di archiviazione, consulta una o più delle seguenti sezioni:
- Utilizzare un disco permanente
- Utilizzare un'unità SSD locale
- Utilizzare un bucket Cloud Storage
- Utilizzare un file system di rete
Utilizzare un disco permanente
Un job che utilizza i dischi permanenti presenta le seguenti limitazioni:
Tutti i dischi permanenti: consulta le limitazioni per tutti i dischi permanenti.
Dischi permanenti nuovi ed esistenti: ogni disco permanente in un job può essere nuovo (definito e creato con il job) o esistente (già creato nel progetto e specificato nel job). Per utilizzare un disco permanente, deve essere formattato e montato sulle VM del job, che devono trovarsi nella stessa posizione del disco permanente. Esegue il montaggio batch di tutti i dischi permanenti inclusi in un job e formatta i nuovi dischi permanenti, ma devi formattare e smontare i dischi permanenti esistenti che vuoi che vengano utilizzati da un job.
Le opzioni di posizione, opzioni di formato, e opzioni di montaggio variano in base ai dischi permanenti nuovi ed esistenti, come descritto nella tabella che segue:
Nuovi dischi permanenti Dischi permanenti esistenti Opzioni formato Il disco permanente viene formattato automaticamente con un file system
ext4
.Devi formattare il disco permanente per utilizzare un file system
ext4
prima di utilizzarlo per un job.Opzioni di montaggio Tutte le opzioni sono supportate.
Sono supportate tutte le opzioni tranne la scrittura. Ciò è dovuto alle limitazioni della modalità multiautore.
Prima di utilizzarlo per un job, devi sganciare il disco permanente da tutte le VM a cui è collegato.
Opzioni per località Puoi creare solo dischi permanenti a livello di zona.
Puoi selezionare qualsiasi località per il tuo job. I dischi permanenti vengono creati nella zona in cui viene eseguito il progetto.
Puoi selezionare dischi permanenti a livello di zona e di regione.
Devi impostare la località del job (o, se specificato, solo le località consentite del job) su solo le località che contengono tutti i dischi permanenti del job. Ad esempio, per un disco permanente zonale, la posizione del job deve corrispondere alla zona del disco; per un disco permanente regionale, la posizione del job deve corrispondere alla regione del disco o, se vengono specificate le zone, a una o a entrambe le zone specifiche in cui si trova il disco permanente regionale.Modelli di istanza: se vuoi utilizzare un modello di istanza VM durante la creazione di questo job, devi collegare eventuali disco permanente per questo job nel modello di istanza. In caso contrario, se non vuoi utilizzare un modello di istanza, devi collegare eventuali disco permanente direttamente nella definizione del job.
Puoi creare un job che utilizza un disco permanente utilizzando la consoleGoogle Cloud , gcloud CLI, l'API Batch, C++, Go, Java, Node.js o Python.
Console
Utilizzando la console Google Cloud , l'esempio seguente crea un job che esegue uno script per leggere un file da un disco zonale persistente esistente situato nella zona us-central1-a
. Lo script di esempio presuppone che il job abbia un disco permanente zonale esistente che contenga un file di testo denominatoexample.txt
nella directory principale.
(Facoltativo) Crea un disco permanente di zona di esempio
Se vuoi creare un disco permanente zonale da utilizzare per eseguire lo script di esempio, segui questa procedura prima di creare il job:
Collega un nuovo disco permanente vuoto denominato
example-disk
a una VM Linux nella zonaus-central1-a
, quindi esegui comandi sulla VM per formattare e montare il disco. Per istruzioni, consulta Aggiungere un disco permanente alla tua VM.Non disconnetterti ancora dalla VM.
Per creare
example.txt
sul disco permanente, esegui i seguenti comandi sulla VM:Per modificare la directory di lavoro corrente in quella principale del disco permanente, digita il seguente comando:
cd VM_MOUNT_PATH
Sostituisci VM_MOUNT_PATH con il percorso della directory in cui è stato montato il disco permanente su questa VM nel passaggio precedente, ad esempio
/mnt/disks/example-disk
.Premi
Enter
.Per creare e definire un file denominato
example.txt
, digita il seguente comando:cat > example.txt
Premi
Enter
.Digita i contenuti del file. Ad esempio, digita
Hello world!
.Per salvare il file, premi
Ctrl+D
(oCommand+D
su macOS).
Al termine, puoi scollegarti dalla VM.
Scollega il disco permanente dalla VM.
Se non hai più bisogno della VM, puoi eliminarla, il che comporta lo scollegamento automatico del disco permanente.
In caso contrario, scollega il disco permanente. Per istruzioni, consulta Scollegamento e ricollegamento di dischi di avvio e scollega il disco permanente
example-disk
anziché il disco di avvio della VM.
Crea un job che utilizzi il disco permanente zonale esistente
Per creare un job che utilizzi i dischi zonali permanenti esistenti utilizzando la consoleGoogle 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-disk-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 eseguire uno script che stampi i contenuti di un file chiamato
example.txt
e situato nella directory principale del disco permanente utilizzato da questo job, procedi nel seguente modo:Seleziona la casella di controllo Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci il seguente script:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txt
Sostituisci MOUNT_PATH con il percorso in cui prevedi di montare il disco permanente sulle VM per questo job, ad esempio
/mnt/disks/example-disk
.Fai clic su Fine.
Nel campo Numero di attività, inserisci il numero di attività per questo job.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente.
Ad esempio, inserisci
1
(valore predefinito).
Configura la pagina Specifiche delle risorse:
Nel riquadro a sinistra, fai clic su Specifiche delle risorse. Viene visualizzata la pagina Specifiche delle risorse.
Seleziona la posizione per questo job. Per utilizzare un disco permanente zonale esistente, le VM di un job devono trovarsi nella stessa zona.
Nel campo Regione, seleziona una regione.
Ad esempio, per utilizzare il disco permanente zonale di esempio, seleziona
us-central1 (Iowa)
(predefinito).Nel campo Zona, seleziona una zona.
Ad esempio, seleziona
us-central1-a (Iowa)
.
Configura la pagina Configurazioni aggiuntive:
Nel riquadro a sinistra, fai clic su Configurazioni aggiuntive. Si apre la pagina Configurazioni aggiuntive.
Per ogni disco permanente zonale esistente che vuoi montare su questo job:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, procedi nel seguente modo:
Nella sezione Tipo di volume, seleziona Disco permanente (predefinito).
Nell'elenco Disco, seleziona un disco permanente zonale esistente da montare su questo job. Il disco deve trovarsi nella stessa zona di questo job.
Ad esempio, seleziona il disco permanente zonale esistente che hai preparato, che si trova nella zona
us-central1-a
e contiene il fileexample.txt
.(Facoltativo) Se vuoi rinominare questo disco permanente a livello di zona:
Seleziona Personalizza il nome del dispositivo.
Nel campo Nome dispositivo, inserisci il nuovo nome del disco.
Nel campo Percorso di montaggio, inserisci il percorso di montaggio (MOUNT_PATH) per questo disco permanente:
Ad esempio, inserisci quanto segue:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAME
Sostituisci EXISTING_PERSISTENT_DISK_NAME con il nome del disco. Se hai rinominato il disco permanente zonale, utilizza il nuovo nome.
Ad esempio, sostituisci EXISTING_PERSISTENT_DISK_NAME con
example-disk
.Fai clic su Fine.
(Facoltativo) Configura gli altri campi per questo job.
(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
Utilizzando la gcloud CLI, il seguente esempio crea un job che collega e monta un disco permanente esistente e un nuovo disco permanente.
Il job ha tre attività che eseguono ciascuna uno script per creare un file nel nuovo
disco permanente denominato output_task_TASK_INDEX.txt
dove TASK_INDEX è l'indice di ogni attività: 0, 1 e
2.
Per creare un job che utilizza i dischi permanenti utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
.
Nel file di configurazione JSON del job, specifica i dischi permanenti nel
instances
campo e monta il disco permanente nel campo volumes
.
Crea un file JSON.
Se non utilizzi un modello di istanze per questo job, crea un file JSON con i seguenti contenuti:
{ "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.EXISTING_PERSISTENT_DISK_NAME
: il nome di un disco permanente esistente.EXISTING_PERSISTENT_DISK_LOCATION
: la posizione di un disco permanente esistente. Per ogni disco permanente zonale esistente, la posizione del job deve essere la zona del disco. Per ogni disco permanente regionale esistente, la posizione del job deve essere la regione del disco o, se specifichi le zone, una o entrambe le zone specifiche in cui si trova il disco permanente regionale. Se non specifichi dischi permanenti esistenti, puoi selezionare qualsiasi posizione. Scopri di più sul campoallowedLocations
.NEW_PERSISTENT_DISK_SIZE
: la dimensione del nuovo disco permanente in GB. Le dimensioni consentite dipendono dal tipo di disco permanente, ma spesso il valore minimo è 10 GB (10
) e quello massimo è spesso 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: il tipo di disco del nuovo disco permanente,pd-standard
,pd-balanced
,pd-ssd
opd-extreme
. Il tipo di disco predefinito per i dischi permanenti non di avvio èpd-standard
.NEW_PERSISTENT_DISK_NAME
: il nome del nuovo disco permanente.
Se utilizzi un modello di istanze VM per questo job, crea un file JSON come mostrato in precedenza, tranne per il remplacement del campo
instances
con quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
dove
INSTANCE_TEMPLATE_NAME
è il nome del modello di istanza per questo job. Per un job che utilizza i dischi permanenti, questo modello di istanza deve definire e collegare i dischi permanenti che vuoi che vengano utilizzati dal job. Per questo esempio, il modello deve definire e collegare un nuovo disco permanente denominatoNEW_PERSISTENT_DISK_NAME
e un disco permanente esistente denominatoEXISTING_PERSISTENT_DISK_NAME
.
Esegui questo comando:
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.
API
Utilizzando l'API Batch, il seguente esempio crea un job che collega e monta un disco permanente esistente e un nuovo disco permanente. Il job ha tre attività che eseguono ciascuna uno script per creare un file nel nuovo
disco permanente denominato
output_task_TASK_INDEX.txt
, dove
TASK_INDEX è l'indice di ogni attività: 0, 1 e 2.
Per creare un job che utilizza i dischi permanenti utilizzando l'API Batch, utilizza il metodo jobs.create
.
Nella richiesta, specifica i dischi permanenti nel
instances
campo e monta il disco permanente nel campo volumes
.
Se non utilizzi un modello di istanze per questo job, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.EXISTING_PERSISTENT_DISK_NAME
: il nome di un disco permanente esistente.EXISTING_PERSISTENT_DISK_LOCATION
: la posizione di un disco permanente esistente. Per ogni disco permanente zonale esistente, la posizione del job deve essere la zona del disco. Per ogni disco permanente regionale esistente, la posizione del job deve essere la regione del disco o, se specifichi le zone, una o entrambe le zone specifiche in cui si trova il disco permanente regionale. Se non specifichi dischi permanenti esistenti, puoi selezionare qualsiasi posizione. Scopri di più sul campoallowedLocations
.NEW_PERSISTENT_DISK_SIZE
: la dimensione del nuovo disco permanente in GB. Le dimensioni consentite dipendono dal tipo di disco permanente, ma spesso il valore minimo è 10 GB (10
) e quello massimo è spesso 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: il tipo di disco del nuovo disco permanente,pd-standard
,pd-balanced
,pd-ssd
opd-extreme
. Il tipo di disco predefinito per i dischi permanenti non di avvio èpd-standard
.NEW_PERSISTENT_DISK_NAME
: il nome del nuovo disco permanente.
Se utilizzi un modello di istanze VM per questo job, crea un file JSON come mostrato in precedenza, tranne per il remplacement del campo
instances
con quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
dove
INSTANCE_TEMPLATE_NAME
è il nome del modello di istanza per questo job. Per un job che utilizza i dischi permanenti, questo modello di istanza deve definire e collegare i dischi permanenti che vuoi che vengano utilizzati dal job. Per questo esempio, il modello deve definire e collegare un nuovo disco permanente denominatoNEW_PERSISTENT_DISK_NAME
e un disco permanente esistente denominatoEXISTING_PERSISTENT_DISK_NAME
.
C++
Per creare un job Batch che utilizzi dischi permanenti nuovi o esistenti con le librerie client di Cloud per C++, utilizza la funzione CreateJob
e includi quanto segue:
- Per collegare i dischi permanenti alle VM per un job,
includere uno dei seguenti elementi:
- Se non utilizzi un modello di istanza VM per questo job,
utilizza il metodo
set_remote_path
. - Se utilizzi un modello di istanze VM per questo job, utilizza il metodo
set_instance_template
.
- Se non utilizzi un modello di istanza VM per questo job,
utilizza il metodo
- Per montare i dischi permanenti al job, utilizza il campo
volumes
con i campideviceName
emountPath
. Per i nuovi dischi permanenti, utilizza anche il campomountOptions
per attivare la scrittura.
Per un esempio di codice di un caso d'uso simile, consulta Utilizzare un bucket Cloud Storage.
Vai
Per creare un job Batch che utilizzi dischi permanenti nuovi o esistenti utilizzando le librerie client di Cloud per Go, utilizza la funzione CreateJob
e includi quanto segue:
- Per collegare i dischi permanenti alle VM per un job,
includere uno dei seguenti elementi:
- Se non utilizzi un modello di istanza VM per questo job, includere il tipo
AllocationPolicy_AttachedDisk
. - Se utilizzi un modello di istanza VM per questo job,
includere il tipo
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate
.
- Se non utilizzi un modello di istanza VM per questo job, includere il tipo
- Per montare i dischi permanenti nel job, utilizza il
tipo
Volume
con il tipoVolume_DeviceName
e il campoMountPath
. Per i nuovi dischi permanenti, utilizza anche il campoMountOptions
per attivare la scrittura.
Java
Per creare un job Batch che utilizzi dischi permanenti nuovi o esistenti utilizzando le librerie client Cloud per Java, utilizza la classe CreateJobRequest
e includi quanto segue:
- Per collegare i dischi permanenti alle VM per un job,
includere uno dei seguenti elementi:
- Se non utilizzi un modello di istanza VM per questo job,
includere il metodo
setDisks
. - Se utilizzi un modello di istanza VM per questo job,
includere il metodo
setInstanceTemplate
.
- Se non utilizzi un modello di istanza VM per questo job,
includere il metodo
- Per montare i dischi permanenti al job, utilizza la
classe
Volume
con il metodosetDeviceName
e il metodosetMountPath
. Per i nuovi dischi permanenti, utilizza anche il metodosetMountOptions
per attivare la scrittura.
Ad esempio, utilizza il seguente esempio di codice:
Node.js
Per creare un job Batch che utilizzi dischi permanenti nuovi o esistenti utilizzando le librerie client di Cloud per Node.js, utilizza il metodo createJob
e includi quanto segue:
- Per collegare i dischi permanenti alle VM per un job,
includere uno dei seguenti elementi:
- Se non utilizzi un modello di istanza VM per questo job,
includere la classe
AllocationPolicy.AttachedDisk
. - Se utilizzi un modello di istanza VM per questo job, includere la proprietà
instanceTemplate
.
- Se non utilizzi un modello di istanza VM per questo job,
includere la classe
- Per montare i dischi permanenti al job, utilizza la
classe
Volume
con la proprietàdeviceName
e la proprietàmountPath
. Per i nuovi dischi permanenti, utilizza anche la proprietàmountOptions
per attivare la scrittura.
Python
Per creare un job Batch che utilizzi dischi permanenti nuovi o esistenti utilizzando le librerie client di Cloud per Python, utilizza la funzione CreateJob
e includi quanto segue:
- Per collegare i dischi permanenti alle VM per un job,
includere uno dei seguenti elementi:
- Se non utilizzi un modello di istanza VM per questo job,
includere la classe
AttachedDisk
. - Se utilizzi un modello di istanza VM per questo job,
include l'attributo
instance_template
.
- Se non utilizzi un modello di istanza VM per questo job,
includere la classe
- Per montare i dischi permanenti sul job, utilizza la
classe
Volume
con l'attributodevice_name
e l'attributomount_path
. Per i nuovi dischi permanenti, utilizza anche l'attributomount_options
per abilitare la scrittura.
Ad esempio, utilizza il seguente esempio di codice:
Utilizzare un'unità SSD locale
Un job che utilizza SSD locali presenta le seguenti limitazioni:
- Tutte le unità SSD locali. Leggi le limitazioni per tutte le unità SSD locali.
- Modelli di istanze Se vuoi specificare un modello di istanza VM durante la creazione di questo job, devi collegare eventuali disco permanente per questo job nel modello di istanza. In caso contrario, se non vuoi utilizzare un modello di istanza, devi collegare eventuali disco permanente direttamente nella definizione del job.
Puoi creare un job che utilizza un'unità SSD locale utilizzando gcloud CLI, l'API Batch, Java o Python.
L'esempio seguente descrive come creare un job che crea, collega e monta un'unità SSD locale. Il job contiene anche tre attività
che eseguono ciascuna uno script per creare un file nell'unità SSD locale denominato
output_task_TASK_INDEX.txt
, dove
TASK_INDEX
è l'indice di ogni attività:
0
, 1
e 2
.
gcloud
Per creare un job che utilizza SSD locali utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
.
Nel file di configurazione JSON del job, crea e collega le unità SSD locali nel campo instances
e montale nel campo volumes
.
Crea un file JSON.
Se non utilizzi un modello di istanze per questo job, crea un file JSON con i seguenti contenuti:
{ "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
MACHINE_TYPE
: il tipo di macchina, che può essere predefinito o personalizzato, delle VM del job. Il numero consentito di SSD locali dipende dal tipo di macchina per le VM del tuo job.LOCAL_SSD_NAME
: il nome di un'unità SSD locale creata per questo job.LOCAL_SSD_SIZE
: le dimensioni di tutte le SSD locali in GB. Ogni SSD locale ha una dimensione di 375 GB, quindi questo valore deve essere un multiplo di375
GB. Ad esempio, per 2 unità SSD locali, imposta questo valore su750
GB.
Se utilizzi un modello di istanze VM per questo job, crea un file JSON come mostrato in precedenza, tranne per il remplacement del campo
instances
con quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
dove
INSTANCE_TEMPLATE_NAME
è il nome del modello di istanza per questo job. Per un job che utilizza SSD locali, questo modello di istanza deve definire e collegare le SSD locali che vuoi che vengano utilizzate dal job. Per questo esempio, il modello deve definire e collegare un'unità SSD locale denominataLOCAL_SSD_NAME
.
Esegui questo comando:
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.
API
Per creare un job che utilizzi gli SSD locali utilizzando l'API Batch, utilizza il metodo jobs.create
.
Nella richiesta, crea e collega le unità SSD locali nel campo instances
e montale nel campo volumes
.
Se non utilizzi un modello di istanze per questo job, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinito o personalizzato, delle VM del job. Il numero consentito di SSD locali dipende dal tipo di macchina per le VM del tuo job.LOCAL_SSD_NAME
: il nome di un'unità SSD locale creata per questo job.LOCAL_SSD_SIZE
: le dimensioni di tutte le SSD locali in GB. Ogni SSD locale ha una dimensione di 375 GB, quindi questo valore deve essere un multiplo di375
GB. Ad esempio, per 2 unità SSD locali, imposta questo valore su750
GB.
Se utilizzi un modello di istanze VM per questo job, crea un file JSON come mostrato in precedenza, tranne per il remplacement del campo
instances
con quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
dove
INSTANCE_TEMPLATE_NAME
è il nome del modello di istanza per questo job. Per un job che utilizza SSD locali, questo modello di istanza deve definire e collegare le SSD locali che vuoi che vengano utilizzate dal job. Per questo esempio, il modello deve definire e collegare un'unità SSD locale denominataLOCAL_SSD_NAME
.
Vai
Java
Node.js
Python
Utilizzare un bucket Cloud Storage
Per creare un job che utilizza un bucket Cloud Storage esistente, seleziona uno dei seguenti metodi:
- (Consigliato) Monta un bucket direttamente sulle VM del job specificando il bucket nella definizione del job, come mostrato in questa sezione. Quando il job viene eseguito, il bucket viene montato automaticamente sulle VM per il job utilizzando Cloud Storage FUSE.
- Crea un job con attività che accedono direttamente a un bucket Cloud Storage utilizzando gcloud CLI o le librerie client per l'API Cloud Storage. Per informazioni su come accedere a un bucket Cloud Storage direttamente da una VM, consulta la documentazione di Compute Engine per Scrittura e lettura di dati dai bucket Cloud Storage.
Prima di creare un job che utilizza un bucket, crea un bucket o identifica un bucket esistente. Per ulteriori informazioni, consulta Creare bucket e Elenco dei bucket.
Puoi creare un job che utilizza un bucket Cloud Storage utilizzando la consoleGoogle Cloud , gcloud CLI, l'API Batch, C++, Go, Java, Node.js o Python.
L'esempio seguente descrive come creare un job che monta un
bucket Cloud Storage. Il job contiene anche tre attività che eseguono ciascuna uno script per creare un file nel bucket denominato output_task_TASK_INDEX.txt
, dove TASK_INDEX
è l'indice di ogni attività: 0
, 1
e 2
.
Console
Per creare un job che utilizza un bucket Cloud Storage utilizzando la consoleGoogle 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-bucket-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, procedi nel seguente modo:
Seleziona la casella di controllo Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci il seguente script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Sostituisci MOUNT_PATH con il percorso di montaggio utilizzato dagli elementi eseguibili di questo job per accedere a un bucket Cloud Storage esistente. Il percorso deve iniziare con
/mnt/disks/
seguito da una directory o un percorso scelto. Ad esempio, se vuoi rappresentare questo bucket con una directory denominatamy-bucket
, imposta il percorso di montaggio su/mnt/disks/my-bucket
.Fai clic su Fine.
Nel campo Numero di attività, inserisci il numero di attività per questo job.
Ad esempio, inserisci
3
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente.
Ad esempio, inserisci
1
(valore predefinito).
Configura la pagina Configurazioni aggiuntive:
Nel riquadro a sinistra, fai clic su Configurazioni aggiuntive. Si apre la pagina Configurazioni aggiuntive.
Per ogni bucket Cloud Storage che vuoi montare su questo job:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, procedi nel seguente modo:
Nella sezione Tipo di volume, seleziona Bucket Cloud Storage.
Nel campo Nome bucket di archiviazione, inserisci il nome di un bucket esistente.
Ad esempio, inserisci il bucket specificato nell'elemento runnable di questo job.
Nel campo Percorso montaggio, inserisci il percorso di montaggio del bucket (MOUNT_PATH), che hai specificato nel file eseguibile.
Fai clic su Fine.
(Facoltativo) Configura gli altri campi per questo job.
(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 che utilizza un bucket Cloud Storage utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
.
Nel file di configurazione JSON del job, monta il bucket nel
volumes
campo.
Ad esempio, per creare un job che esporta file in Cloud Storage:
Crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "gcs": { "remotePath": "BUCKET_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
BUCKET_PATH
: il percorso della directory del bucket a cui vuoi che acceda questo job, che deve iniziare con il nome del bucket. Ad esempio, per un bucket denominatoBUCKET_NAME
, il percorsoBUCKET_NAME
rappresenta la directory principale del bucket e il percorsoBUCKET_NAME/subdirectory
rappresenta la sottodirectorysubdirectory
.MOUNT_PATH
: il percorso di montaggio utilizzato dagli elementi eseguibili del job per accedere a questo bucket. Il percorso deve iniziare con/mnt/disks/
seguito da una directory o un percorso che scegli. Ad esempio, se vuoi rappresentare questo bucket con una directory denominatamy-bucket
, imposta il percorso di montaggio su/mnt/disks/my-bucket
.
Esegui questo comando:
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.
API
Per creare un job che utilizza un bucket Cloud Storage tramite l'API Batch, utilizza il metodo jobs.create
e monta il bucket nel campo volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"gcs": {
"remotePath": "BUCKET_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.BUCKET_PATH
: il percorso della directory del bucket a cui vuoi che questo job acceda, che deve iniziare con il nome del bucket. Ad esempio, per un bucket denominatoBUCKET_NAME
, il percorsoBUCKET_NAME
rappresenta la directory principale del bucket e il percorsoBUCKET_NAME/subdirectory
rappresenta la sottodirectorysubdirectory
.MOUNT_PATH
: il percorso di montaggio utilizzato dagli elementi eseguibili del job per accedere a questo bucket. Il percorso deve iniziare con/mnt/disks/
seguito da una directory o un percorso che scegli. Ad esempio, se vuoi rappresentare questo bucket con una directory denominatamy-bucket
, imposta il percorso di montaggio su/mnt/disks/my-bucket
.
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.
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.
Utilizzare un file system di rete
Puoi creare un job che utilizza un file system di rete (NFS) esistente, come una condivisione file Filestore, utilizzando la console Google Cloud , l'interfaccia a riga di comando gcloud o l'API Batch.
Prima di creare un job che utilizza un NFS, assicurati che il firewall della rete sia configurato correttamente per consentire il traffico tra le VM del job e il NFS. Per ulteriori informazioni, consulta la pagina Configurare le regole firewall per Filestore.
L'esempio seguente descrive come creare un job che specifica e monta un NFS. Il job contiene anche tre attività che eseguono ciascuna uno script per creare un file nel volume NFS denominato
output_task_TASK_INDEX.txt
dove TASK_INDEX
è l'indice di ogni attività:
0
, 1
e 2
.
Console
Per creare un job che utilizza un NFS 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-nfs-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, procedi nel seguente modo:
Seleziona la casella di controllo Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci il seguente script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Sostituisci MOUNT_PATH con il percorso di montaggio utilizzato dall'eseguibile del job per accedere a questo NFS. Il percorso deve iniziare con
/mnt/disks/
seguito da una directory o un percorso che scegli. Ad esempio, se vuoi rappresentare questo NFS con una directory denominatamy-nfs
, imposta il percorso di montaggio su/mnt/disks/my-nfs
.Fai clic su Fine.
Nel campo Numero di attività, inserisci il numero di attività per questo job.
Ad esempio, inserisci
3
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente.
Ad esempio, inserisci
1
(valore predefinito).
Configura la pagina Configurazioni aggiuntive:
Nel riquadro a sinistra, fai clic su Configurazioni aggiuntive. Si apre la pagina Configurazioni aggiuntive.
Per ogni bucket Cloud Storage che vuoi montare su questo job:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, procedi nel seguente modo:
Nella sezione Tipo di volume, seleziona Network File System.
Nel campo File server, inserisci l'indirizzo IP del server in cui si trova l'entità NFS specificata nel file eseguibile di questo job.
Ad esempio, se il tuo NFS è una condivisione file di Filestore, specifica l'indirizzo IP dell'istanza Filestore, che puoi ottenere descrivendo l'istanza Filestore.
Nel campo Percorso remoto, inserisci un percorso che possa accedere al NFS specificato nel passaggio precedente.
Il percorso della directory NFS deve iniziare con
/
followed by the root directory of the NFS.Nel campo Percorso di montaggio, inserisci il percorso di montaggio del volume NFS (MOUNT_PATH) specificato nel passaggio precedente.
Fai clic su Fine.
(Facoltativo) Configura gli altri campi per questo job.
(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 che utilizza un NFS utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
.
Nel file di configurazione JSON del job, monta NFS nel
volumes
campo.
Crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "nfs": { "server": "NFS_IP_ADDRESS", "remotePath": "NFS_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
NFS_IP_ADDRESS
: l'indirizzo IP del NFS. Ad esempio, se il tuo NFS è una condivisione file Filestore, specifica l'indirizzo IP dell'istanza Filestore, che puoi ottenere descrivendo l'istanza Filestore.NFS_PATH
: il percorso della directory NFS a cui vuoi che questo job acceda, che deve iniziare con un/
followed by the root directory of the NFS. Ad esempio, per una condivisione file Filestore denominataFILE_SHARE_NAME
, il percorso/FILE_SHARE_NAME
rappresenta la directory principale della condivisione file e il percorso/FILE_SHARE_NAME/subdirectory
rappresenta la sottodirectorysubdirectory
.MOUNT_PATH
: il percorso di montaggio utilizzato dagli elementi eseguibili del job per accedere a questo NFS. Il percorso deve iniziare con/mnt/disks/
seguito da una directory o un percorso che scegli. Ad esempio, se vuoi rappresentare questo NFS con una directory denominatamy-nfs
, imposta il percorso di montaggio su/mnt/disks/my-nfs
.
Esegui questo comando:
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.
API
Per creare un job che utilizza un NFS utilizzando l'API Batch, utilizza il metodo jobs.create
e monta il NFS nel campo volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"nfs": {
"server": "NFS_IP_ADDRESS",
"remotePath": "NFS_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.NFS_IP_ADDRESS
: l'indirizzo IP del Network File System. Ad esempio, se il tuo NFS è una condivisione file Filestore, specifica l'indirizzo IP dell'istanza Filestore, che puoi ottenere descrivendo l'istanza Filestore.NFS_PATH
: il percorso della directory NFS a cui vuoi che questo job acceda, che deve iniziare con un/
followed by the root directory of the NFS. Ad esempio, per una condivisione file Filestore denominataFILE_SHARE_NAME
, il percorso/FILE_SHARE_NAME
rappresenta la directory principale della condivisione file e il percorso/FILE_SHARE_NAME/subdirectory
rappresenta una sottodirectory.MOUNT_PATH
: il percorso di montaggio utilizzato dagli elementi eseguibili del job per accedere a questo NFS. Il percorso deve iniziare con/mnt/disks/
seguito da una directory o un percorso che scegli. Ad esempio, se vuoi rappresentare questo NFS con una directory denominatamy-nfs
, imposta il percorso di montaggio su/mnt/disks/my-nfs
.
Java
Node.js
Python
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.