Упражнение. Мониторинг задания пакетной службы Azure в CLI

Завершено

Если вы используете пакетную службу Azure для выполнения интенсивных задач, вам часто нужно знать, как идут задачи.

В качестве архитектора решения для некоммерческой организации вам потребуются способы доступа к тому, что происходит в пакетной службе Azure. Кроме того, необходимо определить, работают ли узлы и задачи, насколько далеко они продвинулись и создали ли они скачиваемые выходные файлы.

В этом уроке вы создадите задание, аналогичное предыдущему уроку, отслеживайте ход выполнения задач и скачиваете файлы, создаваемые задачами в качестве выходных данных, все с помощью Azure CLI.

Важный

Упражнения в этом модуле являются необязательными. Для выполнения упражнений вам потребуется собственная подписка Azure.

Мониторинг задач с помощью интерфейса командной строки

Пакетная служба Azure обрабатывает все сведения о создании вычислительных узлов и управлении ими и планировании заданий для выполнения на этих узлах.

При создании задач в последнем разделе Azure Batch помещала их в очередь для запуска в пуле. Так как узлы были определены как имеющие доступную емкость, пакетная служба Azure запланировала выполнение задач на этих узлах.

В конце последнего блока мы удалили задание, что привело к удалению всех его задач. Теперь мы создадим новое задание и задачи. Стоит отметить, что удаление и воссоздание задач является довольно быстрой операцией, и позволяет легко разделить различные эксперименты и проекты в пакетной службе Azure. В отличие от этого, удаление и повторное создание сущностей более высокого уровня пакетной обработки (например, учетных записей) занимает больше времени, так как пул пакетной обработки должен быть воссоздан и выделены виртуальные машины.

  1. Войдите на портал Azure .

  2. Откройте Cloud Shell, выбрав значок Cloud Shell (>_) в верхнем меню.

  3. Выполните следующую команду в Cloud Shell, чтобы создать новое пакетное задание:

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

    Мы назвали его по-другому, чтобы избежать конфликтов с задачей из бывшего подразделения, которая была запланирована на удаление, но не обязательно уже удалена.

  4. Выполните следующую команду, чтобы создать задачи 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
    
  5. Выполните следующую команду в Cloud Shell, чтобы просмотреть состояние одной из созданных задач:

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

Скачивание выходных данных задачи с помощью командной строки

Чтобы проверить правильность выполнения пакетного задания, можно скачать и проверить созданные файлы.

  1. Выполните следующую команду в 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, подождите несколько минут и повторите команду.

  2. Выполните следующую команду в Cloud Shell, чтобы создать выделенный каталог для выходных данных задач и перейти к нему:

    mkdir taskoutputs && cd taskoutputs
    
  3. Выполните следующую команду в 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, каждая из которых показывает работу заданной задачи и какой узел использовался для его выполнения.

  4. Выполните следующую команду, чтобы просмотреть текстовое содержимое нескольких созданных примерами файлов:

    cat stdout1.txt && cat stdout2.txt
    

    В этих выходных данных показано, как различные задачи планируются на разные узлы, когда пакетный планировщик их обрабатывает.

    Мы снова оставим учетную запись Azure Batch и пул рабочих узлов для использования в следующем уроке, но удалим задание Batch. Так как задание пакетной службы выступает в качестве контейнера для задач пакетной службы, эти задачи также удаляются.

  5. Чтобы удалить пакетное задание, используйте следующую команду:

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