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 un disco permanente nuovo o esistente, nuovi SSD locali, bucket Cloud Storage esistenti e un Network File System (NFS) esistente, ad esempio una condivisione file di Filestore.
Indipendentemente dall'aggiunta di volumi di archiviazione esterni, ogni VM di Compute Engine per un job dispone di un disco di avvio, che fornisce spazio di archiviazione per l'immagine del sistema operativo (OS) e le istruzioni del job. Per informazioni sulla configurazione del disco di avvio per un job, consulta invece Panoramica dell'ambiente del sistema operativo della VM.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta Inizia a utilizzare Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Editor job batch (
roles/batch.jobsEditor) sul progetto - Utente dell'account di servizio (
roles/iam.serviceAccountUser) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito -
Creare un job che utilizza un bucket Cloud Storage:
Storage Object Viewer (
roles/storage.objectViewer) sul bucket
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
- Editor job batch (
Crea un job che utilizza i volumi di archiviazione
Facoltativamente, un job può utilizzare uno o più dei seguenti tipi di volumi di archiviazione esterni. Per saperne di più su tutti i tipi di volumi di archiviazione e sulle differenze e le limitazioni di ciascuno, consulta la documentazione relativa alle opzioni di archiviazione delle VM di Compute Engine.
- persistent disk: archiviazione a blocchi permanente a livello di zona o di regione
- SSD locale: archiviazione a blocchi temporanea ad alte prestazioni
- Bucket Cloud Storage: archiviazione di oggetti conveniente
- Network File System (NFS): file system distribuito che segue il protocollo Network File System, ad esempio una condivisione file di 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 specificando il relativo percorso di montaggio (mountPath) nei tuoi eseguibili. Per scoprire come creare un job che utilizza i volumi di archiviazione, consulta una o più delle seguenti sezioni:
- Utilizza un Persistent Disk
- Utilizza un'unità SSD locale
- Utilizza un bucket Cloud Storage
- Utilizza un Network File System
Utilizza un disco permanente
Un job che utilizza Persistent Disk presenta le seguenti limitazioni:
Tutti i Persistent Disk: consulta le limitazioni per tutti i Persistent Disk.
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, questo deve essere formattato e montato sulle VM del job, che devono trovarsi nella stessa località del disco permanente. Batch monta tutti i dischi permanenti inclusi in un job e formatta tutti i nuovi dischi permanenti, ma devi formattare e smontare tutti i dischi permanenti esistenti che vuoi che un job utilizzi.
Le opzioni di posizione, le opzioni di formato e le opzioni di montaggio supportate variano tra i Persistent Disk nuovi ed esistenti, come descritto nella seguente tabella:
Nuovi Persistent Disk Dischi permanenti esistenti Opzioni formato Il disco permanente viene formattato automaticamente con un file system
ext4.Devi formattare il Persistent Disk per utilizzare un file system
ext4prima 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à multi-writer.
Prima di utilizzarlo per un job, devi scollegare il Persistent Disk da tutte le VM a cui è collegato.
Opzioni per località Puoi creare solo Persistent Disk a livello di zona.
Puoi selezionare qualsiasi località per il job. I dischi permanenti vengono creati nella zona in cui viene eseguito il progetto.
Puoi selezionare Persistent Disk a livello di zona e di regione.
Per utilizzare un disco, le risorse di Compute Engine per un lavoro devono essere create solo nelle posizioni che contengono tutti i Persistent Disk del lavoro. Ad esempio, per un Persistent Disk a livello di zona, la località del job deve essere la zona del disco; per un disco permanente a livello di regione, la località 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 a livello di regione. Per saperne di più, consulta Località.Template di istanza: se vuoi utilizzare un template di istanza VM durante la creazione di questo job, devi collegare tutti i Persistent Disk per questo job nel template di istanza. In caso contrario, se non vuoi utilizzare un template di istanza, devi collegare i Persistent Disk 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 permanente a livello di zona esistente che si trova nella zona us-central1-a. Lo script di esempio presuppone che il job abbia un disco permanente a livello di zona esistente che contiene un file di testo denominato example.txt nella directory root.
(Facoltativo) Crea un disco permanente a livello di zona di esempio
Se vuoi creare un disco permanente a livello di zona da utilizzare per eseguire lo script di esempio, segui questi passaggi prima di creare il job:
Collega un nuovo disco permanente vuoto denominato
example-diska una VM Linux nella zonaus-central1-a, quindi esegui i comandi sulla VM per formattare e montare il disco. Per istruzioni, consulta Aggiungi un disco permanente alla tua VM.Non disconnetterti ancora dalla VM.
Per creare
example.txtsu disco permanente, esegui questi comandi sulla VM:Per cambiare la directory di lavoro corrente impostandola sulla directory root del disco permanente, digita il seguente comando:
cd VM_MOUNT_PATHSostituisci 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.txtPremi
Enter.Digita i contenuti del file. Ad esempio, digita
Hello world!.Per salvare il file, premi
Ctrl+D(oCommand+Dsu macOS).
Al termine, puoi disconnetterti dalla VM.
Scollega il disco permanente dalla VM.
Se la VM non ti serve più, puoi eliminare la VM, il che scollega automaticamente il 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-diskanziché il disco di avvio della VM.
Crea un job che utilizzi il disco permanente a livello di zona esistente
Per creare un job che utilizza i Persistent Disk a livello di zona esistenti utilizzando la consoleGoogle Cloud , segui questi passaggi:
Nella console Google Cloud , vai alla pagina Elenco 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 container per l'esecuzione di questo job.
Ad esempio, per eseguire uno script che stampa i contenuti di un file denominato
example.txte che si trova nella directory root del disco permanente utilizzato da questo job, segui questi passaggi:Seleziona la casella di controllo Script. Viene visualizzato un campo.
Nel campo, inserisci il seguente script:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txtSostituisci 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(impostazione predefinita).Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente.
Ad esempio, inserisci
1(impostazione predefinita).
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 località per questo job. Per utilizzare un disco permanente a livello di zona esistente, le VM di un job devono trovarsi nella stessa zona.
Nel campo Regione, seleziona una regione.
Ad esempio, per utilizzare il disco permanente a livello di zona 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 a livello di zona esistente che vuoi montare in questo job, segui questi passaggi:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, segui questi passaggi:
Nella sezione Tipo di volume, seleziona Persistent Disk (predefinito).
Nell'elenco Disco, seleziona un disco permanente a livello di zona esistente che vuoi montare su questo job. Il disco deve trovarsi nella stessa zona del job.
Ad esempio, seleziona il disco permanente a livello di zona esistente che hai preparato, che si trova nella zona
us-central1-ae contiene il fileexample.txt.(Facoltativo) Se vuoi rinominare questo disco permanente a livello di zona, procedi nel seguente modo:
Seleziona Personalizza il nome del dispositivo.
Nel campo Nome dispositivo, inserisci il nuovo nome per il 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_NAMESostituisci EXISTING_PERSISTENT_DISK_NAME con il nome del disco. Se hai rinominato il disco permanente a livello di zona, 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, fai clic su Anteprima nel riquadro a sinistra.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Utilizzando gcloud CLI, l'esempio seguente crea un job che collega e monta un disco permanente esistente e un nuovo disco permanente.
Il job ha tre attività, ciascuna delle quali esegue 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 Persistent Disk con gcloud CLI, utilizza il comando gcloud batch jobs submit.
Nel file di configurazione JSON del job, specifica i Persistent Disk nel campo instances e monta il disco permanente nel campo volumes.
Crea un file JSON.
Se non utilizzi un template di istanza 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: l'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 a livello di zona esistente, la località del job deve essere la zona del disco; per ogni disco permanente a livello di regione esistente, la località 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 a livello di regione. Scopri di più sul campoallowedLocations.NEW_PERSISTENT_DISK_SIZE: le dimensioni del nuovo disco permanente in GB. Le dimensioni consentite dipendono dal tipo di disco permanente, ma il minimo è spesso 10 GB (10) e il massimo è spesso 64 TB (64000).NEW_PERSISTENT_DISK_TYPE: il tipo di disco del nuovo disco permanente,pd-standard,pd-balanced,pd-ssdopd-extreme. Il tipo di disco predefinito per i Persistent Disk non di avvio èpd-standard.NEW_PERSISTENT_DISK_NAME: il nome del nuovo disco permanente.
Se utilizzi un template di istanza VM per questo job, crea un file JSON come mostrato in precedenza, ma sostituisci il campo
instancescon quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],dove
INSTANCE_TEMPLATE_NAMEè il nome del template di istanza per questo job. Per un job che utilizza Persistent Disk, questo template di istanza deve definire e collegare i Persistent Disk che vuoi che vengano utilizzati dal job. In questo esempio, il template deve definire e collegare un nuovo disco permanente denominatoNEW_PERSISTENT_DISK_NAMEe collegare un disco permanente esistente denominatoEXISTING_PERSISTENT_DISK_NAME.
Esegui questo comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.
API
Utilizzando l'API Batch, l'esempio seguente crea un job che collega e monta un disco permanente esistente e un nuovo disco permanente. Il job ha tre attività, ciascuna delle quali esegue uno script per creare un file nel nuovo disco permanente denominato
output_task_TASK_INDEX.txt, dove
TASK_INDEX è l'indice di ciascuna attività: 0, 1 e 2.
Per creare un job che utilizza i Persistent Disk utilizzando l'API Batch, utilizza il metodo jobs.create.
Nella richiesta, specifica i Persistent Disk nel campo instances e monta il disco permanente nel campo volumes.
Se non utilizzi un template di istanza 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: l'ID progetto del tuo progetto.LOCATION: la località del job.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 a livello di zona esistente, la località del job deve essere la zona del disco; per ogni disco permanente a livello di regione esistente, la località 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 a livello di regione. Scopri di più sul campoallowedLocations.NEW_PERSISTENT_DISK_SIZE: le dimensioni del nuovo disco permanente in GB. Le dimensioni consentite dipendono dal tipo di disco permanente, ma il minimo è spesso 10 GB (10) e il massimo è spesso 64 TB (64000).NEW_PERSISTENT_DISK_TYPE: il tipo di disco del nuovo disco permanente,pd-standard,pd-balanced,pd-ssdopd-extreme. Il tipo di disco predefinito per i Persistent Disk non di avvio èpd-standard.NEW_PERSISTENT_DISK_NAME: il nome del nuovo disco permanente.
Se utilizzi un template di istanza VM per questo job, crea un file JSON come mostrato in precedenza, ma sostituisci il campo
instancescon quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...Dove
INSTANCE_TEMPLATE_NAMEè il nome del template di istanza per questo job. Per un job che utilizza Persistent Disk, questo template di istanza deve definire e collegare i Persistent Disk che vuoi che vengano utilizzati dal job. In questo esempio, il template deve definire e collegare un nuovo disco permanente denominatoNEW_PERSISTENT_DISK_NAMEe collegare un disco permanente esistente denominatoEXISTING_PERSISTENT_DISK_NAME.
C++
Per creare un job batch che utilizzi Persistent Disk nuovi o esistenti utilizzando le librerie client di Cloud per C++, utilizza la funzione CreateJob e includi quanto segue:
- Per collegare i Persistent Disk alle VM per un job, includi uno dei seguenti elementi:
- Se non utilizzi un template di istanza VM per questo job, utilizza il metodo
set_remote_path. - Se utilizzi un template di istanza VM per questo job, utilizza il metodo
set_instance_template.
- Se non utilizzi un template di istanza VM per questo job, utilizza il metodo
- Per montare i Persistent Disk nel job, utilizza il campo
volumescon i campideviceNameemountPath. Per i nuovi Persistent Disk, utilizza anche il campomountOptionsper abilitare la scrittura.
Per un esempio di codice di un caso d'uso simile, consulta Utilizza un bucket Cloud Storage.
Vai
Per creare un job batch che utilizza Persistent Disk nuovi o esistenti utilizzando le librerie client di Cloud per Go, utilizza la funzione CreateJob e includi quanto segue:
- Per collegare i Persistent Disk alle VM per un job, includi uno dei seguenti elementi:
- Se non utilizzi un template di istanza VM per questo job, includi il tipo
AllocationPolicy_AttachedDisk. - Se utilizzi un template di istanza VM per questo job, includi il tipo
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate.
- Se non utilizzi un template di istanza VM per questo job, includi il tipo
- Per montare i Persistent Disk nel job, utilizza il
tipo
Volumecon il tipoVolume_DeviceNamee il campoMountPath. Per i nuovi Persistent Disk, utilizza anche il campoMountOptionsper abilitare la scrittura.
Java
Per creare un job batch che utilizzi Persistent Disk nuovi o esistenti utilizzando le librerie client di Cloud per Java, utilizza la classe CreateJobRequest e includi quanto segue:
- Per collegare i Persistent Disk alle VM per un job, includi uno dei seguenti elementi:
- Se non utilizzi un template di istanza VM per questo job, includi il metodo
setDisks. - Se utilizzi un template di istanza VM per questo job, includi il metodo
setInstanceTemplate.
- Se non utilizzi un template di istanza VM per questo job, includi il metodo
- Per montare i Persistent Disk nel job, utilizza la
classe
Volumecon il metodosetDeviceNamee il metodosetMountPath. Per i nuovi Persistent Disk, utilizza anche il metodosetMountOptionsper attivare la scrittura.
Ad esempio, utilizza il seguente esempio di codice:
Node.js
Per creare un job batch che utilizzi Persistent Disk nuovi o esistenti utilizzando le librerie client di Cloud per Node.js, utilizza il metodo createJob e includi quanto segue:
- Per collegare i Persistent Disk alle VM per un job, includi uno dei seguenti elementi:
- Se non utilizzi un template di istanza VM per questo job, includi la classe
AllocationPolicy.AttachedDisk. - Se utilizzi un template di istanza VM per questo job, includi la proprietà
instanceTemplate.
- Se non utilizzi un template di istanza VM per questo job, includi la classe
- Per montare i Persistent Disk nel job, utilizza la
classe
Volumecon la proprietàdeviceNamee la proprietàmountPath. Per i nuovi Persistent Disk, utilizza anche la proprietàmountOptionsper attivare la scrittura.
Python
Per creare un job batch che utilizza Persistent Disk nuovi o esistenti utilizzando le librerie client di Cloud per Python, utilizza la funzione CreateJob e includi quanto segue:
- Per collegare i Persistent Disk alle VM per un job, includi uno dei seguenti elementi:
- Se non utilizzi un template di istanza VM per questo job, includi la classe
AttachedDisk. - Se utilizzi un template di istanza VM per questo job, includi l'attributo
instance_template.
- Se non utilizzi un template di istanza VM per questo job, includi la classe
- Per montare i Persistent Disk nel job, utilizza la
classe
Volumecon l'attributodevice_namee l'attributomount_path. Per i nuovi Persistent Disk, utilizza anche l'attributomount_optionsper attivare la scrittura.
Ad esempio, utilizza il seguente esempio di codice:
Utilizza un'unità SSD locale
Un job che utilizza SSD locali presenta le seguenti limitazioni:
- Tutte le unità SSD locali Esamina le limitazioni per tutte le unità SSD locali.
- Template di istanza Se vuoi specificare un template di istanza VM durante la creazione di questo job, devi collegare tutti i Persistent Disk per questo job nel template di istanza. In caso contrario, se non vuoi utilizzare un template di istanza, devi collegare i Persistent Disk 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 ha anche tre task, ognuno dei quali esegue uno script per creare un file nell'SSD locale denominato output_task_TASK_INDEX.txt, dove TASK_INDEX è l'indice di ogni task: 0, 1 e 2.
gcloud
Per creare un job che utilizza SSD locali con gcloud CLI, utilizza il comando gcloud batch jobs submit.
Nel file di configurazione JSON del job, crea e collega gli SSD locali nel campo instances e montali nel campo volumes.
Crea un file JSON.
Se non utilizzi un template di istanza 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 delle VM del job.LOCAL_SSD_NAME: il nome di un'unità SSD locale creata per questo job.LOCAL_SSD_SIZE: le dimensioni di tutte le unità SSD locali in GB. Ogni SSD locale ha una capacità di 375 GB, pertanto questo valore deve essere un multiplo di375GB. Ad esempio, per 2 SSD locali, imposta questo valore su750GB.
Se utilizzi un template di istanza VM per questo job, crea un file JSON come mostrato in precedenza, ma sostituisci il campo
instancescon quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],dove
INSTANCE_TEMPLATE_NAMEè il nome del template di istanza per questo job. Per un job che utilizza SSD locali, questo template di istanza deve definire e collegare gli SSD locali che vuoi che vengano utilizzati dal job. Per questo esempio, il template 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_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.
API
Per creare un job che utilizza 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 template di istanza 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: l'ID progetto del tuo progetto.LOCATION: la località del job.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 delle VM del job.LOCAL_SSD_NAME: il nome di un'unità SSD locale creata per questo job.LOCAL_SSD_SIZE: le dimensioni di tutte le unità SSD locali in GB. Ogni SSD locale ha una dimensione di 375 GB, pertanto questo valore deve essere un multiplo di375GB. Ad esempio, per 2 SSD locali, imposta questo valore su750GB.
Se utilizzi un template di istanza VM per questo job, crea un file JSON come mostrato in precedenza, ma sostituisci il campo
instancescon quanto segue:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...Dove
INSTANCE_TEMPLATE_NAMEè il nome del template di istanza per questo job. Per un job che utilizza SSD locali, questo template di istanza deve definire e collegare gli SSD locali che vuoi che vengano utilizzati dal job. Per questo esempio, il template deve definire e collegare un'unità SSD locale denominataLOCAL_SSD_NAME.
Vai
Java
Node.js
Python
Utilizza 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 la gcloud CLI o le librerie client per l'API Storage. Per scoprire come accedere a un bucket Cloud Storage direttamente da una VM, consulta la documentazione di Compute Engine per la scrittura e la lettura di dati dai bucket Cloud Storage.
Prima di creare un job che utilizza un bucket, crea un bucket o identificane uno esistente. Per saperne di più, consulta Crea bucket ed Elenca 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 ha anche 3 task, ognuno dei quali esegue uno script per creare un file nel bucket denominato output_task_TASK_INDEX.txt, dove TASK_INDEX è l'indice di ogni task: 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 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 container per l'esecuzione di questo job.
Ad esempio, segui questi passaggi:
Seleziona la casella di controllo Script. Viene visualizzato un campo.
Nel campo, inserisci il seguente script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtSostituisci MOUNT_PATH con il percorso di montaggio utilizzato dagli 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 di tua scelta. 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(impostazione predefinita).
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 in questo job, segui questi passaggi:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, segui questi passaggi:
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'eseguibile di questo job.
Nel campo Percorso di montaggio, inserisci il percorso di montaggio del bucket (MOUNT_PATH) che hai specificato nell'eseguibile.
Fai clic su Fine.
(Facoltativo) Configura gli altri campi per questo job.
(Facoltativo) Per esaminare la configurazione del job, fai clic su Anteprima nel riquadro a sinistra.
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 con gcloud CLI, utilizza il comando gcloud batch jobs submit.
Nel file di configurazione JSON del job, monta il bucket nel campo volumes.
Ad esempio, per creare un job che restituisce file in un bucket 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_NAMErappresenta la directory root del bucket e il percorsoBUCKET_NAME/subdirectoryrappresenta 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 di tua scelta. 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_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.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 utilizzando 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: l'ID progetto del tuo progetto.LOCATION: la località del job.JOB_NAME: il nome del job.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_NAMErappresenta la directory root del bucket e il percorsoBUCKET_NAME/subdirectoryrappresenta 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 di tua scelta. 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 saperne di più, consulta la documentazione di riferimento dell'API Batch C++.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Vai
Go
Per saperne di più, consulta la documentazione di riferimento dell'API Batch Go.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Batch Java.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per saperne di più, consulta la documentazione di riferimento dell'API Batch Node.js.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Batch Python.
Per eseguire l'autenticazione in Batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Utilizza un file system di rete
Puoi creare un job che utilizza un Network File System (NFS) esistente, ad esempio una condivisione file di Filestore, utilizzando la console Google Cloud , gcloud CLI o l'API Batch.
Prima di creare un job che utilizza un NFS, assicurati che il firewall della tua rete sia configurato correttamente per consentire il traffico tra le VM del job e l'NFS. Per saperne di più, consulta Configura le regole firewall per Filestore.
L'esempio seguente descrive come creare un job che specifica e monta un NFS. Il job ha anche 3
task che eseguono ciascuno uno script per creare un file nell'NFS denominato
output_task_TASK_INDEX.txt
dove TASK_INDEX è l'indice di ogni task:
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 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 container per l'esecuzione di questo job.
Ad esempio, segui questi passaggi:
Seleziona la casella di controllo Script. Viene visualizzato un campo.
Nel campo, inserisci il seguente script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtSostituisci 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 di tua scelta. 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(impostazione predefinita).
Configura la pagina Configurazioni aggiuntive:
Nel riquadro a sinistra, fai clic su Configurazioni aggiuntive. Si apre la pagina Configurazioni aggiuntive.
Per ogni NFS che vuoi montare in questo job, segui questi passaggi:
Nella sezione Volume di archiviazione, fai clic su Aggiungi nuovo volume. Viene visualizzata la finestra Nuovo volume.
Nella finestra Nuovo volume, segui questi passaggi:
Nella sezione Tipo di volume, seleziona Network File System.
Nel campo File server, inserisci l'indirizzo IP del server in cui si trova l'NFS specificato nell'eseguibile di questo job.
Ad esempio, se l'NFS è una condivisione file di Filestore, specifica l'indirizzo IP dell'istanza di Filestore, che puoi ottenere descrivendo l'istanza di Filestore.
Nel campo Percorso remoto, inserisci un percorso che possa accedere all'NFS specificato nel passaggio precedente.
Il percorso della directory NFS deve iniziare con
/seguito dalla directory root di NFS.Nel campo Percorso di montaggio, inserisci il percorso di montaggio per l'NFS (MOUNT_PATH) che hai specificato nel passaggio precedente.
Fai clic su Fine.
(Facoltativo) Configura gli altri campi per questo job.
(Facoltativo) Per esaminare la configurazione del job, fai clic su Anteprima nel riquadro a sinistra.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Per creare un job che utilizza un NFS con gcloud CLI, utilizza il comando gcloud batch jobs submit.
Nel file di configurazione JSON del job, monta l'NFS nel campo volumes.
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 dell'NFS. 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.NFS_PATH: il percorso della directory NFS a cui deve accedere questo job, che deve iniziare con/seguito dalla directory root di NFS. Ad esempio, per una condivisione file Filestore denominataFILE_SHARE_NAME, il percorso/FILE_SHARE_NAMErappresenta la directory root della condivisione file e il percorso/FILE_SHARE_NAME/subdirectoryrappresenta 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 di tua scelta. 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_FILESostituisci quanto segue:
JOB_NAME: il nome del job.LOCATION: la località del job.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 tramite l'API Batch, utilizza il metodo jobs.create e monta l'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: l'ID progetto del tuo progetto.LOCATION: la località del job.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 di Filestore, specifica l'indirizzo IP dell'istanza Filestore, che puoi ottenere descrivendo l'istanza Filestore.NFS_PATH: il percorso della directory NFS a cui deve accedere questo job, che deve iniziare con/seguito dalla directory root di NFS. Ad esempio, per una condivisione file Filestore denominataFILE_SHARE_NAME, il percorso/FILE_SHARE_NAMErappresenta la directory root della condivisione file e il percorso/FILE_SHARE_NAME/subdirectoryrappresenta 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 di tua scelta. 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 con la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.