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