Упражнение. Создание пакетного задания Azure в интерфейсе командной строки для выполнения параллельной задачи
Интерфейс командной строки Azure позволяет создавать и развертывать ресурсы пакетной службы Azure из командной строки.
Как архитектор решений для некоммерческих организаций вы хотите создать решение пакетной службы для сценария OCR в Azure. В качестве первого шага протестируйте создание учетной записи пакетной службы, пула рабочих узлов, задания и задач с использованием интерфейса командной строки Azure.
The Azure CLI — это кроссплатформенная командная строка для создания ресурсов Azure и управления ими. Она использует согласованный синтаксис az noun verb --properties
. Команды интерфейса командной строки для управления пакетной службой Azure следуют этому соглашению, поэтому все команды имеют вид az batch verb --properties
.
Важно!
Упражнения в этом модуле не являются обязательными. Для выполнения упражнений вам потребуется собственная подписка Azure.
Создание ресурсов пакетной службы Azure
Сначала создайте учетную запись пакетной службы Azure и пул рабочих узлов для сценария тестирования. Затем создайте задание и задачи пакетной службы для выполнения в пуле.
Создание группы ресурсов
Войдите на портал Azure.
Выберите группы ресурсов в меню слева.
Выберите + Создать.
Заполните форму, чтобы создать группу ресурсов для упражнения, и запомните имя этой группы.
Создание учетной записи пакетной службы Azure
На портале откройте Cloud Shell, выбрав значок Cloud Shell (>_) в верхнем меню. Используйте раскрывающееся меню в верхней части окна терминала, чтобы убедиться, что вы находитесь в Bash.
Создайте переменные среды для вашей группы ресурсов и ресурса пакетной службы.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
В 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>
Выполните следующую команду, чтобы войти в учетную запись пакетной службы Azure:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
Создайте пул из трех виртуальных машин 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"
Выполните следующую команду, чтобы периодически определять, готовы ли узлы:
az batch pool show --pool-id mypool \ --query "allocationState"
Когда этот запрос показывает, что узлы "устойчивы", они готовы к работе. Хотя они отображаются как "изменение размера", они фактически подготавливаются. Вы можете использовать клавишу со стрелкой вверх, чтобы повторить самую последнюю команду в Cloud Shell, если вы хотите запросить состояние узлов более одного раза.
Выполните следующую команду, чтобы создать пакетное задание, которое является логическим группированием для всех задач, которые будут выполняться на узлах:
az batch job create \ --id myjob \ --pool-id mypool
Выполните приведенную ниже команду, чтобы создать задания пакетной службы:
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 и пул рабочих узлов для использования в следующем модуле, но мы удалим задание пакетной службы. Так как задание пакетной службы действует как контейнер для своих задач пакетной службы, эти задачи также удаляются.
В Cloud Shell выполните приведенную ниже команду, чтобы удалить задание пакетной службы.
az batch job delete --job-id myjob -y