Övning – Skapa ett Azure Batch-jobb i CLI för att köra din parallella uppgift
Med Azure CLI kan du skapa och distribuera Azure Batch-resurser från kommandoraden.
Som lösningsarkitekt för den ideella organisationen vill du börja skapa en Batch-lösning för OCR-scenariot i Azure. Som ett första steg ska du testa att skapa ett Batch-konto, en pool med arbetsnoder, ett jobb och uppgifter, som alla använder Azure CLI.
Azure CLI är en plattformsoberoende kommandorad för att skapa och hantera Azure-resurser. Den använder en konsekvent az noun verb --properties
syntax. CLI-kommandon för att hantera Azure Batch följer den här konventionen, så alla kommandon har formen az batch verb --properties
.
Viktig
Övningarna i den här modulen är valfria. För att slutföra övningarna behöver du en egen Azure-prenumeration.
Skapa Azure Batch-resurserna
Först skapar du Azure Batch-kontot och poolen med arbetsnoder för testscenariot. Sedan skapar du ett Batch-jobb och uppgifter som ska köras i poolen.
Skapa en ny resursgrupp
Logga in på Azure-portalen.
Välj Resursgrupper på den vänstra menyn.
Välj + Skapa.
Fyll i formuläret för att skapa en ny resursgrupp för övningen och anteckna namnet.
Skapa Azure Batch-kontot
Öppna Cloud Shell i portalen genom att välja Cloud Shell-ikonen (>_) på den översta menyn. Använd den nedrullningsbara menyn överst i terminalfönstret för att kontrollera att du är i Bash-.
Skapa miljövariabler för resursgruppen och batchresursen.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
Kör följande kommando i Cloud Shell för att skapa ett Azure Batch-konto. Välj någon av följande platser:
westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
az batch account create \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --location <choose a location from the preceding list>
Kör följande kommando för att logga in på ditt Azure Batch-konto:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
Skapa en pool med tre virtuella Standard A1 v2-datorer som kör Ubuntu 18.04:
az batch pool create \ --id mypool --vm-size Standard_A1_v2 \ --target-dedicated-nodes 3 \ --image canonical:ubuntuserver:18.04-LTS \ --node-agent-sku-id "batch.node.ubuntu 18.04"
Kör följande kommando för att regelbundet avgöra om noderna är klara:
az batch pool show --pool-id mypool \ --query "allocationState"
När den här frågan visar att noderna är "stadiga" är de redo att fungera. Även om de visas som "storleksändring", genomgår de faktiskt en allokering. Du kan använda uppåtpilen för att upprepa det senaste kommandot i Cloud Shell om du vill köra frågor mot nodernas status mer än en gång.
Kör följande kommando för att skapa ett Batch-jobb, vilket är en logisk gruppering för alla aktiviteter som ska köras på noderna:
az batch job create \ --id myjob \ --pool-id mypool
Kör följande kommando för att skapa Batch-uppgifter:
for i in {1..10} do az batch task create \ --task-id mytask$i \ --job-id myjob \ --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'" done
Den här loopen skapar en serie numrerade Batch-uppgifter där varje uppgift genererar information om uppgifts-ID och nod-ID. Genom att titta närmare på vad som händer här kan du se en hel del egenskaper för hur Azure Batch fungerar. Aktiviteter schemaläggs automatiskt till noder med tillgänglig kapacitet. De miljövariabler som vi använder (
AZ_BATCH_TASK_ID
ochAZ_BATCH_NODE_ID
), för att visa information om vilken aktivitet som körs på vilken nod, är dock endast tillgängliga i kontexten för aktivitetsanvändare, ett standardkonto som skapas på varje nod för att köra aktiviteter. Argumentet--command-line
körs inte direkt under ett gränssnitt, så du måste uttryckligen anropa gränssnittet med hjälp av/bin/bash -c
för att kunna använda kommandon somprintenv
ochgrep
.Den här loopen slutför implementeringen av Azure Batch-jobbet. Vi lämnar Azure Batch-kontot och poolen med arbetsnoder på plats för användning i nästa modul, men vi tar bort Batch-jobbet. Eftersom Batch-jobbet fungerar som en container för sina Batch-uppgifter tas även uppgifterna bort.
Kör följande kommando i Cloud Shell för att ta bort Batch-jobbet:
az batch job delete --job-id myjob -y