Упражнение. Создание задания пакетной службы Azure в 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 и пул рабочих узлов для тестового сценария. Затем вы создаете пакетное задание и задачи для выполнения в среде пула.
Создание новой группы ресурсов
Выберите группы ресурсов в левой части меню.
Выберите + Создать.
Заполните форму, чтобы создать новую группу ресурсов для упражнения и запишите имя.
Создание учетной записи пакетной службы Azure
На портале откройте Cloud Shell, выбрав значок Cloud Shell (>_) в верхнем меню. В раскрывающемся меню в верхней части окна терминала убедитесь, что вы находитесь в Bash.
Создайте переменные среды для группы ресурсов и пакетного ресурса.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
Создайте учетную запись пакетной службы Azure, выполнив следующую команду в Cloud Shell. Выберите одно из следующих расположений:
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 v2 под управлением Ubuntu 22.04.
az batch pool create \ --id mypool --vm-size Standard_A1_v2 \ --target-dedicated-nodes 3 \ --image canonical:ubuntuserver:22.04-LTS \ --node-agent-sku-id "batch.node.ubuntu 22.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
Этот цикл создает ряд нумерованных Batch задач, каждая из которых выводит сведения об идентификаторе задачи и идентификаторе узла. Внимательно изучая то, что происходит здесь, вы можете увидеть довольно много характеристик работы пакетной службы 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