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

Завершено

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

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

The Azure CLI — это кроссплатформенная командная строка для создания ресурсов Azure и управления ими. Она использует согласованный синтаксис az noun verb --properties. Команды интерфейса командной строки для управления пакетной службой Azure следуют этому соглашению, поэтому все команды имеют вид az batch verb --properties.

Важно!

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

Создание ресурсов пакетной службы Azure

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

Создание группы ресурсов

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

  2. Выберите группы ресурсов в меню слева.

  3. Выберите + Создать.

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

Создание учетной записи пакетной службы Azure

  1. На портале откройте Cloud Shell, выбрав значок Cloud Shell (>_) в верхнем меню. Используйте раскрывающееся меню в верхней части окна терминала, чтобы убедиться, что вы находитесь в Bash.

  2. Создайте переменные среды для вашей группы ресурсов и ресурса пакетной службы.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. В Cloud Shell введите приведенную ниже команду, чтобы создать учетную запись пакетной службы Azure. Выберите одно из следующих расположений:

    westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
    
    az batch account create \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --location <choose a location from the preceding list>
    
  4. Выполните следующую команду, чтобы войти в учетную запись пакетной службы Azure:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Создайте пул из трех виртуальных машин Standard A1 версии 2 под управлением Ubuntu 18.04:

    az batch pool create \
     --id mypool --vm-size Standard_A1_v2 \
     --target-dedicated-nodes 3 \
     --image canonical:ubuntuserver:18.04-LTS \
     --node-agent-sku-id "batch.node.ubuntu 18.04"  
    
  6. Выполните следующую команду, чтобы периодически определять, готовы ли узлы:

    az batch pool show --pool-id mypool \
     --query "allocationState"
    

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

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

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Выполните приведенную ниже команду, чтобы создать задания пакетной службы:

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    

    Этот цикл создает серию пронумерованных задач пакетной службы, каждая из которых выводит информацию об идентификаторе задачи и идентификаторе соответствующего узла. Подробнее изучив происходящее, вы увидите несколько особенностей работы пакетной службы Azure. Выполнение задач автоматически планируется на узлах с доступной емкостью. Однако переменные среды, которые мы используем (AZ_BATCH_TASK_ID и AZ_BATCH_NODE_ID), для отображения сведений о какой задаче выполняется на каком узле, доступны только в контексте пользователя задачи, учетная запись по умолчанию, созданная на каждом узле для выполнения задач. Кроме того, --command-line аргумент не выполняется непосредственно под оболочкой, поэтому необходимо явно вызвать оболочку, используя /bin/bash -c для использования команд, таких как printenv и grep.

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

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

    az batch job delete --job-id myjob -y