Hantera Azure Batch-arbetsbelastningar från en .NET-app
Azure Batch är en samling resurser som du kombinerar tillsammans för att skapa en storskalig, parallell och högpresterande lösning.
Du bestämmer dig för att skriva den app som hanterar hela Azure Batch-processen som ett .NET Core-konsolprogram för tillfället. Först laddar appen upp husdjursvideorna till molnet. Sedan skapas en Azure Batch-pool med beräkningsnoder (virtuella datorer). Appen skapar sedan ett jobb som ska köras på dessa noder.
Jobbet som körs på varje beräkningsnod innehåller uppgifter för varje video som laddas upp till indatalagringscontainern. Uppgiften läser in MP4-husdjursvideorna, konverterar dem till animerade GIF-filer och sparar filerna i en utdatacontainer. Uppgiften refererar till ffmpeg-biblioteket som lagras som ett programpaket i Azure Batch-kontot. Följande diagram visar vår process:
Azure Batch används i kombination med Azure Storage. Azure Storage tillhandahåller platsen för indata, en plats för loggning och övervakningsinformation samt lagring för de slutliga utdata. De program som en Azure Batch kör kan också lagras där, men ett mer flexibelt alternativ är att använda programpaketfunktionen i Azure Batch.
Komponenterna i Azure Batch är:
-
Azure Batch-konto: En container som innehåller följande resurser som behövs för vår Azure Batch-lösning:
- Programpaket: Ett programpaket lägger till program som uppgifter i en Batch kan använda. Ett Azure Batch-konto kan innehålla upp till 20 programpaket. Du kan begära att den här gränsen ska ökas om företaget behöver mer.
- Pool: En pool innehåller beräkningsnoder, som är de motorer som kör batchjobbet. Du anger antalet, storleken och operativsystemet för noder vid skapandetillfället. Ett Azure Batch-konto kan innehålla många pooler.
- Node: Varje nod kan tilldelas ett antal aktiviteter som ska köras och aktiviteterna allokeras och hanteras av Azure Batch. Noder är associerade med en specifik pool.
- Job: Jobb hanterar samlingar med uppgifter. Ett jobb är associerat med en specifik pool. Ett Azure Batch-konto kan ha många jobb.
- Uppgift: Uppgifter kör program. Dessa kan finnas i ett programpaket eller i en Azure Storage-container. Uppgifter bearbetar indatafiler och kan vid slutförande skriva till utdatacontainrar.
Innan du kan börja hantera Azure Batch-komponenterna inifrån ett .NET-program måste du skapa Azure Batch-kontot och Azure Storage-kontot. Du kan använda Azure-portalen, PowerShell eller Azure CLI för att skapa dessa konton.
Varför använda en app för att hantera Batch-arbetsbelastningar
Med hjälp av en app för att styra Azure Batch-bearbetning kan du automatisera körnings- och övervakningsuppgifter i Azure Batch. Med den omfattande uppsättningen tillgängliga klient-API:er kan du styra hela Batch-arbetsflödet från din kod. När batchbearbetningen är klar kan appen sedan ta bort de skapade resurserna automatiskt och hålla dina Azure-kostnader låga.
Batch-arbetsbelastningar gör det möjligt att skala till tusentals noder, vilket gör lösningar som behöver processorintensiva beräkningsresurser – till exempel videotranskodning, väderprognoser och bildanalys – mer genomförbara. Alla dessa användningsfall blir mer effektiva när de hanteras programmatiskt.
API:er för Batch-klienttjänsten
Microsoft har släppt Batch-API:er för en rad olika språk. Med hjälp av dessa klientbibliotek kan du programmatiskt styra alla Batch-processkomponenter, inklusive autentisering, bearbetning av filer, skapa pooler med noder, skapa jobb med uppgifter och övervaka tillståndet för de aktiviteter som körs.
I .NET läses dessa Batch-API:er in som NuGet-paket i dina appar. Vi använder även Azure Storage-klientbiblioteket för att hantera filer och tillgångar i vår lösning.
Så här använder du en .NET-app för att styra Azure Batch
De steg du följer i resten av modulen skapar Azure Batch- och Azure Storage-konton med hjälp av Azure-portalen. Sedan laddar du upp ffmpeg-programmet som ett programpaket för att göra det tillgängligt för användning i aktiviteter. Din applikation använder processer som kör ffmpeg för att konvertera videorna.
När batch- och lagringskontona har skapats i Azure-portalen måste du sedan skapa en .NET Core-konsolapp i Cloud Shell som använder Azure Batch- och Azure Storage-klientbiblioteken.
Din app använder Azure Storage-klientbiblioteket för att ladda upp MP4-videor till bloblagring. Appen använder sedan Batch-klientbiblioteket för att skapa en pool med tre noder (virtuella Windows Server-datorer), skapa ett jobb och lägga till videokonverteringsuppgifter i jobbet som ska köras på dessa noder. När aktiviteterna körs måste appen övervaka deras status, kontrollera att de har slutförts och rensa oönskade resurser.