Gestire carichi di lavoro di Azure Batch da un'app .NET
Azure Batch è una raccolta di risorse combinate per creare una soluzione parallela su larga scala a prestazioni elevate.
Per il momento si decide di scrivere l'app che gestisce l'intero processo di Azure Batch come applicazione console .NET Core. In primo luogo l'app carica i video degli animali nel cloud, Crea quindi un pool di Azure Batch con nodi di calcolo (macchine virtuali). quindi crea un processo che viene eseguito in tali nodi.
Il processo eseguito in ogni nodo di calcolo contiene le attività per ogni video caricato nel contenitore di archiviazione di input. L'attività carica i video MP4 degli animali, li converte in GIF animate e salva i file in un contenitore di output. La libreria FFmpeg a cui fa riferimento l'attività viene archiviata come pacchetto dell'applicazione nell'account Azure Batch. Il diagramma seguente mostra il processo:
Azure Batch viene usato in combinazione con Archiviazione di Azure. Archiviazione di Azure è la posizione riservata ai dati di input, un posto in cui è possibile registrare, monitorare informazioni e archiviare l'output finale. In questa posizione possono essere archiviate anche le applicazioni eseguite da Azure Batch, ma un'opzione più flessibile consiste nell'usare la funzionalità del pacchetto dell'applicazione di Azure Batch.
I componenti di Azure Batch sono i seguenti:
- Account Azure Batch: Contenitore in cui sono incluse le risorse seguenti richieste dalla soluzione Azure Batch:
- Pacchetto dell'applicazione: Un pacchetto dell'applicazione aggiunge applicazioni che le attività in un batch possono usare. Un account Azure Batch può contenere fino a 20 pacchetti dell'applicazione. È possibile richiedere di aumentare il limite se per l'azienda sono necessari più pacchetti.
- Pool: Un pool contiene nodi di calcolo, vale a dire motori che eseguono il processo batch. Al momento della creazione, è necessario specificare il numero, le dimensioni e il sistema operativo dei nodi. Un account Azure Batch può contenere molti pool.
- Node (Nodo): A ogni nodo è possibile assegnare un numero di attività da eseguire e le attività vengono allocate e gestite da Azure Batch. I nodi vengono associati a un pool specifico.
- Processo: I processi gestiscono le raccolte di attività. Un processo viene associato a un pool specifico. Un account Azure Batch può contenere molti processi.
- Attività: Le attività eseguono le applicazioni. Possono essere contenute in un pacchetto dell'applicazione oppure in un contenitore di Archiviazione di Azure. Le attività elaborano i file di input e al termine possono scrivere in contenitori di output.
Prima di iniziare a gestire i componenti di Azure Batch all'interno di un'applicazione .NET, è necessario creare gli account Azure Batch e Archiviazione di Azure. Per creare questi account, è possibile usare il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure.
Perché usare un'app per gestire i carichi di lavoro di Batch
L'uso di un'app per controllare l'elaborazione di Azure Batch consente di automatizzare l'esecuzione e il monitoraggio delle attività in Azure Batch. Con il set completo di API client disponibili è possibile controllare l'intero flusso di lavoro di Batch partendo dal codice. Dopo il completamento dell'elaborazione del batch, l'app può eliminare automaticamente le risorse create, mantenendo bassi i costi di Azure.
I carichi di lavoro di Batch consentono di aumentare il numero di nodi a migliaia, in modo che le soluzioni che richiedono risorse di calcolo con utilizzo elevato del processore, ad esempio la transcodifica di video, le previsioni meteorologiche e l'analisi delle immagini, siano più attuabili. Tutti questi casi d'uso sono più efficienti quando vengono gestiti a livello di codice.
API del servizio client Batch
Microsoft ha rilasciato API Batch per un'ampia gamma di linguaggi. Usando queste librerie client, è possibile controllare a livello di codice tutti i componenti del processo batch, tra cui autenticazione, elaborazione di file, creazione di pool di nodi, creazione di processi con attività e monitoraggio dello stato di tali attività in esecuzione.
In .NET queste API Batch vengono caricate nelle app come pacchetti NuGet. Si userà anche la libreria client di Archiviazione di Azure per gestire i file e gli asset nella soluzione in uso.
Come usare un'app .NET per controllare Azure Batch
I passaggi da seguire nel resto del modulo creano account di Azure Batch e Archiviazione di Azure usando il portale di Azure. Si caricherà quindi l'applicazione FFmpeg come pacchetto dell'applicazione perché possa essere usata nelle attività. L'app usa le attività che eseguono FFmpeg per convertire i video.
Con gli account Batch e Archiviazione creati nel portale di Azure, sarà poi necessario creare un'app console .NET Core in Cloud Shell che userà le librerie client di Azure Batch e di Archiviazione di Azure.
L'app userà la libreria client di Archiviazione di Azure per caricare i video MP4 nell'archiviazione BLOB. Userà poi la libreria client di Batch per creare un pool con tre nodi (macchine virtuali di Windows Server), creare un processo e aggiungere attività di conversione video al processo affinché siano eseguite in tali nodi. Durante l'esecuzione, l'app deve monitorare lo stato delle attività, controllare che vengano completate ed eliminare le risorse indesiderate.