Ćwiczenie — tworzenie zadania usługi Azure Batch w interfejsie wiersza polecenia w celu uruchomienia zadania równoległego

Ukończone

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

  1. Zaloguj się na Azure Portal.

  2. Wybierz pozycję Grupy zasobów w menu po lewej stronie.

  3. Wybierz pozycję + Utwórz.

  4. Wypełnij formularz, aby utworzyć nową grupę zasobów dla ćwiczenia i zanotuj nazwę.

Tworzenie konta usługi Azure Batch

  1. 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.

  2. Utwórz zmienne środowiskowe dla grupy zasobów i zasobu wsadowego.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. 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>
    
  4. 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
    
  5. 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"  
    
  6. 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.

  7. 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
    
  8. 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 i AZ_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 jak printenv i grep.

    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.

  9. Uruchom następujące polecenie w usłudze Cloud Shell, aby usunąć zadanie usługi Batch:

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