Eseguire attività e aggiungere pacchetti dell'applicazione
Eseguire attività contemporaneamente usando l'API REST Batch
Azure Batch use le attività parallele per suddividere un processo tra i nodi di calcolo. Azure Batch è particolarmente adatto per eseguire processi batch paralleli e HPC (High Performance Computing) su larga scala. Il servizio Batch gestisce automaticamente tutte le operazioni, comprese la gestione e la pianificazione di tutti i nodi e le applicazioni necessari per eseguire gli scenari.
Con un numero ridotto di nodi in un pool, è possibile ottimizzare l'utilizzo delle risorse eseguendo più attività contemporaneamente. Se più attività condividono i nodi di calcolo, specifici carichi di lavoro potrebbero comportare tempi più brevi di esecuzione dei processi e costi ridotti.
In alcuni scenari potrebbe essere necessario ridurre al minimo i trasferimenti di dati per le attività che possono condividere dati. È possibile ridurre notevolmente gli addebiti per il trasferimento di dati copiando i dati condivisi in un numero minore di nodi ed eseguendo attività in parallelo in ogni nodo. Questo approccio consente di ridurre il tempo necessario per trasferire i dati in tutti i nodi rispetto alla condivisione dei dati in un numero elevato di nodi.
Abilitare l'esecuzione parallela di attività
L'esecuzione di attività parallele consente di controllare il numero di attività che un singolo nodo può gestire contemporaneamente in un pool.
In Batch gli slot controllano l'esecuzione di attività parallele. Le attività hanno una proprietà denominata RequiredSlots
che indica quanto è elevato l'utilizzo di risorse. Le attività a elevato utilizzo di risorse richiedono più slot rispetto alle altre.
Quando si crea un pool, si specifica il numero di slot di attività disponibili per ogni nodo impostando la proprietà taskSlotsPerNode
. Questa proprietà disciplina l'intensità della risorsa delle attività che è possibile eseguire contemporaneamente in un nodo.
Se ad esempio la proprietà taskSlotsPerNode
di un pool è impostata su 16, le attività eseguite contemporaneamente su un nodo non richiederanno mai più di 16 slot. Questa impostazione significa, ad esempio, che:
- Le due attività che richiedono otto slot possono essere eseguite contemporaneamente perché il numero di slot è uguale a 16 (2 * 8 = 16)
- Tre attività che richiedono cinque slot possono essere eseguite contemporaneamente perché il numero di slot è minore di 16 (3 * 5 = 15)
- Cinque attività che richiedono quattro slot non possono essere eseguite contemporaneamente perché il numero di slot è maggiore di 16 (5 * 4 = 20)
Al massimo, il valore della proprietà taskSlotsPerNode
può essere fino a quattro volte il numero di vCPU incluse in un nodo. Per determinare il numero di vCPU disponibili in un nodo, vedere Dimensioni delle macchine virtuali in Azure.
Nota
Dopo aver impostato la proprietà taskSlotsPerNode
, non è possibile modificarla. Per modificarla, è necessario creare un nuovo pool.
Impostare la proprietà RequiredSlots
in base al numero di CPU, alla quantità di memoria o all'uso di I/O che si prevedono per l'attività. Impostare inoltre la proprietà taskSlotsPerNode
in base al numero di attività che possono essere eseguite contemporaneamente senza ridurne i tempi di esecuzione.
Aggiungere un pacchetto dell'applicazione ed eseguire un'applicazione in contenitori in Azure Batch
Pacchetti dell'applicazione
Per applicazione in Azure Batch si intende un set di file binari con versione che possono essere scaricati automaticamente nei nodi di calcolo del pool. Un'applicazione contiene uno o più pacchetti dell'applicazione, che rappresentano versioni diverse dell'applicazione.
È possibile specificare i pacchetti dell'applicazione a livello di pool o di attività. I pacchetti dell'applicazione a livello di pool sono appropriati se tutti i nodi di un pool eseguono le attività di un processo.
È possibile specificare più di un pacchetto dell'applicazione quando si crea un pool. Le applicazioni vengono distribuite quando un nodo viene aggiunto a un pool e quando viene riavviato o ne viene ricreata l'immagine. Per installare un nuovo pacchetto in un pool esistente, è necessario riavviare i relativi nodi.
La distribuzione di un pacchetto dell'applicazione a livello di attività risulta utile negli ambienti con pool condivisi. In questi ambienti vengono eseguiti processi diversi in un unico pool, che non viene eliminato al termine di un processo. Se il processo include un numero di attività minore del numero di nodi del pool, i pacchetti dell'applicazione a livello di attività possono ridurre il trasferimento dei dati, perché l'applicazione viene distribuita solo nei nodi che eseguono attività.
È possibile usare il portale di Azure o le API Management di Batch per gestire i pacchetti dell'applicazione nell'account Batch. Per usare i pacchetti dell'applicazione, è prima necessario collegare un account di archiviazione di Azure all'account Batch. Il servizio Batch usa l'account di archiviazione associato per archiviare i pacchetti dell'applicazione. È consigliabile creare un account di archiviazione da usare specificamente con l'account Batch.
Applicazioni contenitore
I contenitori si stanno affermando come soluzione preferita per la creazione di pacchetti, la distribuzione e la gestione di applicazioni cloud. Istanze di Azure Container è un'ottima soluzione per qualsiasi scenario e funziona anche in contenitori isolati, inclusi i processi di compilazione, l'automazione di attività e le applicazioni semplici.
L'uso dei contenitori consente di eseguire le attività Batch in modo semplice senza dover gestire un ambiente e le dipendenze per eseguire le applicazioni. I contenitori distribuiscono le applicazioni come unità leggere, portatili e autosufficienti che possono essere eseguite in più ambienti diversi. Le attività basate su contenitori in Batch possono anche sfruttare le funzionalità delle attività non di contenitore, inclusi i pacchetti dell'applicazione e la gestione dei file di risorse e dei file di output.
È possibile creare un pool abilitato per i contenitori con o senza la prelettura di un'immagine di contenitore. Il processo di prelettura consente di precaricare le immagini del contenitore da Docker Hub o da un altro registro contenitori (ad esempio Registro Azure Container) su Internet.
Il vantaggio della prelettura è che al primo avvio dell'esecuzione le attività non devono attendere il download delle immagini del contenitore. La configurazione del contenitore esegue il pull delle immagini del contenitore nelle macchine virtuali quando viene creato il pool. Le attività eseguite nel pool potranno quindi fare riferimento all'elenco delle immagini del contenitore e alle opzioni di esecuzione del contenitore.