Panoramica della creazione e dell'esecuzione dei job

Questo documento illustra la procedura di esecuzione e le opzioni di creazione dei job. I job batch ti consentono di eseguire carichi di lavoro di elaborazione batch su Google Cloud. Per informazioni sui componenti di un job e sui prerequisiti per l'utilizzo di Batch, consulta la Guida introduttiva all'utilizzo di Batch.

Come funzionano la creazione e l'esecuzione dei job

Per utilizzare Batch, devi creare un job che specifica il carico di lavoro e i relativi requisiti, quindi la esegue automaticamente.

I dettagli del funzionamento della creazione e dell'esecuzione del job sono descritti nelle seguenti sezioni:

Ciclo di vita del job

Questa sezione descrive il ciclo di vita di un job e le sue attività dalla creazione all'eliminazione.

Per ogni carico di lavoro da eseguire su Batch, segui la seguente processo di base:

  1. Crea un job: definisci il carico di lavoro da eseguire specificando un gli elementi eseguibili del job, le attività e qualsiasi altro requisito. I dettagli per la creazione di un job sono descritti nella sezione Opzioni di creazione dei job di questo documento.
  2. Monitora e risolvi i problemi relativi al job: al termine della creazione, il job viene inserito in coda, pianificato ed eseguito automaticamente sulle risorse specificate. Puoi visualizzare i dettagli di un job creato o di una delle relative attività per vedere lo stato corrente. Se necessario, puoi annullare un job (Anteprima) per interromperlo o impedire in esecuzione. Quando un job è in esecuzione o terminato, puoi anche monitorare e analizzare il job utilizzando i log. Se un job non riesce, puoi risolverlo utilizzando messaggi di errore, eventi di stato o log per diagnosticare il problema prima di ricrearlo.
  3. Elimina o esporta il job: le informazioni di un job in Batch rimangono disponibili finché tu o Google Cloud non le eliminate. Google Cloud elimina automaticamente un job 60 giorni dopo il suo completamento. Prima di allora, puoi facoltativamente eliminare il job personalmente oppure, se necessario ne conservano le informazioni, puoi esportarle Crea un batch prima dell'eliminazione del job. Qualsiasi informazione su un i job archiviati in altri servizi Google Cloud non subiscono variazioni viene eliminato un job, con criteri di conservazione separati. Ad esempio, i log vengono conservati ed eliminati automaticamente in base criterio di conservazione di Cloud Logging.

Dopo aver creato un job, il job avanza nei seguenti stati:

  1. In coda (QUEUED): la richiesta di job è stata accettata ed è in attesa nella coda. Il job rimane in coda finché le risorse richieste non sono disponibili e i job precedenti non sono stati valutati.
  2. Pianificato (SCHEDULED): il job è stato selezionato dalla coda per iniziare a essere eseguito e le risorse vengono allocate.
  3. In esecuzione (RUNNING): le risorse per il job sono state create e le sue attività possono iniziare a essere eseguite correttamente.

    Quando un job è in esecuzione, ciascuna delle sue attività passa attraverso i seguenti stati:

    1. In attesa (PENDING): l'attività è in attesa di una VM su cui essere eseguita.
    2. Assegnato (ASSIGNED): all'attività è stata assegnata una VM su cui eseguirla.
    3. In esecuzione (RUNNING): l'attività è in esecuzione su una VM.
    4. Un'attività viene completata in uno dei seguenti stati:

      • Riuscito (SUCCEEDED): l'attività è riuscita perché ognuna di i suoi runnable soddisfacevano una delle seguenti condizioni:

        • L'elemento eseguibile è riuscito (ha restituito codice di uscita pari a zero).
        • L'eseguibile non è riuscito (ha restituito un codice di uscita diverso da zero), ma era un eseguibile non critico (hai attivato il ignoreExitStatus campo dell'eseguibile).
        • L'elemento eseguibile non è stato completato, ma era eseguibile in background ha abilitato l'API Runnable campo background).
      • Non riuscita (FAILED): l'attività non è riuscita e l'esecuzione è stata interrotta perché almeno un file eseguibile non ha soddisfatto le condizioni precedenti.

  4. Un job viene completato in uno dei seguenti stati:

    • Riuscito (SUCCEEDED): il job è riuscito perché tutte le relative attività sono andate a buon fine.
    • Non riuscito (FAILED): il job non è riuscito e l'esecuzione è stata interrotta perché almeno una delle relative attività non è riuscita.
    • Annullato (CANCELLED): un utente ha annullato il job (Anteprima) prima che venga completata o non riuscito.

Per saperne di più, consulta gli stati dei job e gli stati delle attività nella documentazione di riferimento.

Coda e pianificazione dei job

In genere, è più probabile che i job vengano eseguiti e vengano completati prima se vengono e richiedono solo poche risorse comuni. I job di esempio riportati nella documentazione di Batch, che in genere sono molto piccoli e utilizzano risorse minime, potrebbero essere completati in pochi minuti.

Nello specifico, il tempo impiegato da un job per completare l'inserimento in coda e la pianificazione varia per job diversi e in momenti diversi in base ai seguenti fattori:

  • Disponibilità delle risorse di lavoro: la disponibilità delle risorse richieste del job all'interno luoghi.

    Innanzitutto, un job non può essere eseguito se specifichi risorse che non vengono offerti in quella località. Quando ciò si verifica, il lavoro non va a buon fine un errore di disponibilità della zona.

    In secondo luogo, è più probabile che un job venga ritardato o non riesca se una delle sue risorse richieste ha una capacità ridotta rispetto alla domanda attuale a causa di errori di disponibilità delle risorse. Di conseguenza, il job potrebbe essere eseguito prima se ne hai bisogno di meno, più comuni e non limitano l'esecuzione del job qualsiasi zona di una regione.

    Per ulteriori informazioni sulle risorse per un job, consulta la sezione Esecuzione dei job di questo documento. Per ulteriori informazioni sulle località che puoi specificare per un job Batch e le relative risorse, consulta la pagina Località.

  • Priorità job: la priorità di un job rispetto alle priorità del altri job nel tuo progetto.

    Facoltativamente, puoi specificare la priorità di un job includendo il flag --priority per la CLI gcloud o il campo JSON priority. Puoi definire la priorità di un job come un numero compreso tra 0 (priorità più bassa) e 99 (priorità massima). L'impostazione di un valore più alto la priorità può aiutare un job a essere eseguito prima dei job con priorità più bassa nel tuo progetto.

    Se non configuri la priorità di un job, per impostazione predefinita viene utilizzata la priorità più bassa, 0. Se due job in coda hanno la stessa priorità, il job creato per primo ha la priorità più alta.

  • Quote e limiti: le soglie previste dal tuo progetto per risorse e richieste Google Cloud.

    Un job non può essere eseguito se supera un limite o la quota del progetto per una delle richieste o delle risorse richieste. In questo caso, Batch potrebbe ritardare un job e riprovarci in un secondo momento o non riuscire a completare il job e mostrare un errore correlato.

    Puoi contribuire a evitare ritardi ed errori per il tuo job creando job che rispettino tutti i limiti pertinenti e assicurandoti che il tuo progetto abbia una quota sufficiente. Per ulteriori informazioni, vedi Quote e limiti per i batch.

Esecuzione del job

Il tempo necessario per l'esecuzione di un job può variare in base alla pianificazione delle attività e alle risorse del job.

Pianificazione attività

Quando viene eseguito un job, le sue attività vengono pianificate in base campo dei criteri di pianificazione (schedulingPolicy), che ti consente di specificare una delle seguenti opzioni:

  • Il prima possibile (AS_SOON_AS_POSSIBLE) (impostazione predefinita): vengono eseguite non appena le risorse sono disponibili e possono essere eseguite in parallelo. Il numero di attività eseguite contemporaneamente dipende dalle attività parallele per VM consentito dalle risorse del job e da altre opzioni di configurazione, come spiegato in Risorse del job di questo documento.
  • In ordine (IN_ORDER): le attività vengono eseguite una alla volta aumentando nell'ordine degli indici.

Risorse del lavoro

Ogni job batch viene eseguito su un gruppo di istanze gestite a livello di regione, un gruppo di una o più corrispondenze le istanze di macchine virtuali (VM) Compute Engine, ciascuna situata in uno dei nelle zone incluse. Ogni VM dispone di hardware dedicato per i core CPU (in particolare le CPU virtuali (vCPU)) e la memoria, che influiscono sulle prestazioni del job, nonché di un disco di avvio che memorizza un'immagine del sistema operativo (OS) e le istruzioni per l'esecuzione del job.

Durante il tempo di esecuzione di un job, Batch crea e cancella automaticamente le risorse che soddisfano le tue specifiche. Quando crei un job, ne configuri le risorse specificando quanto segue:

  • Risorse di calcolo per attività: a meno che i valori predefiniti non siano sufficienti, devi specificare le risorse di calcolo (vCPU, memoria e (se necessario) spazio di archiviazione aggiuntivo sul disco di avvio) necessarie per l'esecuzione di ogni attività. Per maggiori informazioni, consulta i campi delle risorse di calcolo per attività (computeResource).

  • Risorse VM: facoltativamente, puoi anche specificare le VM del job, ad esempio il tipo di macchina e il sistema operativo, nonché risorse aggiuntive come GPU e volumi di archiviazione, utilizzando i campi delle norme relative alle risorse VM (instances[].policy) o il campo alternativo instances[].instanceTemplate. Se non definisci questi campi, Batch seleziona le VM compatibili e non aggiunge risorse aggiuntive.

Il numero di VM e il numero di attività che possono essere eseguite contemporaneamente su ogni VM variano in base ai diversi job in base alla pianificazione delle attività e ai requisiti hardware specificati. Se specifichi l'esecuzione di attività di un job IN_ORDER, il job ha una VM ed esegue una sola attività alla volta. In caso contrario, se le attività di un job vengono eseguite AS_SOON_AS_POSSIBLE, puoi stimare il numero di VM e il numero di attività simultanee utilizzando la seguente formula:

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

Questa formula ha i seguenti valori:

  • \({vmsPerJob}\): il numero massimo di VM per un job. Il numero effettivo di VM create per un job potrebbe essere inferiore, ad esempio se Batch ritiene che sia più veloce eseguire un job con meno risorse rispetto ad attendere altre risorse. Questo valore è limitato anche dal valore limiti di VM simultanee per job.
  • \({taskCount}\): il numero totale di attività per il job definito utilizzando il campo del conteggio delle attività (taskCount).
  • \({parallelTasksPerVM}\): il numero massimo di attività che possono essere eseguite su una VM contemporaneamente.

    Questo valore viene determinato da tutti i fattori seguenti: di classificazione:

Opzioni di creazione job

La sezione Creare ed eseguire un job di base illustra la e come definire un elemento eseguibile utilizzando uno script dell'immagine container e come configurare variabili di ambiente predefinite e personalizzate.

Dopo aver compreso i concetti fondamentali per la creazione di posti di lavoro, valuta la possibilità di creare un job che utilizza una o più delle seguenti opzioni di configurazione aggiuntive:

  • Controllare l'accesso per un job:

  • Configura opzioni aggiuntive per un job:

    • L'articolo Configurare la comunicazione delle attività utilizzando una libreria MPI descrive come configurare un job con attività interdipendenti che comunicano tra loro su VM diverse utilizzando una libreria Message Passing Interface (MPI). Un caso d'uso comune per MPI è strettamente accoppiato, carichi di lavoro di computing ad alte prestazioni (HPC).

    • Personalizza le risorse su cui viene eseguito un job:

      • Definisci le risorse del job utilizzando un modello di istanza VM spiega come specificare un modello di VM definiscono le risorse di un job quando ne crei uno. Si tratta di un anziché specificare direttamente le risorse di un job utilizzando Campo instances[].policy:

      • Utilizzo delle GPU per un job spiega come definire un job che utilizza una o più GPU (Graphics Processing Unit). I casi d'uso comuni per i job che utilizzano GPU includono l'elaborazione di dati intensivi o carichi di lavoro di machine learning (ML).

      • Spiegazione dell'articolo Utilizzare i volumi di archiviazione per un job come definire un job che può accedere a uno o più volumi di archiviazione esterna. Le opzioni di archiviazione includono dischi permanenti o esistenti, nuovi SSD locali bucket Cloud Storage esistenti e un file system di rete esistente (NFS) come una condivisione file di Filestore.

      • Panoramica dell'ambiente del sistema operativo VM offre una panoramica su quando e come puoi personalizzare Ambiente del sistema operativo (OS) VM per un job, compreso l'ambiente l'immagine del sistema operativo VM e i dischi di avvio.

    • Ottimizza vari aspetti di un job:

      • Migliorare monitoraggio e analisi:

      • Automatizzare i nuovi tentativi in un'attività spiega come riprovare automaticamente le attività di un job dopo tutto oppure errori specificati. I tentativi ripetuti automatici possono contribuire a ridurre la complessità della risoluzione dei problemi e il tempo di esecuzione complessivo richiesto per i job che presentano errori temporanei. Ad esempio, utilizza i tentativi automatici per un job eseguito su VM spot, che offrono sconti significativi, ma potrebbero non essere sempre disponibili e possono essere prerilasciati in qualsiasi momento.

      • L'articolo Colloca le VM in modo da ridurre la latenza descrive come ridurre la latenza di rete tra le VM di un job richiedendo che le VM siano fisicamente vicine l'una all'altra. Questo vantaggio in termini di prestazioni può essere particolarmente utile per i job che hanno frequenti comunicazioni di rete tra le VM, ad esempio le attività che comunicano utilizzando le librerie MPI.

      • Garantire la disponibilità delle risorse utilizzando le prenotazioni VM spiega come configurare un job possono essere eseguite su VM prenotate. L'utilizzo di VM riservate può aiutarti a ridurre al minimo il tempo di pianificazione di un job, a evitare errori di disponibilità delle risorse e a ottimizzare i costi.

      • L'articolo Utilizzare il flusso di immagini spiega come migliorare il tempo di avvio dei job tramite lo streaming delle immagini dei contenitori da Artifact Registry.

  • Utilizza servizi aggiuntivi per creare ed eseguire job:

Passaggi successivi