Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Denna snabbstart visar hur du kommer igång med Azure Batch genom att köra en C#-app som använder Azure Batch .NET API. Den .NET-appen:
- Laddar upp flera indatafiler till en Azure Storage-blobcontainer som ska användas för bearbetning av Batch-uppgifter.
- Skapar en pool av två virtuella maskiner (VM:ar), eller beräkningsnoder, som kör Windows Server.
- Skapar ett jobb som kör uppgifter på noderna för att bearbeta varje indatafil med hjälp av en Windows-kommandorad.
- Visar utdatafilerna som aktiviteterna returnerar.
När du har slutfört den här snabbstarten förstår du de viktigaste begreppen i Batch-tjänsten och är redo att använda Batch med mer realistiska arbetsbelastningar i större skala.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Om du inte har något skapar du ett konto kostnadsfritt.
Ett Batch-konto med ett länkat Azure Storage-konto. Du kan skapa kontona med någon av följande metoder: Azure CLI | | Bicep | ARM-mall | terraform.
Visual Studio 2019 or later, or .NET 6.0 or later, for Linux or Windows.
Kör appen
För att slutföra denna snabbstart, ladda ner eller klona appen, ange dina kontovärden, bygg och kör appen, och verifiera resultatet.
Ladda ned eller klona appen
Ladda ner eller klona appen Azure Batch .NET Quickstart från GitHub. Använd följande kommando för att klona app-lagringsplatsen med en Git-klient:
git clone https://github.com/Azure-Samples/batch-dotnet-quickstart.git
Ange kontoinformation
Appen behöver använda dina Batch- och Storage-kontomanamn, kontonyckelvärden och Batch-kontoändpunkt. Du kan hämta den här informationen från Azure-portalen, Azure API:er eller kommandoradsverktyg.
Så här hämtar du kontoinformation från Azure-portalen:
- I Azure Search-fältet söker du efter och väljer ditt Batch-kontonamn.
- På sidan Batch-konto väljer du Nycklar i det vänstra navigeringsfältet.
- På sidan Nycklar kopierar du följande värden:
- Batch-konto
- Kontoslutpunkt
- Primär åtkomstnyckel
- Lagringskontonamn
- Key1
Navigate to your downloaded batch-dotnet-quickstart folder and edit the credential strings in Program.cs to provide the values you copied:
// Batch account credentials
private const string BatchAccountName = "<batch account>";
private const string BatchAccountKey = "<primary access key>";
private const string BatchAccountUrl = "<account endpoint>";
// Storage account credentials
private const string StorageAccountName = "<storage account name>";
private const string StorageAccountKey = "<key1>
Viktigt!
Att exponera kontonycklar i appkällan rekommenderas inte för produktionsanvändning. Du bör begränsa åtkomsten till autentiseringsuppgifter och referera till dem i koden med hjälp av variabler eller en konfigurationsfil. Det är bäst att lagra Batch- och Storage-kontonycklar i Azure Key Vault.
Bygg och kör appen och se resultatet
To see the Batch workflow in action, build and run the application in Visual Studio. Du kan också använda kommandoraden dotnet build
och dotnet run
kommandon.
In Visual Studio:
Öppna filen BatchDotNetQuickstart.sln, högerklicka på lösningen i Solution Explorer, och välj Bygg. Om du uppmanas, använd NuGet Package Manager för att uppdatera eller återställa NuGet-paket.
Once the build completes, select BatchDotNetQuickstart in the top menu bar to run the app.
Typisk körtid med standardkonfigurationen är cirka fem minuter. Den första konfigurationen av poolnoden tar mest tid. För att köra om jobbet, ta bort jobbet från den tidigare körningen, men ta inte bort poolen. On a preconfigured pool, the job completes in a few seconds.
Appen returnerar utdata som liknar följande exempel:
Sample start: 11/16/2022 4:02:54 PM
Container [input] created.
Uploading file taskdata0.txt to container [input]...
Uploading file taskdata1.txt to container [input]...
Uploading file taskdata2.txt to container [input]...
Creating pool [DotNetQuickstartPool]...
Creating job [DotNetQuickstartJob]...
Adding 3 tasks to job [DotNetQuickstartJob]...
Monitoring all tasks for 'Completed' state, timeout in 00:30:00...
Det är en paus vid Monitoring all tasks for 'Completed' state, timeout in 00:30:00...
när poolens beräkningsnoder startar. När uppgifter skapas, köar Batch dem för att köras i poolen. Så snart den första beräkningsnoden är tillgänglig körs den första aktiviteten på noden. Du kan övervaka nod-, aktivitets- och jobbstatus från batchkontosidan i Azure-portalen.
När varje uppgift har slutförts visas utdata som liknar följande exempel:
Printing task output.
Task: Task0
Node: tvm-2850684224_3-20171205t000401z
Standard out:
Batch processing began with mainframe computers and punch cards. Today it still plays a central role...
stderr:
...
Granska koden
Granska koden för att förstå stegen i Azure Batch .NET Quickstart.
Skapa tjänstklienter och ladda upp resursfiler
To interact with the storage account, the app uses the Azure Storage Blobs client library for .NET to create a BlobServiceClient.
var sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey); string blobUri = "https://" + storageAccountName + ".blob.core.windows.net"; var blobServiceClient = new BlobServiceClient(new Uri(blobUri), sharedKeyCredential); return blobServiceClient;
Appen använder referensen
blobServiceClient
för att skapa en behållare i lagringskontot och ladda upp datafiler till behållaren. Filerna i lagringen definieras som Batch ResourceFile-objekt som Batch senare kan ladda ner till datorknuterna.List<string> inputFilePaths = new() { "taskdata0.txt", "taskdata1.txt", "taskdata2.txt" }; var inputFiles = new List<ResourceFile>(); foreach (var filePath in inputFilePaths) { inputFiles.Add(UploadFileToContainer(containerClient, inputContainerName, filePath)); }
Appen skapar ett BatchClient-objekt för att skapa och hantera Batch-pooler, jobb och uppgifter. Batch-klienten använder autentisering med delad nyckel. Batch stöder även Microsoft Entra-autentisering.
var cred = new BatchSharedKeyCredentials(BatchAccountUrl, BatchAccountName, BatchAccountKey); using BatchClient batchClient = BatchClient.Open(cred); ...
Skapa en pool med beräkningsnoder
För att skapa en Batch-pool använder appen metoden BatchClient.PoolOperations.CreatePool för att ställa in antalet noder, VM-storlek och poolkonfiguration. Följande VirtualMachineConfiguration-objekt anger en ImageReference till en Windows Server Marketplace-bild. Batch stöder ett brett utbud av Windows Server och Linux Marketplace OS-bilder och stöder även anpassade VM-bilder.
PoolNodeCount
och VM-storlek PoolVMSize
är definierade konstanter. Appen skapar en grupp av två Standard_A1_v2-noder. Den här storleken ger en bra balans mellan prestanda och kostnad för den här snabbstarten.
Commit-metoden skickar poolen till Batch-tjänsten.
private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
return new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.windows amd64");
}
private static ImageReference CreateImageReference()
{
return new ImageReference(
publisher: "MicrosoftWindowsServer",
offer: "WindowsServer",
sku: "2016-datacenter-smalldisk",
version: "latest");
}
private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
try
{
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: PoolId,
targetDedicatedComputeNodes: PoolNodeCount,
virtualMachineSize: PoolVMSize,
virtualMachineConfiguration: vmConfiguration);
pool.Commit();
}
...
Skapa ett Batch-jobb
Ett Batch-jobb är en logisk gruppering av en eller flera aktiviteter. Jobbet innehåller inställningar som är gemensamma för aktiviteterna, till exempel prioritet och poolen som aktiviteter ska köras på.
Appen använder metoden BatchClient.JobOperations.CreateJob för att skapa ett jobb i din pool. Commit-metoden skickar in jobbet till Batch-tjänsten. Till en början har jobbet inga uppgifter.
try
{
CloudJob job = batchClient.JobOperations.CreateJob();
job.Id = JobId;
job.PoolInformation = new PoolInformation { PoolId = PoolId };
job.Commit();
}
...
Skapa uppgifter
Batch tillhandahåller flera sätt att distribuera appar och skript till beräkningsnoder. Den här appen skapar en lista med CloudTask indataResourceFile
objekt. Varje uppgift bearbetar en indatafil med hjälp av en CommandLine-egenskap. Batch-kommandoraden är där du anger din app eller ditt skript.
Kommandoraden i följande kod kör Windows type
-kommandot för att visa indatafilerna. Sedan lägger appen till varje uppgift i jobbet med metoden AddTask, vilket ställer uppgiften i kö för att köras på beräkningsnoderna.
for (int i = 0; i < inputFiles.Count; i++)
{
string taskId = String.Format("Task{0}", i);
string inputFilename = inputFiles[i].FilePath;
string taskCommandLine = String.Format("cmd /c type {0}", inputFilename);
var task = new CloudTask(taskId, taskCommandLine)
{
ResourceFiles = new List<ResourceFile> { inputFiles[i] }
};
tasks.Add(task);
}
batchClient.JobOperations.AddTask(JobId, tasks);
Visa aktivitetens utdata
Appen skapar en TaskStateMonitor för att övervaka uppgifterna och säkerställa att de blir klara. När varje uppgift körs framgångsrikt, skrivs dess utdata till stdout.txt. Appen använder sedan egenskapen CloudTask.ComputeNodeInformation för att visa stdout.txt-filen för varje slutförd uppgift.
foreach (CloudTask task in completedtasks)
{
string nodeId = String.Format(task.ComputeNodeInformation.ComputeNodeId);
Console.WriteLine("Task: {0}", task.Id);
Console.WriteLine("Node: {0}", nodeId);
Console.WriteLine("Standard out:");
Console.WriteLine(task.GetNodeFile(Constants.StandardOutFileName).ReadAsString());
}
Rensa resurser
Appen tar automatiskt bort lagringscontainern som den skapar och ger dig möjlighet att ta bort Batch-poolen och jobbet. Pooler och noder debiteras medan noderna är i drift, även om de inte utför jobb. Om du inte längre behöver poolen tar du bort den.
När du inte längre behöver ditt Batch-konto och lagringskonto kan du ta bort resursgruppen som innehåller dem. I Azure-portalen väljer du Ta bort resursgrupp överst på resursgruppssidan. På skärmen Ta bort en resursgrupp anger du resursgruppens namn och väljer sedan Ta bort.
Nästa steg
In this quickstart, you ran an app that uses the Batch .NET API to create a Batch pool, nodes, job, and tasks. Jobbet laddade upp resursfiler till en lagringscontainer, körde uppgifter på noderna och visade utdata från noderna.
Nu när du förstår huvudbegreppen i Batch-tjänsten är du redo att använda Batch med mer realistiska arbetsbelastningar i större skala. To learn more about Azure Batch and walk through a parallel workload with a real-world application, continue to the Batch .NET tutorial.