Udostępnij za pośrednictwem


Szybki start: tworzenie konta usługi Batch i uruchamianie zadania przy użyciu interfejsu wiersza polecenia platformy Azure

W tym przewodniku Szybki start pokazano, jak rozpocząć pracę z usługą Azure Batch przy użyciu poleceń i skryptów interfejsu wiersza polecenia platformy Azure w celu tworzenia zasobów usługi Batch i zarządzania nimi. Utworzysz konto usługi Batch z pulą maszyn wirtualnych lub węzłami obliczeniowymi. Następnie utworzysz i uruchomisz zadanie z zadaniami uruchamianymi w węzłach puli.

Po ukończeniu tego przewodnika szybkiego startu, zapoznasz się z kluczowymi pojęciami usługi Batch, dzięki czemu będziesz gotowy do korzystania z Batch przy bardziej realistycznych obciążeniach na dużą skalę.

Wymagania wstępne

  • Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

  • Azure Cloud Shell lub Azure CLI.

    Polecenia interfejsu wiersza polecenia platformy Azure można uruchomić interaktywnie w tym przewodniku szybkiego startu w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz program CloudShell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod i wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal. Usługa Cloud Shell zawsze używa najnowszej wersji interfejsu wiersza polecenia platformy Azure.

    Alternatywnie możesz zainstalować interfejs wiersza polecenia platformy Azure lokalnie , aby uruchomić polecenia. Kroki opisane w tym artykule wymagają interfejsu wiersza polecenia platformy Azure w wersji 2.0.20 lub nowszej. Uruchom polecenie az version , aby wyświetlić zainstalowaną wersję i biblioteki zależne, a następnie uruchom polecenie az upgrade , aby uaktualnić. Jeśli używasz instalacji lokalnej, zaloguj się do platformy Azure przy użyciu odpowiedniego polecenia.

Uwaga

W przypadku niektórych regionów i typów subskrypcji ograniczenia limitu przydziałów mogą spowodować niepowodzenie tworzenia konta usługi Batch lub węzła. W takiej sytuacji można zażądać zwiększenia limitu przydziału bez opłat. Aby uzyskać więcej informacji, zobacz Limity i ograniczenia usługi Batch.

Tworzenie grupy zasobów

Uruchom następujące polecenie az group create , aby utworzyć grupę zasobów platformy Azure. Grupa zasobów jest logicznym kontenerem, który przechowuje zasoby platformy Azure do tego szybkiego startu.

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

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

Wyniki:

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

Utwórz konto przechowywania

Użyj polecenia az storage account create, aby utworzyć konto usługi Azure Storage, aby połączyć się z kontem usługi Batch. Mimo że ten przewodnik szybkiego startu nie używa konta magazynowego, większość prawdziwych zadań Batch używa związanego konta magazynowego do wdrażania aplikacji i przechowywania danych wejściowych i wyjściowych.

Uruchom następujące polecenie, aby w grupie zasobów utworzyć konto magazynu typu SKU Standard_LRS:

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

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

Tworzenie konta usługi Batch

Uruchom następujące polecenie az batch account create, aby w grupie zasobów utworzyć konto usługi Batch i połączyć je z kontem magazynowym.

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

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

Zaloguj się do nowego konta Batch, uruchamiając polecenie az batch account login. Po uwierzytelnieniu konta w usłudze Batch kolejne az batch polecenia w tej samej sesji używają tego kontekstu konta.

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

Tworzenie puli węzłów obliczeniowych

Uruchom polecenie az batch pool create, aby utworzyć pulę węzłów obliczeniowych systemu Linux na koncie usługi Batch. Poniższy przykład obejmuje tworzenie puli składającej się z dwóch maszyn wirtualnych o rozmiarze Standard_A1_v2 z systemem operacyjnym Ubuntu 20.04 LTS. Ten rozmiar węzła zapewnia dobrą równowagę między wydajnością w porównaniu do kosztów dla tego przykładu z przewodnika 'Szybki start'.

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

Usługa Batch natychmiast tworzy pulę, ale przydzielanie i uruchamianie węzłów obliczeniowych zajmuje kilka minut. Aby wyświetlić stan puli, użyj polecenia az batch pool show. To polecenie powoduje wyświetlenie wszystkich właściwości puli i umożliwia wykonywanie zapytań o określone właściwości. Następujące polecenie wykonuje zapytania dotyczące stanu alokacji puli:

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

Wyniki:

{
    "allocationState": "resizing"
}

Podczas gdy usługa Batch przydziela i uruchamia węzły, pula jest w stanie resizing. Możesz utworzyć pracę i zadania, gdy stan puli jest nadal resizing. Pula jest gotowa do uruchamiania zadań, gdy stan alokacji jest steady i wszystkie węzły są uruchomione.

Utwórz zadanie

Użyj polecenia az batch job create, aby utworzyć zadanie Batch do uruchomienia w swojej puli. Zadanie wsadowe to logiczna grupa zadań. Praca zawiera ustawienia wspólne dla zadań w ramach pracy, takich jak pula, na której ma być uruchomiona. Poniższy przykład tworzy pracę, która początkowo nie ma zadań.

export JOB_ID="myJob$RANDOM_SUFFIX"

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

Tworzenie zadań zawodowych

Usługa Batch udostępnia kilka sposobów wdrażania aplikacji i skryptów w węzłach obliczeniowych. Użyj polecenia az batch task create, aby utworzyć zadania do uruchomienia w projekcie. Każde zadanie ma wiersz polecenia, który określa aplikację lub skrypt.

Poniższy skrypt Bash tworzy cztery identyczne, równoległe zadania nazwane myTask1 do myTask4. Polecenie wiersza zadania wyświetla zmienne środowiskowe Batch na węźle obliczeniowym, a następnie czeka 90 sekund.

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

Usługa Batch dystrybuuje zadania do węzłów obliczeniowych.

Wyświetlanie stanu zadania

Po utworzeniu zadań usługa Batch kolejkuje je do uruchomienia w puli. Po udostępnieniu węzła zadanie jest uruchamiane w węźle.

Użyj polecenia az batch task show, aby wyświetlić stan zadań usługi Batch. W poniższym przykładzie przedstawiono szczegółowe informacje o stanie elementu myTask1:

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

Dane wyjściowe polecenia zawierają wiele szczegółów. Przykładowo exitCode z wartością 0 wskazuje, że polecenie zadania zostało ukończone pomyślnie. nodeId pokazuje nazwę węzła puli, który uruchomił zadanie.

Wyświetl dane wyjściowe zadania

Użyj polecenia az batch task file list, aby wyświetlić listę plików stworzonych przez zadanie na węźle. Następujące polecenie wyświetla listę utworzonych plików myTask1 :

# 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

Wyniki są podobne do następujących danych wyjściowych:

Wyniki:

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

Polecenie az batch task file download pobiera pliki wyjściowe do katalogu lokalnego. Uruchom następujący przykład, aby pobrać plik stdout.txt :

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

Zawartość standardowego pliku wyjściowego można wyświetlić w edytorze tekstów. W poniższym przykładzie przedstawiono typowy plik stdout.txt . Standardowe dane wyjściowe z tego zadania pokazują zmienne środowiskowe usługi Azure Batch ustawione w węźle. Możesz odwołać się do tych zmiennych środowiskowych w wierszach poleceń zadania usługi Batch oraz w aplikacjach i skryptach, które uruchamiają te wiersze poleceń.

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

Następne kroki

W tym przewodniku szybkiego startu utworzono konto i pulę usługi Batch, utworzono i uruchomiono zadanie Batch oraz zadania, a także wyświetlono dane wyjściowe z węzłów. Teraz, gdy rozumiesz kluczowe pojęcia usługi Batch, możesz przystąpić do korzystania z usługi Batch z bardziej realistycznymi, większymi obciążeniami na dużą skalę. Aby dowiedzieć się więcej o usłudze Azure Batch, kontynuuj naukę w ramach samouczków usługi Azure Batch.