Поделиться через


Краткое руководство: использование Azure CLI для создания Batch-учетной записи и выполнения задания

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

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

Предварительные условия

  • Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

  • Azure Cloud Shell или Azure CLI

    В этом быстром запуске вы можете интерактивно выполнять команды Azure CLI в Azure Cloud Shell. Чтобы выполнить команды в Cloud Shell, выберите Open Cloudshell в правом верхнем углу блока кода. Выберите "Копировать ", чтобы скопировать код и вставить его в Cloud Shell, чтобы запустить его. Вы также можете запустить Cloud Shell из портала Azure. Cloud Shell всегда использует последнюю версию Azure CLI.

    Кроме того, вы можете установить Azure CLI локально для выполнения команд. Действия, описанные в этой статье, требуют Azure CLI версии 2.0.20 или более поздней. Запустите az version, чтобы просмотреть установленную версию и зависимые библиотеки, а затем запустите az upgrade для обновления. При использовании локальной установки войдите в Azure с помощью соответствующей команды.

Примечание.

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

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

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

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="canadacentral"
export RESOURCE_GROUP="qsBatch$RANDOM_SUFFIX"

az group create \
    --name $RESOURCE_GROUP \
    --location $REGION

Результаты:

{
    "id": "/subscriptions/xxxxx/resourceGroups/qsBatchxxx",
    "location": "eastus2",
    "managedBy": null,
    "name": "qsBatchxxx",
    "properties": {
         "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
}

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

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

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

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

az storage account create \
    --resource-group $RESOURCE_GROUP \
    --name $STORAGE_ACCOUNT \
    --location $REGION \
    --sku Standard_LRS

Создание учетной записи Batch

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

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

az batch account create \
    --name $BATCH_ACCOUNT \
    --storage-account $STORAGE_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --location $REGION

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

az batch account login \
    --name $BATCH_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --shared-key-auth

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

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

export POOL_ID="myPool$RANDOM_SUFFIX"

az batch pool create \
    --id $POOL_ID \
    --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

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

az batch pool show --pool-id $POOL_ID \
    --query "{allocationState: allocationState}"

Результаты:

{
    "allocationState": "resizing"
}

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

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

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

export JOB_ID="myJob$RANDOM_SUFFIX"

az batch job create \
    --id $JOB_ID \
    --pool-id $POOL_ID

Создание рабочих задач

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

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

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

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

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

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

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

az batch task show \
    --job-id $JOB_ID \
    --task-id myTask1

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

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

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

# Wait for task to complete before downloading output
echo "Waiting for task to complete..."
while true; do
    STATUS=$(az batch task show --job-id $JOB_ID --task-id myTask1 --query "state" -o tsv)
    if [ "$STATUS" == "running" ]; then
        break
    fi
    sleep 10
done

az batch task file list --job-id $JOB_ID --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 $JOB_ID \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

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

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=myJob
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

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

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