Упражнение. Мониторинг задания пакетной службы Azure в CLI
Если вы используете пакетную службу Azure для выполнения интенсивных задач, вам часто нужно знать, как идут задачи.
В качестве архитектора решения для некоммерческой организации вам потребуются способы доступа к тому, что происходит в пакетной службе Azure. Кроме того, необходимо определить, работают ли узлы и задачи, насколько далеко они продвинулись и создали ли они скачиваемые выходные файлы.
В этом уроке вы создадите задание, аналогичное предыдущему уроку, отслеживайте ход выполнения задач и скачиваете файлы, создаваемые задачами в качестве выходных данных, все с помощью Azure CLI.
Важный
Упражнения в этом модуле являются необязательными. Для выполнения упражнений вам потребуется собственная подписка Azure.
Мониторинг задач с помощью интерфейса командной строки
Пакетная служба Azure обрабатывает все сведения о создании вычислительных узлов и управлении ими и планировании заданий для выполнения на этих узлах.
При создании задач в последнем разделе Azure Batch помещала их в очередь для запуска в пуле. Так как узлы были определены как имеющие доступную емкость, пакетная служба Azure запланировала выполнение задач на этих узлах.
В конце последнего блока мы удалили задание, что привело к удалению всех его задач. Теперь мы создадим новое задание и задачи. Стоит отметить, что удаление и воссоздание задач является довольно быстрой операцией, и позволяет легко разделить различные эксперименты и проекты в пакетной службе Azure. В отличие от этого, удаление и повторное создание сущностей более высокого уровня пакетной обработки (например, учетных записей) занимает больше времени, так как пул пакетной обработки должен быть воссоздан и выделены виртуальные машины.
Откройте Cloud Shell, выбрав значок Cloud Shell (>_) в верхнем меню.
Выполните следующую команду в Cloud Shell, чтобы создать новое пакетное задание:
az batch job create \ --id myjob2 \ --pool-id mypool
Мы назвали его по-другому, чтобы избежать конфликтов с задачей из бывшего подразделения, которая была запланирована на удаление, но не обязательно уже удалена.
Выполните следующую команду, чтобы создать задачи Batch в рамках этого нового задания.
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
Выполните следующую команду в Cloud Shell, чтобы просмотреть состояние одной из созданных задач:
az batch task show \ --job-id myjob2 \ --task-id mytask1
Скачивание выходных данных задачи с помощью командной строки
Чтобы проверить правильность выполнения пакетного задания, можно скачать и проверить созданные файлы.
Выполните следующую команду в Cloud Shell, чтобы отобразить таблицу всех файлов, созданных одним из созданных вами задач:
az batch task file list \ --job-id myjob2 \ --task-id mytask5 \ --output table
Заметка
Если появится сообщение об ошибке
The files of the specified task cannot be accessed as the task state is still active
, подождите несколько минут и повторите команду.Выполните следующую команду в Cloud Shell, чтобы создать выделенный каталог для выходных данных задач и перейти к нему:
mkdir taskoutputs && cd taskoutputs
Выполните следующую команду в Cloud Shell, чтобы скачать файлы, созданные всеми созданными задачами:
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
Задачи имеют рабочий каталог по умолчанию, и по умолчанию их работа направляется в
stdout.txt
. Переключив цикл, мы можем перенаправитьstdout.txt
на нумерованные версииstdout.txt
, каждая из которых показывает работу заданной задачи и какой узел использовался для его выполнения.Выполните следующую команду, чтобы просмотреть текстовое содержимое нескольких созданных примерами файлов:
cat stdout1.txt && cat stdout2.txt
В этих выходных данных показано, как различные задачи планируются на разные узлы, когда пакетный планировщик их обрабатывает.
Мы снова оставим учетную запись Azure Batch и пул рабочих узлов для использования в следующем уроке, но удалим задание Batch. Так как задание пакетной службы выступает в качестве контейнера для задач пакетной службы, эти задачи также удаляются.
Чтобы удалить пакетное задание, используйте следующую команду:
az batch job delete --job-id myjob2 -y