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

Завершено

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

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

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

Важно!

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

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

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

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

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

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

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

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

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

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

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

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

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

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