Övning – Skapa ett Azure Batch-jobb i CLI för att köra en parallell uppgift

Slutförd

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 på Azure. Som ett första steg kommer du prova att skapa ett Batch-konto, en pool med arbetsnoder, ett jobb samt uppgifter med hjälp av Azure CLI.

Azure CLI är ett plattformsoberoende kommandoradsverktyg för att skapa och hantera Azure-resurser. Det använder en konsekvent syntax med az noun verb --properties. CLI-kommandon för att hantera Azure Batch följer den här konventionen, så alla kommandon följer formatet az batch verb --properties.

Viktigt!

Ö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

  1. Logga in på Azure-portalen.

  2. Välj Resursgrupper på den vänstra menyn.

  3. Välj + Skapa.

  4. Fyll i formuläret för att skapa en ny resursgrupp för den här övningen och notera namnet.

Skapa Azure Batch-kontot

  1. Ö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.

  2. Skapa miljövariabler för resursgruppen och batchresursen.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Kör följande kommando i Cloud Shell för att skapa ett Azure Batch-konto. Välj en 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>
    
  4. Kör följande kommando för att logga in på Azure Batch-kontot:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. 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"  
    
  6. Kör följande kommando för att regelbundet avgöra om noderna är redo:

    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. Medan de visas som "storleksändring" etableras de faktiskt. Du kan använda uppåtpilen för att upprepa det senaste kommandot i Cloud Shell om du vill köra frågor om nodernas status mer än en gång.

  7. 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
    
  8. 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 med numrerade Batch-uppgifter som var och en matar ut information om aktuellt uppgifts-ID och nod-ID. Genom noggrant att undersöka vad som händer här kan du få ganska mycket information om hur Azure Batch fungerar. Uppgifter schemaläggs automatiskt till noder med tillgänglig kapacitet. De miljövariabler som vi använder (AZ_BATCH_TASK_ID och AZ_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 uppgiftsanvändaren, ett standardkonto som skapats på varje nod för att köra aktiviteter. --command-line Argumentet körs inte heller direkt under ett gränssnitt, så du måste uttryckligen anropa gränssnittet med för /bin/bash -c att kunna använda kommandon som printenv och grep.

    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 container för sina Batch-uppgifter tas även uppgifterna bort.

  9. Kör följande kommando i Cloud Shell för att ta bort Batch-jobbet:

    az batch job delete --job-id myjob -y