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

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ązania dla organizacji niedochodowej chcesz rozpocząć tworzenie rozwiązania usługi Batch dla scenariusza OCR na platformie Azure. Pierwszym krokiem będzie testowe utworzenie konta usługi Batch, puli węzłów roboczych, zadania i zadań podrzędnych przy użyciu interfejsu wiersza polecenia platformy Azure.

Interfejs wiersza polecenia platformy Azure to wieloplatformowe narzędzie wiersza polecenia do tworzenia zasobów platformy Azure i zarządzania nimi. Używa on spójnej składni az noun verb --properties. Polecenia interfejsu wiersza polecenia służące do zarządzania usługą Azure Batch stosują taką samą konwencję i mają postać az batch verb --properties.

Ważne

Ć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 dla scenariusza testowego. Następnie utworzysz zadanie usługi Batch i zadania podrzędne do uruchomienia w puli.

Tworzenie nowej grupy zasobów

  1. Zaloguj się do Azure Portal.

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

  3. Wybierz + Utwórz.

  4. Wypełnij formularz, aby utworzyć nową grupę zasobów na potrzeby ćwiczenia i zanotuj jej 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 w górnej części okna terminalu, aby upewnić się, że jesteś w powłoce Bash.

  2. Utwórz zmienne środowiskowe dla grupy zasobów i zasobu usługi Batch.

    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 Standardowa 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 sprawdzać, czy węzły są gotowe:

    az batch pool show --pool-id mypool \
     --query "allocationState"
    

    Gdy to zapytanie pokazuje, że węzły są "stałe", są gotowe do pracy. Podczas gdy są one wyświetlane jako "zmiana rozmiaru", są one rzeczywiście aprowidowane. Możesz powtórzyć ostatnie polecenie w usłudze Cloud Shell przy użyciu klawisza strzałki w górę, aby wykonać zapytanie dotyczące stanu węzłów więcej niż raz.

  7. Uruchom następujące polecenie, aby utworzyć zadanie usługi Batch, które jest logicznym grupowaniem dla wszystkich zadań podrzędnych, które będą uruchamiane w węzłach:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Uruchom następujące polecenie, aby utworzyć zadania podrzędne 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 powoduje utworzenie serii numerowanych zadań podrzędnych usługi Batch, z których każde wyświetla informacje o identyfikatorze zadania podrzędnego i użytego węzła. Sprawdzając dokładnie wykonane operacje, możesz zauważyć kilka charakterystycznych cech działania usługi Azure Batch. Zadania podrzędne są automatycznie planowane na węzłach z wystarczającą wydajnością. Jednak zmienne środowiskowe używane przez nas (AZ_BATCH_TASK_ID i AZ_BATCH_NODE_ID), aby pokazać informacje o tym, które zadanie jest uruchamiane w którym węźle, są dostępne tylko w kontekście użytkownika zadania, domyślne konto utworzone w każdym węźle w celu uruchamiania zadań. --command-line Ponadto argument nie jest uruchamiany bezpośrednio w powłoce, dlatego należy jawnie wywołać powłokę przy użyciu polecenia /bin/bash -c , 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. Zadanie usługi Batch pełni rolę kontenera dla zadań podrzędnych usługi Batch, dlatego te zadania podrzędne również zostaną usunięte.

  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