Dela via


Snabbstart: Använd Azure CLI för att skapa ett Batch-konto och köra ett jobb

Den här snabbstarten visar hur du kommer igång med Azure Batch med hjälp av Azure CLI-kommandon och -skript för att skapa och hantera Batch-resurser. Du skapar ett Batch-konto som har en pool med virtuella datorer eller beräkningsnoder. Sedan skapar och kör du ett jobb med uppgifter som körs på poolnoderna.

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

  • Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

  • Azure Cloud Shell eller Azure CLI.

    Du kan köra Azure CLI-kommandona i den här snabbstarten interaktivt i Azure Cloud Shell. Om du vill köra kommandona i Cloud Shell väljer du Öppna Cloudshell i det övre högra hörnet i ett kodblock. Välj Kopiera för att kopiera koden och klistra in den i Cloud Shell för att köra den. Du kan också köra Cloud Shell inifrån Azure Portal. Cloud Shell använder alltid den senaste versionen av Azure CLI.

    Du kan också installera Azure CLI lokalt för att köra kommandona. Stegen i den här artikeln kräver Azure CLI version 2.0.20 eller senare. Kör az version för att se din installerade version och beroendebibliotek och kör az upgrade för att uppgradera. Om du använder en lokal installation loggar du in på Azure med hjälp av lämpligt kommando.

Anteckning

För vissa regioner och prenumerationstyper kan kvotbegränsningar leda till att skapandet av Batch-kontot eller noden misslyckas eller inte slutförs. I det här fallet kan du begära en kvotökning utan kostnad. Mer information finns i Batch-tjänstkvoter och -gränser.

Skapa en resursgrupp

Kör följande az group create-kommando för att skapa en Azure-resursgrupp. Resursgruppen är en logisk container som innehåller Azure-resurserna för den här snabbstarten.

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

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

Resultat:

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

Skapa ett lagringskonto

Använd kommandot az storage account create för att skapa ett Azure Storage-konto för att länka till ditt Batch-konto. Även om den här snabbstarten inte använder lagringskontot använder de flesta verkliga Batch-arbetsbelastningar ett länkat lagringskonto för att distribuera program och lagra indata och utdata.

Kör följande kommando för att skapa ett Standard_LRS SKU-lagringskonto i resursgruppen:

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

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

Skapa ett Batch-konto

Kör följande az batch account create-kommando för att skapa ett Batch-konto i resursgruppen och länka det till lagringskontot.

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

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

Logga in på det nya Batch-kontot genom att köra kommandot az batch account login . När du har autentiserat ditt konto med Batch använder efterföljande az batch kommandon i den här sessionen den här kontokontexten.

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

Skapa en pool med beräkningsnoder

Kör kommandot az batch pool create för att skapa en pool med Linux-beräkningsnoder i ditt Batch-konto. I följande exempel skapas en pool som består av två virtuella datorer med Standard_A1_v2 storlek som kör Ubuntu 20.04 LTS OS. Den här nodstorleken ger en bra balans mellan prestanda och kostnad för det här snabbstartsexemplet.

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 skapar poolen omedelbart, men det tar några minuter att allokera och starta beräkningsnoderna. Om du vill se poolstatusen använder du kommandot az batch pool show . Det här kommandot visar alla egenskaper för poolen och du kan fråga efter specifika egenskaper. Följande kommando frågar efter poolallokeringstillståndet:

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

Resultat:

{
    "allocationState": "resizing"
}

Medan Batch allokerar och startar noderna är poolen i tillståndet resizing . Du kan skapa ett arbete och aktiviteter medan pooltillståndet fortfarande är resizing. Poolen är redo att köra aktiviteter när allokeringstillståndet är steady och alla noderna körs.

Skapa ett jobb

Använd kommandot az batch job create för att skapa ett Batch-jobb som ska köras i poolen. Ett Batch-jobb är en logisk grupp med en eller flera aktiviteter. Jobbet innehåller inställningar som är gemensamma för uppgifterna, till exempel poolen som det ska köras på. I följande exempel skapas ett jobb som till en början inte har några uppgifter.

export JOB_ID="myJob$RANDOM_SUFFIX"

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

Skapa jobbuppgifter

Batch tillhandahåller flera sätt att distribuera appar och skript till beräkningsnoder. Använd kommandot az batch task create för att skapa aktiviteter som ska köras i jobbet. Varje uppgift har en kommandorad som anger en app eller ett skript.

Följande Bash-skript skapar fyra identiska, parallella uppgifter som anropas myTask1 via myTask4. Aktivitetskommandoraden visar Batch-miljövariablerna på beräkningsnoden och väntar sedan 90 sekunder.

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

Batch distribuerar aktiviteterna till beräkningsnoderna.

Visa status för aktivitet

När du har skapat aktiviteterna köar Batch dem för körning i poolen. När en nod är tillgänglig körs en aktivitet på noden.

Använd kommandot az batch task show för att visa status för Batch-uppgifter. I följande exempel visas information om statusen för myTask1:

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

Kommandoutdata innehåller många detaljer. Till exempel indikerar en exitCode av 0 att aktivitetskommandot slutfördes framgångsrikt. nodeId Visar namnet på poolnoden som körde uppgiften.

Visa aktivitetens utdata

Använd kommandot az batch task file list för att visa en lista över filer som en uppgift har skapat på en nod. Följande kommando visar de filer som myTask1 skapades:

# 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

Resultaten liknar följande utdata:

Resultat:

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

Kommandot az batch task file download laddar ned utdatafiler till en lokal katalog. Kör följande exempel för att ladda ned filen stdout.txt :

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

Du kan visa innehållet i standardutdatafilen i en textredigerare. I följande exempel visas en typisk stdout.txt fil. Standardutdata från den här uppgiften visar de Azure Batch-miljövariabler som har angetts på noden. Du kan referera till dessa miljövariabler i kommandoraderna för Batch-jobbet samt i de appar och skript som kommandoraderna kör.

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

Nästa steg

I den här snabbstarten skapade du ett Batch-konto och en pool, skapade och körde ett Batch-jobb och uppgifter och visade aktivitetsutdata 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. Om du vill veta mer om Azure Batch ska du fortsätta med Azure Batch-självstudierna.