Ćwiczenie — tworzenie zadania usługi Azure Batch w interfejsie wiersza polecenia w celu uruchomienia zadania równoległego
Interfejs wiersza polecenia platformy Azure umożliwia tworzenie i wdrażanie zasobów usługi Azure Batch z poziomu wiersza polecenia.
Jako architekt rozwiązań dla organizacji non-profit chcesz rozpocząć tworzenie rozwiązania usługi Batch dla scenariusza OCR na platformie Azure. Pierwszym krokiem jest przetestowanie tworzenia konta usługi Batch, puli węzłów procesu roboczego, zadania i zadań podrzędnych przy użyciu interfejsu wiersza polecenia platformy Azure.
Interfejs wiersza polecenia platformy Azure to międzyplatformowy wiersz polecenia umożliwiający tworzenie zasobów platformy Azure i zarządzanie nimi. Używa spójnej składni az noun verb --properties
. Polecenia CLI do zarządzania usługą Azure Batch są zgodne z tą konwencją, dlatego wszystkie polecenia mają postać az batch verb --properties
.
Ważny
Ćwiczenia w tym module są opcjonalne. Aby ukończyć ćwiczenia, musisz mieć własną subskrypcję platformy Azure.
Tworzenie zasobów usługi Azure Batch
Najpierw utworzysz konto usługi Azure Batch i pulę węzłów roboczych na potrzeby scenariusza testowego. Następnie utworzysz zadanie wsadowe i zadania do uruchomienia w puli.
Tworzenie nowej grupy zasobów
Zaloguj się na Azure Portal.
Wybierz pozycję Grupy zasobów w menu po lewej stronie.
Wybierz pozycję + Utwórz.
Wypełnij formularz, aby utworzyć nową grupę zasobów dla ćwiczenia i zanotuj nazwę.
Tworzenie konta usługi Azure Batch
W portalu otwórz usługę Cloud Shell, wybierając ikonę usługi Cloud Shell (>_) w górnym menu. Użyj menu rozwijanego u góry okna terminalu, aby upewnić się, że jesteś w Bash.
Utwórz zmienne środowiskowe dla grupy zasobów i zasobu wsadowego.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
Uruchom następujące polecenie w usłudze Cloud Shell, aby utworzyć konto usługi Azure Batch. Wybierz jedną z następujących lokalizacji:
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>
Uruchom następujące polecenie, aby zalogować się do konta usługi Azure Batch:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
Utwórz pulę trzech maszyn wirtualnych typu Standard A1 w wersji 2 z systemem 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"
Uruchom następujące polecenie, aby okresowo określić, czy węzły są gotowe:
az batch pool show --pool-id mypool \ --query "allocationState"
Gdy to zapytanie pokazuje, że węzły są "stabilne", są gotowe do działania. Podczas gdy są wyświetlane jako "zmiana rozmiaru", w rzeczywistości są przydzielane. Możesz użyć strzałki w górę, aby powtórzyć najnowsze polecenie w usłudze Cloud Shell, jeśli chcesz wykonać zapytanie o stan węzłów więcej niż raz.
Uruchom następujące polecenie, aby utworzyć zlecenie usługi Batch, które jest logicznym grupowaniem dla wszystkich zadań, które będą uruchomione na węzłach:
az batch job create \ --id myjob \ --pool-id mypool
Uruchom następujące polecenie, aby utworzyć zadania usługi Batch:
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
Ta pętla tworzy szereg ponumerowanych zadań usługi Batch, z których każda generuje informacje o identyfikatorze zadania i identyfikatorze węzła. Sprawdzając, co dzieje się w tym miejscu, możesz zobaczyć sporo cech sposobu działania usługi Azure Batch. Zadania są automatycznie zaplanowane na węzły z dostępną pojemnością. Jednak zmienne środowiskowe, które używamy (
AZ_BATCH_TASK_ID
iAZ_BATCH_NODE_ID
), aby pokazać, które zadanie jest uruchamiane na którym węźle, są dostępne tylko w kontekście użytkownika zadań , domyślnego konta utworzonego na każdym węźle w celu uruchamiania zadań. Ponadto argument--command-line
nie jest uruchamiany bezpośrednio w powłoce, dlatego należy jawnie wywołać powłokę przy użyciu/bin/bash -c
, aby używać poleceń takich jakprintenv
igrep
.Ta pętla kończy implementację zadania usługi Azure Batch. Pozostawimy konto usługi Azure Batch i pulę węzłów roboczych do użycia w następnym module, ale usuniemy zadanie usługi Batch. Ponieważ zadanie usługi Batch działa jako kontener dla zadań usługi Batch, zadania są również usuwane.
Uruchom następujące polecenie w usłudze Cloud Shell, aby usunąć zadanie usługi Batch:
az batch job delete --job-id myjob -y