Упражнение. Создание задания Azure Batch с помощью CLI для выполнения вашей параллельной задачи

Завершено

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

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

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

Важный

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

Создайте ресурсы службы Azure Batch

Сначала вы создадите учетную запись пакетной службы 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
    

    Этот цикл создает ряд нумерованных Batch задач, каждая из которых выводит сведения об идентификаторе задачи и идентификаторе узла. Внимательно изучая то, что происходит здесь, вы можете увидеть довольно много характеристик работы пакетной службы 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