Краткое руководство. Выполнение пакетного задания с помощью Azure CLIQuickstart: Run your first Batch job with the Azure CLI

Azure CLI используется для создания ресурсов Azure и управления ими из командной строки или с помощью скриптов.The Azure CLI is used to create and manage Azure resources from the command line or in scripts. В этом кратком руководстве показано, как использовать Azure CLI для создания учетной записи пакетной службы, пула вычислительных узлов (виртуальных машин) и заданий, выполняющих задачи в пуле.This quickstart shows how to use the Azure CLI to create a Batch account, a pool of compute nodes (virtual machines), and a job that runs tasks on the pool. Каждый образец задачи запускает основную команду на одном из узлов пула.Each sample task runs a basic command on one of the pool nodes. Выполняя действия из этого краткого руководства, вы изучите основные понятия пакетной службы и сможете использовать ее с более реалистичными рабочими нагрузками в большем масштабе.After completing this quickstart, you will understand the key concepts of the Batch service and be ready to try Batch with more realistic workloads at larger scale.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

Использование Azure Cloud ShellUse Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Для работы со службами Azure в Cloud Shell можно использовать bash и PowerShell.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Чтобы запустить Azure Cloud Shell, сделайте вот что:To launch Azure Cloud Shell:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически.Selecting Try It doesn't automatically copy the code to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell, чтобы открыть Cloud Shell в браузере.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Запуск Cloud Shell в новом окнеLaunch Cloud Shell in a new window
На портале Azure в правом верхнем углу в строке меню нажмите кнопку Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Кнопка "Cloud Shell" на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, сделайте вот что:To run the code in this article in Azure Cloud Shell:

  1. Запустите Cloud Shell.Launch Cloud Shell.

  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.Select the Copy button on a code block to copy the code.

  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши Ctrl+Shift+V в Windows и Linux или Cmd+Shift+V в macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Нажмите клавишу ВВОД, чтобы выполнить код.Press Enter to run the code.

Если вы решили установить и использовать CLI локально, для выполнения инструкций из этого руководства вам потребуется Azure CLI 2.0.20 или более поздней версии.If you choose to install and use the CLI locally, this quickstart requires that you are running the Azure CLI version 2.0.20 or later. Чтобы узнать версию, выполните команду az --version.Run az --version to find the version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI.

Создание группы ресурсовCreate a resource group

Создайте группу ресурсов с помощью команды az group create.Create a resource group with the az group create command. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.An Azure resource group is a logical container into which Azure resources are deployed and managed.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus2.The following example creates a resource group named myResourceGroup in the eastus2 location.

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

Создание учетной записи храненияCreate a storage account

Учетную запись службы хранилища Azure можно связать с учетной записью пакетной службы.You can link an Azure Storage account with your Batch account. Хоть наличие учетной записи хранения и не является обязательным условием для работы с этим кратким руководством, она применяется при развертывании приложений и для хранения входных и выходных данных в большинстве реальных рабочих нагрузок.Although not required for this quickstart, the storage account is useful to deploy applications and store input and output data for most real-world workloads. В группе ресурсов создайте учетную запись хранения с помощью команды az storage account create.Create a storage account in your resource group with the az storage account create command.

az storage account create \
    --resource-group myResourceGroup \
    --name mystorageaccount \
    --location eastus2 \
    --sku Standard_LRS

Создание учетной записи Пакетной службыCreate a Batch account

Создайте учетную запись пакетной службы с помощью команды az batch account create.Create a Batch account with the az batch account create command. Для создания вычислительных ресурсов (пулов вычислительных узлов) и пакетных заданий необходима учетная запись.You need an account to create compute resources (pools of compute nodes) and Batch jobs.

В следующем примере создается учетная запись пакетной службы с именем mybatchaccount в группе ресурсов myResourceGroup. Она связывается с созданной учетной записью хранения.The following example creates a Batch account named mybatchaccount in myResourceGroup, and links the storage account you created.

az batch account create \
    --name mybatchaccount \
    --storage-account mystorageaccount \
    --resource-group myResourceGroup \
    --location eastus2

Для создания пулов вычислений и заданий, а также управления ими необходимо выполнить проверку подлинности с помощью пакетной службы.To create and manage compute pools and jobs, you need to authenticate with Batch. Войдите в учетную запись с помощью команды az batch account login.Log in to the account with the az batch account login command. После входа ваши команды az batch используют контекст учетной записи.After you log in, your az batch commands use this account context.

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

Создание пула вычислительных узловCreate a pool of compute nodes

Получив учетную запись пакетной службы, создайте образец пула вычислительных узлов Linux с помощью команды az batch pool create.Now that you have a Batch account, create a sample pool of Linux compute nodes using the az batch pool create command. В следующем примере создается пул mypool с 2 узлами размером Standard_A1_v2 под управлением Ubuntu 16.04 LTS.The following example creates a pool named mypool of 2 size Standard_A1_v2 nodes running Ubuntu 16.04 LTS. Предлагаемый размер узла в этом кратком руководстве обеспечивает оптимальный баланс производительности и стоимости.The suggested node size offers a good balance of performance versus cost for this quick example.

az batch pool create \
    --id mypool --vm-size Standard_A1_v2 \
    --target-dedicated-nodes 2 \
    --image canonical:ubuntuserver:16.04-LTS \
    --node-agent-sku-id "batch.node.ubuntu 16.04" 

В пакетной службе сразу же создается пул, но для выделения и запуска вычислительных узлов понадобится несколько минут.Batch creates the pool immediately, but it takes a few minutes to allocate and start the compute nodes. В течение этого времени пул находится в состоянии resizing.During this time, the pool is in the resizing state. Чтобы увидеть состояние пула, выполните команду az batch pool show.To see the status of the pool, run the az batch pool show command. Эта команда отображает все свойства пула, и вы можете запрашивать определенные свойства.This command shows all the properties of the pool, and you can query for specific properties. С помощью следующей команды можно получить сведения о состоянии распределения пула:The following command gets the allocation state of the pool:

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

Для создания задания и задач при изменении состояния пула выполните следующие шаги.Continue the following steps to create a job and tasks while the pool state is changing. Пул готов к выполнению задач, если состояние распределения — steady и все узлы работают.The pool is ready to run tasks when the allocation state is steady and all the nodes are running.

создать задание;Create a job

Получив пул, создайте задание, которое будет выполняться в нем.Now that you have a pool, create a job to run on it. Пакетное задание — это логическая группа для одной или нескольких задач.A Batch job is a logical group for one or more tasks. Задание включает в себя параметры, общие для задач (например, приоритет и пул для запуска задач).A job includes settings common to the tasks, such as priority and the pool to run tasks on. Создайте пакетное задание, используя команду az batch job create.Create a Batch job by using the az batch job create command. В следующем примере создается задание myjob в пуле mypool.The following example creates a job myjob on the pool mypool. Изначально у задания нет задач.Initially the job has no tasks.

az batch job create \
    --id myjob \
    --pool-id mypool

Создание задачCreate tasks

Теперь с помощью команды az batch task create создайте задачи для выполнения в задании.Now use the az batch task create command to create some tasks to run in the job. В этом примере создается четыре идентичные задачи.In this example, you create four identical tasks. Каждая задача выполняет command-line для отображения переменных среды пакетной службы на вычислительном узле, а затем ждет 90 секунд.Each task runs a command-line to display the Batch environment variables on a compute node, and then waits 90 seconds. При использовании пакетной службы в этой командной строке задайте приложение или скрипт.When you use Batch, this command line is where you specify your app or script. В пакетной службе предусмотрен ряд способов для развертывания приложений и скриптов на вычислительных узлах.Batch provides a number of ways to deploy apps and scripts to compute nodes.

Следующий сценарий Bash создает 4 параллельных задачи (с mytask1 до mytask4).The following Bash script creates 4 parallel tasks (mytask1 to mytask4).

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

В выходных данных этой команды предоставлены параметры для каждой из задач.The command output shows settings for each of the tasks. Пакетная служба распределяет задачи по вычислительным узлам.Batch distributes the tasks to the compute nodes.

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

После создания задачи пакетная служба помещает ее в очередь для запуска в пуле.After you create a task, Batch queues it to run on the pool. Если узел доступен для запуска, задание выполняется.Once a node is available to run it, the task runs.

Просмотреть состояние пакетных задач можно с помощью команды az batch task show.Use the az batch task show command to view the status of the Batch tasks. В следующем примере показаны подробные сведения о задаче mytask1, выполняемой на одном из узлов пула.The following example shows details about mytask1 running on one of the pool nodes.

az batch task show \
    --job-id myjob \
    --task-id mytask1

Выходные данные команды включают в себя многие сведения, но обратите внимание на значение exitCode командной строки задачи и nodeId.The command output includes many details, but take note of the exitCode of the task command line and the nodeId. Если exitCode имеет значение 0, это говорит об успешном завершении задачи командной строки.An exitCode of 0 indicates that the task command line completed successfully. nodeId указывает идентификатор пула узла, в котором выполнялась задача.The nodeId indicates the ID of the pool node on which the task ran.

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

Чтобы получить список файлов, созданных задачей на вычислительном узле, используйте команду az batch task file list.To list the files created by a task on a compute node, use the az batch task file list command. Следующая команда создает список файлов, созданных при выполнении задачи mytask1:The following command lists the files created by mytask1:

az batch task file list \
    --job-id myjob \
    --task-id mytask1 \
    --output table

Результат аналогичен приведенному ниже:Output is similar to the following:

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 file download.To download one of the output files to a local directory, use the az batch task file download command. В этом примере выходные данные задачи находятся в файле stdout.txt.In this example, task output is in stdout.txt.

az batch task file download \
    --job-id myjob \
    --task-id mytask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

Вы можете просмотреть содержимое файла stdout.txt в текстовом редакторе.You can view the contents of stdout.txt in a text editor. В этом файле содержатся сведения о переменных среды пакетной службы, установленных на узле.The contents show the Azure Batch environment variables that are set on the node. При создании пакетных заданий вы можете ссылаться на них в командных строках задач, а также в приложениях и скриптах, запускаемых этими командными строками.When you create your own Batch jobs, you can reference these environment variables in task command lines, and in the apps and scripts run by the command lines. Например:For example:

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

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

Если вы хотите продолжить изучение примеров и руководств по пакетной службе, используйте учетную запись пакетной службы и связанную учетную запись хранения, созданную при выполнении инструкций в этом кратком руководстве.If you want to continue with Batch tutorials and samples, use the Batch account and linked storage account created in this quickstart. Плата за использование самой пакетной службы не взимается.There is no charge for the Batch account itself.

Но если во время работы узлов используются пулы, плата взимается, даже если задания не запланированы.You are charged for pools while the nodes are running, even if no jobs are scheduled. Если пул больше не нужен, удалите его, используя команду az batch pool delete.When you no longer need a pool, delete it with the az batch pool delete command. При удалении пула удаляются все выходные данные задачи на узлах.When you delete the pool, all task output on the nodes is deleted.

az batch pool delete --pool-id mypool

Вы можете удалить ставшие ненужными группу ресурсов, учетную запись пакетной службы, пулы и все связанные с ними ресурсы, выполнив команду az group delete.When no longer needed, you can use the az group delete command to remove the resource group, Batch account, pools, and all related resources. Удалите ресурсы следующим образом:Delete the resources as follows:

az group delete --name myResourceGroup

Дополнительная информацияNext steps

В этом кратком руководстве вы создали учетную запись и пул пакетной службы, а также пакетное задание.In this quickstart, you created a Batch account, a Batch pool, and a Batch job. Это задание запустило образцы задач, и вы просмотрели выходные данные на одном узле.The job ran sample tasks, and you viewed output created on one of the nodes. Изучив основные понятия пакетной службы, вы сможете использовать ее с более реалистичными рабочими нагрузками в большем масштабе.Now that you understand the key concepts of the Batch service, you are ready to try Batch with more realistic workloads at larger scale. Чтобы узнать больше о пакетной службе Azure, изучите следующие руководства.To learn more about Azure Batch, continue to the Azure Batch tutorials.