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

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

После работы с этим кратким руководством вы узнаете основные понятия пакетной службы и готовы использовать пакетную службу с более реалистичными, большими масштабируемыми рабочими нагрузками.

Необходимые компоненты

Примечание.

Для некоторых регионов и типов подписок ограничения квот могут привести к сбою создания учетной записи пакетной службы или узла. В этой ситуации можно запросить увеличение квоты без оплаты. Дополнительные сведения см. в разделе о квотах и ограничениях пакетной службы.

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

Выполните следующую команду az group create , чтобы создать группу ресурсов Azure с именем qsBatch в регионе eastus2 Azure. Группа ресурсов — это логический контейнер, содержащий ресурсы Azure для этого краткого руководства.

az group create \
    --name qsBatch \
    --location eastus2

Создание учетной записи хранилища

Используйте команду az storage account create, чтобы создать учетную запись служба хранилища Azure, чтобы связаться с учетной записью пакетной службы. Хотя в этом кратком руководстве не используется учетная запись хранения, большинство реальных рабочих нагрузок пакетной службы используют связанную учетную запись хранения для развертывания приложений и хранения входных и выходных данных.

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

az storage account create \
    --resource-group qsBatch \
    --name mybatchstorage \
    --location eastus2 \
    --sku Standard_LRS

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

Выполните следующую команду az batch account create , чтобы создать учетную запись пакетной службы с именем mybatchaccount в группе ресурсов и связать ее с учетной записью mybatchstorage хранения.

az batch account create \
    --name mybatchaccount \
    --storage-account mybatchstorage \
    --resource-group qsBatch \
    --location eastus2

Войдите в новую учетную запись пакетной службы, выполнив команду az batch account login . После проверки подлинности учетной записи с помощью пакетной службы последующие az batch команды в этом сеансе используют этот контекст учетной записи.

az batch account login \
    --name mybatchaccount \
    --resource-group qsBatch \
    --shared-key-auth

Создание пула вычислительных узлов

Выполните команду az batch pool create, чтобы создать пул вычислительных узлов Linux в учетной записи пакетной службы. В следующем примере создается пул с именем myPool , состоящий из двух виртуальных машин размера Standard_A1_v2 под управлением ОС Ubuntu 20.04 LTS. Этот размер узла обеспечивает хороший баланс производительности и затрат для этого примера краткого руководства.

az batch pool create \
    --id myPool \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts \
    --node-agent-sku-id "batch.node.ubuntu 20.04" \
    --target-dedicated-nodes 2 \
    --vm-size Standard_A1_v2

Пакетная служба немедленно создает пул, но занимает несколько минут, чтобы выделить и запустить вычислительные узлы. Чтобы просмотреть состояние пула, используйте команду az batch pool show . Эта команда отображает все свойства пула, и вы можете запрашивать определенные свойства. Следующая команда запрашивает состояние выделения пула:

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

Хотя пакетная служба выделяет и запускает узлы, пул находится в resizing состоянии. Вы можете создать задание и задачи, пока состояние пула по-прежнему resizing. Пул готов к выполнению задач, если состояние распределения — steady и все узлы работают.

Создание задания

Используйте команду az batch job create, чтобы создать пакетное задание для запуска в пуле. Пакетное задание — это логическая группа, состоящая из одной или нескольких задач. Задание включает параметры, общие для задач, таких как пул для запуска. В следующем примере создается задание, вызываемое myJob изначально myPool , не имеет задач.

az batch job create \
    --id myJob \
    --pool-id myPool

Создание задач задания

В пакетной службе предусмотрено несколько способов для развертывания приложений и скриптов на вычислительных узлах. Используйте команду az batch task create, чтобы создать задачи для выполнения в задании. Каждая задача имеет командную строку, указывающую приложение или скрипт.

Следующий скрипт Bash создает четыре идентичные параллельные задачи, вызываемые myTask1 через myTask4. В командной строке задачи отображаются переменные среды пакетной службы на вычислительном узле, а затем ожидается 90 секунд.

for i in {1..4}
do
   az batch task create \
    --task-id myTask$i \
    --job-id myJob \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

В выходных данных команды показаны параметры для каждой задачи. Пакетная служба распределяет задачи по вычислительным узлам.

Представление состояния задачи

После создания задачи пакетная служба помещает задачу в очередь для запуска в пуле. После того как узел будет доступен, задача выполняется на узле.

Используйте команду az batch task show для просмотра состояния задач Batch. В следующем примере показаны сведения о состоянии myTask1:

az batch task show \
    --job-id myJob \
    --task-id myTask1

Выходные данные команды содержат множество сведений. Например, указывает exitCode0 , что команда задачи успешно завершена. Отображается nodeId имя узла пула, выполняющего задачу.

Просмотр выходных данных задачи

Используйте команду az batch task list, чтобы перечислить файлы, созданные на узле. Следующая команда содержит файлы, myTask1 созданные:

az batch task file list \
    --job-id myJob \
    --task-id myTask1 \
    --output table

Результаты похожи на следующие выходные данные:

Name        URL                                                                                       Is Directory    Content Length
----------  ----------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stderr.txt  False                    0

Команда az batch task download скачивает выходные файлы в локальный каталог. Выполните следующий пример, чтобы скачать файл stdout.txt :

az batch task file download \
    --job-id myJob \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

Содержимое стандартного выходного файла можно просмотреть в текстовом редакторе. В следующем примере показан типичный файл stdout.txt . Стандартные выходные данные этой задачи показывают переменные среды пакетная служба Azure, заданные на узле. Эти переменные среды можно ссылаться на командные строки задачи пакетной службы, а также в приложениях и сценариях, выполняемых командными строками.

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myJobl
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=myPool
AZ_BATCH_TASK_ID=myTask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

Очистка ресурсов

Если вы хотите продолжить работу с учебниками и примерами пакетной службы, можно использовать учетную запись пакетной службы и связанную учетную запись хранения, созданную в этом кратком руководстве. Плата за учетную запись пакетной службы не взимается.

Пулы и узлы несут расходы во время выполнения узлов, даже если они не выполняются задания. Если пул больше не нужен, используйте команду az batch pool delete , чтобы удалить ее. При удалении пула удаляются все выходные данные задачи на узлах и сами узлы.

az batch pool delete --pool-id myPool

Если вам больше не нужны какие-либо ресурсы, созданные для этого краткого руководства, можно использовать команду az group delete для удаления группы ресурсов и всех его ресурсов. Чтобы удалить группу ресурсов и учетную запись хранения, учетную запись пакетной службы, пулы узлов и все связанные ресурсы, выполните следующую команду:

az group delete --name qsBatch

Следующие шаги

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