Ćwiczenie — monitorowanie zadania usługi Azure Batch w interfejsie wiersza polecenia

Ukończone

Jeśli używasz usługi Azure Batch do uruchamiania zadań podrzędnych intensywnie korzystających z zasobów, zwykle warto wiedzieć, jak przebiega ich wykonywanie.

Jako architekt rozwiązań dla organizacji non-profit będziesz potrzebować sposobów uzyskiwania dostępu do tego, co dzieje się w usłudze Azure Batch. Należy również określić, czy węzły i zadania działają, jak daleko się one postępują i czy zostały utworzone pliki wyjściowe do pobrania.

W tym module utworzysz zadanie podobne do utworzonego podczas poprzedniej lekcji, będziesz monitorować postęp jego zadań podrzędnych i pobierzesz pliki wyjściowe utworzone przez zadania podrzędne za pomocą interfejsu wiersza polecenia platformy Azure.

Ważne

Ćwiczenia w tym module są opcjonalne. Aby ukończyć ćwiczenia, musisz mieć własną subskrypcję platformy Azure.

Monitorowanie zadań podrzędnych przy użyciu interfejsu wiersza polecenia

Usługa Azure Batch obsługuje wszystkie szczegóły tworzenia węzłów obliczeniowych i zarządzania nimi oraz planowania zadań do uruchomienia w tych węzłach.

Po utworzeniu zadań podrzędnych w ostatnim module usługa Azure Batch dodała je do kolejki uruchamiania w puli. Po stwierdzeniu wystarczającej wydajności węzłów usługa Azure Batch zaplanowała uruchomienie zadań podrzędnych w tych węzłach.

Na końcu ostatniej lekcji usunęliśmy zadanie, co spowodowało usunięcie wszystkich zadań podrzędnych. Teraz utworzymy nowe zadanie i zadania podrzędne. Warto zauważyć, że usunięcie i ponowne utworzenie zadań podrzędnych jest operacją trwającą dość krótko i umożliwia łatwe oddzielenie różnych eksperymentów i projektów w usłudze Azure Batch. Z kolei usuwanie i ponowne tworzenie jednostek usługi Batch wyższego poziomu (takich jak konta) zajmuje więcej czasu, ponieważ pula usługi Batch musi zostać ponownie utworzona i przydzielona maszyny wirtualne.

  1. Zaloguj się do Azure Portal.

  2. Otwórz usługę Cloud Shell, wybierając ikonę usługi Cloud Shell (>_) w górnym menu.

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

    az batch job create \
     --id myjob2 \
     --pool-id mypool
    

    Nazwaliśmy ją inaczej, aby uniknąć konfliktu z zadaniem z poprzedniej lekcji, która została zaplanowana do usunięcia, ale niekoniecznie została jeszcze usunięta.

  4. Uruchom następujące polecenie, aby utworzyć zadania podrzędne usługi Batch w ramach tego nowego zadania:

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob2 \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    
  5. Uruchom następujące polecenie w usłudze Cloud Shell, aby wyświetlić stan jednego z utworzonych zadań podrzędnych:

    az batch task show \
     --job-id myjob2 \
     --task-id mytask1
    

Pobieranie danych wyjściowych zadania podrzędnego przy użyciu interfejsu wiersza polecenia

Aby sprawdzić, czy zadanie wsadowe zostało wykonane poprawnie, możesz pobrać i zbadać utworzone pliki.

  1. Uruchom następujące polecenie w usłudze Cloud Shell, aby wyświetlić tabelę z wszystkimi plikami utworzonymi przez jedno z zadań podrzędnych, które zostało przez Ciebie utworzone:

    az batch task file list \
     --job-id myjob2 \
     --task-id mytask5 \
     --output table
    

    Uwaga

    Jeśli zostanie wyświetlony The files of the specified task cannot be accessed as the task state is still active komunikat o błędzie, zaczekaj kilka minut i ponownie uruchom polecenie.

  2. Uruchom następujące polecenie w usłudze Cloud Shell, aby utworzyć dedykowany katalog dla danych wyjściowych i przejść do niego:

    mkdir taskoutputs && cd taskoutputs
    
  3. Uruchom następujące polecenie w usłudze Cloud Shell, aby pobrać pliki utworzone przez wszystkie zadania podrzędne, które zostały przez Ciebie utworzone:

    for i in {1..10}
    do
    az batch task file download \
        --job-id myjob2 \
        --task-id mytask$i \
        --file-path stdout.txt \
        --destination ./stdout$i.txt
    done
    

    Zadania mają domyślny katalog roboczy, a domyślnie ich praca jest kierowana do .stdout.txt W pętli możemy przekierować stdout.txt do numerowanych wersji programu stdout.txt, z których każda pokazuje pracę danego zadania i który węzeł został użyty do jego wykonania.

  4. Uruchom następujące polecenie, aby wyświetlić zawartość tekstową kilku plików wygenerowanych przez próbkę:

    cat stdout1.txt && cat stdout2.txt
    

    Te dane wyjściowe pokazują, że różne zadania podrzędne są planowane na różnych węzłach podczas przetwarzania przez harmonogram usługi Batch.

    Ponownie pozostawimy konto usługi Azure Batch i pulę węzłów roboczych do użycia w następnej lekcji, 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.

  5. Użyj następującego polecenia, aby usunąć zadanie usługi Batch:

    az batch job delete --job-id myjob2 -y