Crea ed esegui un job di base

Questo documento spiega le nozioni di base per la creazione di job Batch: come creare ed eseguire un job basato su uno script o un'immagine container e utilizzare variabili predefinite e personalizzate. Per scoprire di più sulla creazione e l'esecuzione dei job, vedi Panoramica della creazione e dell'esecuzione dei job.

Prima di iniziare

  1. Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
  2. Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    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.

  3. Ogni volta che crei un job, assicurati che abbia una configurazione di rete valida.
    • Se non hai requisiti di networking specifici per il tuo carico di lavoro o progetto e non hai modificato la rete predefinita per il tuo progetto, non è necessario alcun intervento.
    • In caso contrario, devi configurare il networking quando crei un job. Scopri come configurare il networking per un job prima di creare un job di base, in modo da poter modificare gli esempi riportati di seguito in base ai tuoi requisiti di networking.
    Per ulteriori informazioni sulla configurazione di rete per un job, consulta Panoramica del networking Batch.
  4. Ogni volta che crei un job, assicurati che abbia un ambiente del sistema operativo (SO) VM valido.
    • Se non hai requisiti specifici per l'immagine del sistema operativo VM o per il disco di avvio per il tuo carico di lavoro o progetto, non è richiesta alcuna azione.
    • In caso contrario, devi preparare un'opzione di ambiente del sistema operativo VM valida. Prima di creare un job di base, consenti la configurazione predefinita per l'ambiente OS della VM o scopri come personalizzare l'ambiente OS della VM in modo da poter modificare gli esempi riportati di seguito in base alle tue esigenze.
    Per saperne di più sull'ambiente del sistema operativo della VM per un job, consulta Panoramica dell'ambiente del sistema operativo della VM.

Crea un job di base

Per informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST projects.locations.jobs. In sintesi, un job è costituito da un array di una o più attività che eseguono uno o più elementi eseguibili, ovvero gli script e/o i container eseguibili per il job. Per coprire le nozioni di base, questa sezione spiega come creare un job di esempio con un solo elemento eseguibile, ovvero uno script o un'immagine container:

  • Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta creare un job container.
  • In caso contrario, se non sai se vuoi utilizzare le immagini container o se non hai familiarità con i container, ti consigliamo di creare un job di script.

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à contemporaneamente.

Crea un job container di base

Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze per l'esecuzione del job da qualsiasi ambiente di calcolo. Per saperne di più, consulta Utilizzo delle immagini container e Esecuzione di container su istanze VM.

Puoi creare un job contenitore di base utilizzando la console Google Cloud , gcloud CLI, l'API Batch, Go, Java, Node.js, Python o C++.

Console

Per creare un job contenitore di base utilizzando la console Google Cloud :

  1. Nella console Google Cloud , vai alla pagina Elenco job.

    Vai all'elenco di job

  2. Fai clic su Crea. Viene visualizzata la pagina Crea job batch. Nel riquadro a sinistra è selezionata la pagina Dettagli job.

  3. Configura la pagina Dettagli job:

    1. (Facoltativo) Nel campo Nome job, personalizza il nome del job.

      Ad esempio, inserisci example-basic-job.

    2. Configura la sezione Dettagli attività:

      1. Nella finestra Nuovo eseguibile, aggiungi almeno uno script o un container per l'esecuzione di questo job.

        Ad esempio, per aggiungere un container:

        1. Seleziona URL immagine container (impostazione predefinita).

        2. Nel campo URL immagine container, inserisci l'URL di un'immagine container che vuoi eseguire per ogni attività in questo job.

          Ad esempio, per utilizzare l'immagine container Docker busybox, inserisci il seguente URL:

          gcr.io/google-containers/busybox
          
        3. (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
          
        4. (Facoltativo) Per eseguire l'override del comando CMD dell'immagine container, fai quanto segue:

          1. Seleziona la casella di controllo Esegui l'override del comando CMD dell'immagine container. Viene visualizzato un campo.

          2. Nel campo, inserisci uno o più comandi, separando ciascun comando con una nuova riga.

            Ad esempio, inserisci i seguenti comandi:

            -c
            echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
            
          3. Fai clic su Fine.

      2. Nel campo Conteggio attività, inserisci il numero di attività per questo lavoro. Il valore deve essere un numero intero compreso tra 1 e il limite di attività per gruppo di attività.

        Ad esempio, inserisci 4.

      3. 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.

  4. Configura la pagina Specifiche delle risorse:

    1. Nel riquadro a sinistra, fai clic su Specifiche delle risorse. Viene visualizzata la pagina Specifiche delle risorse.

    2. Nella sezione Modello di provisioning delle VM, seleziona una delle seguenti opzioni per il modello di provisioning per le VM di questo job:

      • Se il tuo job può resistere al prerilascio e vuoi VM scontate, seleziona Spot.

      • In caso contrario, seleziona Standard.

      Ad esempio, seleziona Standard (impostazione predefinita).

    3. Seleziona la sede per questo lavoro:

      1. Nel campo Regione, seleziona una regione.

        Ad esempio, seleziona us-central1 (Iowa) (impostazione predefinita).

      2. Nel campo Zona, esegui una delle seguenti operazioni:

        • Se vuoi limitare l'esecuzione di questo job a una zona specifica, seleziona una zona.

        • In caso contrario, seleziona Qualsiasi.

        Ad esempio, seleziona qualsiasi (impostazione predefinita).

    4. Seleziona una delle seguenti famiglie di macchine:

      • Per i workload comuni, fai clic su Per uso generico.

      • Per i workload ad alte prestazioni, fai clic su Ottimizzata per il calcolo.

      • Per i workload che richiedono molta memoria, fai clic su Ottimizzata per la memoria.

      • Per i workload ottimizzati per l'acceleratore, fai clic su GPU. Per ulteriori informazioni, consulta la sezione Crea ed esegui un job che utilizza le GPU.

      Ad esempio, fai clic su Per uso generico (impostazione predefinita).

    5. Nel campo Serie, seleziona una serie di macchine per le VM di questo job.

      Ad esempio, se hai selezionato Per uso generico per la famiglia di macchine, seleziona E2 (impostazione predefinita).

    6. Nel campo Tipo di macchina, seleziona un tipo di macchina per le VM di questo job.

      Ad esempio, se hai selezionato E2 per la serie di macchine, seleziona e2-medium (2 vCPU, 4 GB di memoria) (impostazione predefinita).

    7. Configura la quantità di risorse VM necessarie per ogni attività:

      1. Nel campo Core, inserisci la quantità di vCPUs per attività.

        Ad esempio, inserisci 1 (impostazione predefinita).

      2. Nel campo Memoria, inserisci la quantità di RAM in GB per attività.

        Ad esempio, inserisci 0.5 (impostazione predefinita).

  5. (Facoltativo) Per esaminare la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.

  6. Fai clic su Crea.

Nella pagina Dettagli job viene visualizzato il job che hai creato.

gcloud

Per creare un job contenitore di base utilizzando gcloud CLI:

  1. 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 saperne di più su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST projects.locations.jobs.

    {
        "taskGroups": [
            {
                "taskSpec": {
                    "runnables": [
                        {
                            "container": {
                                CONTAINER
                            }
                        }
                    ],
                    "computeResource": {
                        "cpuMilli": CORES,
                        "memoryMib": MEMORY
                    },
                    "maxRetryCount": MAX_RETRY_COUNT,
                    "maxRunDuration": "MAX_RUN_DURATION"
                },
                "taskCount": TASK_COUNT,
                "parallelism": PARALLELISM
            }
        ]
    }
    

    Sostituisci quanto segue:

    • CONTAINER: il container in cui viene eseguita ogni attività. Come minimo, un contenitore deve specificare un'immagine nel sottocampo imageUri, ma potrebbero essere necessari anche sottocampi aggiuntivi. Per ulteriori informazioni, consulta i sottocampi container e l'esempio di job contenitore in questa sezione.
    • CORES: (Facoltativo) La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campo cpuMilli non è specificato, il valore è impostato su 2000 (2 vCPU).
    • MEMORY: (Facoltativo) La quantità di memoria da allocare per ogni attività in MB. Se il campo memoryMib non è specificato, il valore è impostato su 2000 (2 GB).
    • MAX_RETRY_COUNT: (Facoltativo) Il numero massimo di tentativi per un'attività. Il valore deve essere un numero intero compreso tra 0 e 10. Se il campo maxRetryCount non è specificato, il valore viene impostato su 0, il che significa che l'attività non verrà ritentata. Per saperne di più sul campo maxRetryCount, consulta Automatizzare i nuovi tentativi di esecuzione delle attività.
    • MAX_RUN_DURATION: (Facoltativo) Il tempo massimo di esecuzione consentito per un'attività prima che venga riprovata o non riuscita, formattato come un valore in secondi seguito da s, ad esempio 3600s per 1 ora. Se il campo maxRunDuration non è specificato, il valore viene impostato sulla durata massima di esecuzione di un job. Per saperne di più sul campo maxRunDuration, consulta Limitare i tempi di esecuzione per attività e eseguibili utilizzando i timeout.
    • TASK_COUNT: (Facoltativo) Il numero di attività per il job. Il valore deve essere un numero intero compreso tra 1 e il limite di attività per gruppo di attività. Se il campo taskCount non è specificato, il valore è impostato su 1.
    • 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 tra 1 e il limite di attività parallele per job. Se il campo parallelism non è specificato, il valore è impostato su 1.
  2. Crea un job utilizzando il comando gcloud batch jobs submit.

    gcloud batch jobs submit JOB_NAME \
      --location LOCATION \
      --config JSON_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

    • JOB_NAME: il nome del job.
    • LOCATION: la sede del lavoro.
    • JSON_CONFIGURATION_FILE: il percorso di un file JSON con i dettagli di configurazione del job.

Ad esempio, per creare un job che esegue attività utilizzando l'immagine container Docker busybox:

  1. Crea un file JSON nella directory attuale denominato hello-world-container.json con il seguente contenuto:

    {
        "taskGroups": [
            {
                "taskSpec": {
                    "runnables": [
                        {
                            "container": {
                                "imageUri": "gcr.io/google-containers/busybox",
                                "entrypoint": "/bin/sh",
                                "commands": [
                                    "-c",
                                    "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                                ]
                            }
                        }
                    ],
                    "computeResource": {
                        "cpuMilli": 2000,
                        "memoryMib": 16
                    },
                    "maxRetryCount": 2,
                    "maxRunDuration": "3600s"
                },
                "taskCount": 4,
                "parallelism": 2
            }
        ],
        "allocationPolicy": {
            "instances": [
                {
                    "policy": { "machineType": "e2-standard-4" }
                }
            ]
        },
        "labels": {
            "department": "finance",
            "env": "testing"
        },
        "logsPolicy": {
            "destination": "CLOUD_LOGGING"
        }
    }
    
  2. Esegui questo comando:

    gcloud batch jobs submit example-container-job \
      --location us-central1 \
      --config hello-world-container.json
    

API

Per creare un job container di base utilizzando l'API Batch, utilizza il metodo jobs.create. Per saperne di più su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST projects.locations.jobs.

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
    "taskGroups":