Oefening: een Azure Batch-taak maken in de CLI om uw parallelle taak uit te voeren

Voltooid

Met Azure CLI kunt u Azure Batch-resources maken en implementeren vanaf de opdrachtregel.

Als oplossingsarchitect voor de non-profitorganisatie wilt u een Batch-oplossing maken voor het OCR-scenario in Azure. Als eerste stap gaat u testen hoe u een Batch-account, een pool werkknooppunten, een taak en taken maakt, allemaal met behulp van de Azure CLI.

De Azure CLI is een platformoverschrijdende opdrachtregel voor het maken en beheren van Azure-resources. Er wordt een consistente az noun verb --properties syntaxis gebruikt. CLI-opdrachten voor het beheren van Azure Batch volgen deze conventie, zodat alle opdrachten de vorm van az batch verb --propertieshebben.

Belangrijk

De oefeningen in deze module zijn optioneel. Als u de oefeningen wilt voltooien, hebt u uw eigen Azure-abonnement nodig.

De Azure Batch-resources maken

Eerst maakt u het Azure Batch-account en de pool met werkknooppunten voor uw testscenario. Vervolgens maakt u een Batch-taak en -taken die in de pool moeten worden uitgevoerd.

Een nieuwe resourcegroep maken

  1. Meld u aan bij de Azure Portal.

  2. Selecteer Resourcegroepen in het linkermenu.

  3. Selecteer +maken.

  4. Vul het formulier in om een nieuwe resourcegroep voor de oefening te maken en noteer de naam.

Het Azure Batch-account maken

  1. Open cloud shell in de portal door in het bovenste menu het Cloud Shell-pictogram (>_) te selecteren. Gebruik de vervolgkeuzelijst bovenaan het terminalvenster om ervoor te zorgen dat u zich in Bash-bevindt.

  2. Maak omgevingsvariabelen voor uw resourcegroep en batchresource.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Voer de volgende opdracht uit in Cloud Shell om een Azure Batch-account te maken. Kies een van de volgende locaties:

    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. Voer de volgende opdracht uit om u aan te melden bij uw Azure Batch-account:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Maak een pool van drie Standard A1 v2-VM's met 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. Voer de volgende opdracht uit om periodiek te bepalen of de knooppunten gereed zijn:

    az batch pool show --pool-id mypool \
     --query "allocationState"
    

    Wanneer deze query laat zien dat de knooppunten 'stabiel' zijn, zijn ze klaar om te werken. Terwijl ze worden weergegeven als 'aanpassen', vinden ze eigenlijk plaats. U kunt de pijl-omhoog gebruiken om de meest recente opdracht in Cloud Shell te herhalen als u meer dan één keer een query wilt uitvoeren op de status van de knooppunten.

  7. Voer de volgende opdracht uit om een Batch-taak te maken. Dit is een logische groepering voor alle taken die op uw knooppunten worden uitgevoerd:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Voer de volgende opdracht uit om Batch-taken te maken:

    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
    

    Deze lus creëert een reeks genummerde Batch-taken, waarbij elk taak informatie uitvoert over de taak-id en de betrokken knooppunt-id. Door nauwkeurig te onderzoeken wat hier gebeurt, kunt u verschillende kenmerken zien van de manier waarop Azure Batch werkt. Taken worden automatisch gepland op knooppunten met beschikbare capaciteit. De omgevingsvariabelen die we gebruiken (AZ_BATCH_TASK_ID en AZ_BATCH_NODE_ID), om informatie weer te geven over welke taak wordt uitgevoerd op welk knooppunt, zijn alleen beschikbaar in de context van de taakgebruiker, een standaardaccount dat op elk knooppunt is gemaakt om taken uit te voeren. Het argument --command-line wordt niet rechtstreeks uitgevoerd onder een shell, dus u moet de shell expliciet aanroepen met behulp van /bin/bash -c om opdrachten zoals printenv en grepte kunnen gebruiken.

    Met deze lus wordt de implementatie van de Azure Batch-taak voltooid. We laten het Azure Batch-account en de pool met werkknooppunten aanwezig voor gebruik in de volgende module, maar we verwijderen de Batch-taak. Omdat de Batch-taak fungeert als een container voor de Batch-taken, worden de taken ook verwijderd.

  9. Voer de volgende opdracht uit in Cloud Shell om de Batch-taak te verwijderen:

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