Delen via


Quickstart: De Azure CLI gebruiken om een Batch-account te maken en een taak uit te voeren

In deze quickstart ziet u hoe u aan de slag gaat met Azure Batch met behulp van Azure CLI-opdrachten en -scripts voor het maken en beheren van Batch-resources. U maakt een Batch-account met een groep virtuele machines of rekenknooppunten. Vervolgens maakt en voert u een opdracht uit met werkzaamheden die worden uitgevoerd op de poolknooppunten.

Nadat u deze quickstart hebt voltooid, begrijpt u de belangrijkste concepten van de Batch-service en kunt u Batch gebruiken met realistischere, grotere workloads.

Vereiste voorwaarden

  • Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.

  • Azure Cloud Shell of Azure Command-Line Interface (CLI).

    U kunt de Azure CLI-opdrachten in deze quickstart interactief uitvoeren in Azure Cloud Shell. Als u de opdrachten in Cloud Shell wilt uitvoeren, selecteert u CloudShell openen in de rechterbovenhoek van een codeblok. Selecteer Kopiëren om de code te kopiëren en plak deze in Cloud Shell om deze uit te voeren. U kunt Cloud Shell ook uitvoeren vanuit Azure Portal. Cloud Shell maakt altijd gebruik van de nieuwste versie van de Azure CLI.

    U kunt azure CLI ook lokaal installeren om de opdrachten uit te voeren. Voor de stappen in dit artikel is Azure CLI versie 2.0.20 of hoger vereist. Voer az version uit om uw geïnstalleerde versie en afhankelijke bibliotheken te zien en voer az upgrade uit om een upgrade uit te voeren. Als u een lokale installatie gebruikt, meldt u zich aan bij Azure met behulp van de juiste opdracht.

Notitie

Voor sommige regio's en abonnementstypen kunnen quotumbeperkingen ertoe leiden dat het maken van een Batch-account of knooppunt mislukt of niet is voltooid. In dit geval kunt u zonder kosten een quotumverhoging aanvragen. Zie Quota en limieten voor Batch-services voor meer informatie.

Een brongroep maken

Voer de volgende opdracht az group create uit om een Azure-resourcegroep te maken. De resourcegroep is een logische container die de Azure-resources voor deze quickstart bevat.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="canadacentral"
export RESOURCE_GROUP="qsBatch$RANDOM_SUFFIX"

az group create \
    --name $RESOURCE_GROUP \
    --location $REGION

Resultaten:

{
    "id": "/subscriptions/xxxxx/resourceGroups/qsBatchxxx",
    "location": "eastus2",
    "managedBy": null,
    "name": "qsBatchxxx",
    "properties": {
         "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
}

Een opslagaccount maken

Gebruik de opdracht az storage account create om een Azure Storage-account te maken om een koppeling naar uw Batch-account te maken. Hoewel deze quickstart geen gebruik maakt van het opslagaccount, gebruiken de meeste echte Batch-workloads een gekoppeld opslagaccount om toepassingen te implementeren en invoer- en uitvoergegevens op te slaan.

Voer de volgende opdracht uit om een Standard_LRS SKU-opslagaccount in uw resourcegroep te maken:

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

az storage account create \
    --resource-group $RESOURCE_GROUP \
    --name $STORAGE_ACCOUNT \
    --location $REGION \
    --sku Standard_LRS

Een Batch-account maken

Voer de volgende opdracht az batch account create uit om een Batch-account te maken in uw resourcegroep en koppel het aan het opslagaccount.

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

az batch account create \
    --name $BATCH_ACCOUNT \
    --storage-account $STORAGE_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --location $REGION

Meld u aan bij het nieuwe Batch-account door de opdracht az batch account login uit te voeren. Zodra u uw account met Batch hebt geverifieerd, gebruiken volgende az batch opdrachten in deze sessie deze accountcontext.

az batch account login \
    --name $BATCH_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --shared-key-auth

Een pool met rekenknooppunten maken

Voer de opdracht az batch pool create uit om een pool met Linux-rekenknooppunten in uw Batch-account te maken. In het volgende voorbeeld wordt een pool gemaakt die bestaat uit twee vm's met Standard_A1_v2 grootte waarop het Ubuntu 20.04 LTS-besturingssysteem wordt uitgevoerd. Deze knooppuntgrootte biedt een goede balans tussen prestaties en kosten voor dit quickstart-voorbeeld.

export POOL_ID="myPool$RANDOM_SUFFIX"

az batch pool create \
    --id $POOL_ID \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts \
    --node-agent-sku-id "batch.node.ubuntu 20.04" \
    --target-dedicated-nodes 2 \
    --vm-size Standard_A1_v2

Batch maakt de pool onmiddellijk, maar het duurt enkele minuten om de rekenknooppunten toe te wijzen en te starten. Gebruik de opdracht az batch pool show om de poolstatus te zien . Met deze opdracht worden alle eigenschappen van de pool weergegeven en kunt u zoeken naar specifieke eigenschappen. De volgende opdracht voert query's uit voor de pooltoewijzingsstatus:

az batch pool show --pool-id $POOL_ID \
    --query "{allocationState: allocationState}"

Resultaten:

{
    "allocationState": "resizing"
}

Terwijl Batch de knooppunten toewijst en start, heeft de pool de resizing status. U kunt een job en taken maken terwijl de poolstatus nog steeds resizing is. De pool is gereed voor het uitvoeren van taken wanneer de toewijzingsstatus steady is en alle knooppunten draaien.

Een taak maken

Gebruik de opdracht az batch job create om een Batch-taak te maken die in uw pool kan worden uitgevoerd. Een Batch-taak is een logische groep van een of meer taken. De functie bevat instellingen die gemeenschappelijk zijn voor de taken, zoals de pool waarop ze moeten draaien. In het volgende voorbeeld wordt een taak gemaakt die in eerste instantie geen taken heeft.

export JOB_ID="myJob$RANDOM_SUFFIX"

az batch job create \
    --id $JOB_ID \
    --pool-id $POOL_ID

Taaktaken maken

Batch biedt verschillende manieren om apps en scripts te implementeren op rekenknooppunten. Gebruik de opdracht az batch task create om taken te maken die in de taak moeten worden uitgevoerd. Elke taak heeft een opdrachtregel waarmee een app of script wordt opgegeven.

Met het volgende Bash-script worden vier identieke, parallelle taken gemaakt die myTask1 tot en met myTask4 worden genoemd. De opdrachtregel van de taak geeft de Batch-omgevingsvariabelen op het rekenknooppunt weer en wacht vervolgens 90 seconden.

for i in {1..4}
do
   az batch task create \
    --task-id myTask$i \
    --job-id $JOB_ID \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

De taken worden met Batch naar de rekenknooppunten gedistribueerd.

Taakstatus weergeven

Nadat u de taken hebt gemaakt, worden ze in Batch in de wachtrij geplaatst om deze uit te voeren op de pool. Zodra een knooppunt beschikbaar is, wordt een taak uitgevoerd op het knooppunt.

Gebruik de opdracht az batch task show om de status van Batch-taken weer te geven. In het volgende voorbeeld ziet u details over de status van myTask1:

az batch task show \
    --job-id $JOB_ID \
    --task-id myTask1

De uitvoer van de opdracht bevat veel details. Een exitCode van 0 geeft bijvoorbeeld aan dat de taakopdracht succesvol is voltooid. Hier nodeId ziet u de naam van het poolknooppunt waarop de taak is uitgevoerd.

Taakuitvoer weergeven

Gebruik de opdracht az batch task file list om de bestanden weer te geven die een taak op een knooppunt heeft gemaakt. Met het volgende commando worden de bestanden weergegeven die door myTask1 zijn gemaakt:

# Wait for task to complete before downloading output
echo "Waiting for task to complete..."
while true; do
    STATUS=$(az batch task show --job-id $JOB_ID --task-id myTask1 --query "state" -o tsv)
    if [ "$STATUS" == "running" ]; then
        break
    fi
    sleep 10
done

az batch task file list --job-id $JOB_ID --task-id myTask1 --output table

De resultaten zijn vergelijkbaar met de volgende uitvoer:

Resultaten:

Name        URL                                                                                       Is Directory    Content Length
----------  ----------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stderr.txt  False                    0

Met de opdracht az batch task file download downloadt u uitvoerbestanden naar een lokale map. Voer het volgende voorbeeld uit om het stdout.txt-bestand te downloaden:

az batch task file download \
    --job-id $JOB_ID \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

U kunt de inhoud van het standaarduitvoerbestand weergeven in een teksteditor. In het volgende voorbeeld ziet u een typisch stdout.txt bestand. In de standaarduitvoer van deze taak ziet u de Omgevingsvariabelen van Azure Batch die zijn ingesteld op het knooppunt. U kunt deze omgevingsvariabelen raadplegen in de opdrachtregels van uw Batch-taaktaak en in de apps en scripts die door de opdrachtregels worden uitgevoerd.

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myJob
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=myPool
AZ_BATCH_TASK_ID=myTask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

Volgende stappen

In deze quickstart hebt u een Batch-account en -pool gemaakt, een Batch-taak aangemaakt en uitgevoerd, en de taakuitvoer van de knooppunten bekeken. Nu u de belangrijkste concepten van de Batch-service begrijpt, bent u klaar om Batch te gebruiken met realistischere, grotere workloads. Voor meer informatie over Azure Batch gaat u naar de Azure Batch-zelfstudies.