Ćwiczenie — monitorowanie zadania usługi Azure Batch w interfejsie wiersza polecenia
Jeśli korzystasz z usługi Azure Batch do wykonywania zadań intensywnie obciążających zasoby, często chcesz wiedzieć, jak te zadania przebiegają.
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 zaszły oraz czy utworzyły pliki wyjściowe do pobrania.
W tej jednostce utworzysz zadanie podobne do tego z poprzedniej jednostki, będziesz monitorować postęp jego zadań i pobierać pliki, które te zadania generują jako dane wyjściowe, używając do tego Azure CLI.
Ważny
Ćwiczenia w tym module są opcjonalne. Aby ukończyć ćwiczenia, musisz mieć własną subskrypcję platformy Azure.
Monitorowanie zadań 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ń w ostatniej jednostce usługa Azure Batch ustawiła je w kolejce do uruchomienia w puli. Po stwierdzeniu, że węzły mają dostępną pojemność, usługa Azure Batch zaplanowała zadania do uruchomienia na tych węzłach.
Na końcu ostatniej jednostki usunęliśmy pracę, co spowodowało usunięcie wszystkich jej zadań. Teraz utworzymy nową pracę i zadania. Warto zauważyć, że usuwanie i ponowne tworzenie zadań jest dość szybką operacją 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 przydzielone maszyny wirtualne.
Zaloguj się do portalu Azure.
Otwórz usługę Cloud Shell, wybierając ikonę usługi Cloud Shell (>_) w górnym menu.
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 je inaczej, aby uniknąć konfliktu z zadaniem z poprzedniej jednostki, które zostało zaplanowane do skasowania, ale niekoniecznie zostało jeszcze usunięte.
Uruchom następujące polecenie, aby utworzyć zadania 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
Uruchom następujące polecenie w usłudze Cloud Shell, aby wyświetlić stan jednego z utworzonych zadań:
az batch task show \ --job-id myjob2 \ --task-id mytask1
Pobieranie danych wyjściowych zadania przy użyciu interfejsu wiersza polecenia
Aby sprawdzić, czy zadanie wsadowe zostało wykonane poprawnie, możesz pobrać i zbadać utworzone pliki.
Uruchom następujące polecenie w usłudze Cloud Shell, aby wyświetlić tabelę wszystkich plików wygenerowanych przez jedno z utworzonych zadań:
az batch task file list \ --job-id myjob2 \ --task-id mytask5 \ --output table
Notatka
Jeśli zostanie wyświetlony komunikat o błędzie
The files of the specified task cannot be accessed as the task state is still active
, zaczekaj kilka minut i ponownie uruchom polecenie.Uruchom następujące polecenie w usłudze Cloud Shell, aby utworzyć dedykowany katalog dla danych wyjściowych zadań i przejść do niego:
mkdir taskoutputs && cd taskoutputs
Uruchom następujące polecenie w usłudze Cloud Shell, aby pobrać pliki wygenerowane przez wszystkie utworzone zadania:
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
. Korzystając z pętli, możemy przekierowaćstdout.txt
do numerowanych wersjistdout.txt
, z których każdy pokazuje pracę danego zadania i który węzeł został użyty do jego wykonania.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 przedstawiają różne zadania zaplanowane na różnych węzłach, ponieważ harmonogram usługi Batch przetwarza je.
Ponownie pozostawimy konto usługi Azure Batch i pulę węzłów roboczych do użycia w następnej jednostce, ale usuniemy zadanie usługi Batch. Ponieważ zadanie usługi Batch działa jako kontener dla zadań usługi Batch, te zadania również są usuwane.
Użyj następującego polecenia, aby usunąć zadanie usługi Batch:
az batch job delete --job-id myjob2 -y