培训
模块
使用 Azure CLI 在 Azure Batch 中运行并行任务 - Training
了解 Azure Batch 功能,这些功能可以帮助你有效地在云中运行大规模的并行和高性能计算应用程序。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本快速入门介绍如何通过使用 Azure CLI 命令与脚本创建和管理 Batch 资源,来开始使用 Azure Batch。 请创建一个包含虚拟机或计算节点池的 Batch 帐户。 然后创建并运行一个作业,其中包含在池节点上运行的任务。
完成本快速入门后,你将了解 Batch 服务的关键概念,并准备好将 Batch 用于更现实、更大规模的工作负载。
如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。
Azure Cloud Shell 或 Azure CLI。
可以在 Azure Cloud Shell 中以交互方式运行本快速入门中的 Azure CLI 命令。 要在 Cloud Shell 中运行命令,请选择代码块右上角的“打开 Cloudshell”。 选择“复制”以复制代码,并将其粘贴到 Cloud Shell 以运行。 也可以从 Azure 门户中运行 Cloud Shell。 Cloud Shell 始终使用最新版本的 Azure CLI。
或者,也可以在本地安装 Azure CLI 以运行命令。 本文中的步骤需要 Azure CLI 版本 2.0.20 或更高版本。 运行 az version 以查看已安装的版本和依赖库,并运行 az upgrade 进行升级。 如果使用本地安装,请使用 az login 命令登录到 Azure。
备注
对于某些区域和订阅类型,配额限制可能会导致 Batch 帐户或节点创建失败或无法完成。 在这种情况下,可以免费请求增加配额。 有关详细信息,请参阅 Batch 服务的配额和限制。
运行以下 az group create 命令,在 eastus2
Azure 区域中创建名为 qsBatch
的 Azure 资源组。 资源组是一个逻辑容器,用于保存本快速入门的 Azure 资源。
az group create \
--name qsBatch \
--location eastus2
使用 az storage account create 命令创建一个 Azure 存储帐户来链接到 Batch 帐户。 尽管本快速入门不使用存储帐户,但大多数实际 Batch 工作负载都使用链接的存储帐户来部署应用程序并存储输入和输出数据。
运行以下命令,在资源组中创建名为 mybatchstorage
的 Standard_LRS SKU 存储帐户:
az storage account create \
--resource-group qsBatch \
--name mybatchstorage \
--location eastus2 \
--sku Standard_LRS
运行以下 az batch account create 命令,在资源组中创建名为 mybatchaccount
的 Batch 帐户并将其与 mybatchstorage
存储帐户链接起来。
az batch account create \
--name mybatchaccount \
--storage-account mybatchstorage \
--resource-group qsBatch \
--location eastus2
运行 az batch account login 命令,登录到新的 Batch 帐户。 使用 Batch 对帐户进行身份验证后,此会话中的后续 az batch
命令将使用此帐户上下文。
az batch account login \
--name mybatchaccount \
--resource-group qsBatch \
--shared-key-auth
运行 az batch pool create 命令,在 Batch 帐户中创建 Linux 计算节点池。 以下示例创建一个名为 myPool
的池,其中包含两个运行 Ubuntu 20.04 LTS OS 的 Standard_A1_v2 大小 VM。 就此快速入门示例来说,此节点大小在性能和成本之间达成了很好的平衡。
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
Batch 会立即创建池,但分配和启动计算节点需要数分钟。 若要查看池状态,请使用 az batch pool show 命令。 此命令显示池的所有属性,你可以查询特定的属性。 以下命令查询池的分配状态:
az batch pool show --pool-id myPool \
--query "allocationState"
Batch 分配并启动节点时,池处于 resizing
状态。 当池状态仍为 resizing
时,可以创建作业和任务。 如果分配状态为steady
且所有节点处于运行状态,则说明池已做好运行任务的准备。
使用 az batch job create 命令创建要在池上运行的 Batch 作业。 Batch 作业是一个或多个任务的逻辑组。 该作业包含任务的公用设置,例如运行任务的池。 以下示例在 myPool
上创建一个名为 myJob
的作业,该作业最初没有任务。
az batch job create \
--id myJob \
--pool-id myPool
Batch 提供了多种将应用和脚本部署到计算节点的方式。 使用 az batch task create 命令创建在作业中运行的任务。 每个任务都有一个命令行,用于指定应用或脚本。
以下 Bash 脚本通过 myTask4
创建四个相同的并行任务 myTask1
。 任务命令行会显示计算节点上的 Batch 环境变量,然后等待 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
命令输出显示每个任务的设置。 Batch 将任务分发到计算节点。
创建任务后,Batch 会让其排队在池中运行。 节点可用后,任务将在该节点上运行。
使用 az batch task show 命令查看 Batch 任务的状态。 以下示例显示了有关 myTask1
的状态的详细信息:
az batch task show \
--job-id myJob \
--task-id myTask1
命令输出包含许多详细信息。 例如,exitCode
为 0
指示任务命令已成功完成。 nodeId
显示运行了任务的池节点的名称。
使用 az batch task file 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 file download 命令可将输出文件下载到本地目录。 运行以下示例以下载 stdout.txt 文件:
az batch task file download \
--job-id myJob \
--task-id myTask1 \
--file-path stdout.txt \
--destination ./stdout.txt
可以在文本编辑器中查看标准输出文件的内容。 下面的示例演示了典型的 stdout.txt 文件。 此任务的标准输出显示节点上设置的 Azure Batch 环境变量。 可以在 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 帐户和关联的存储帐户。 Batch 帐户本身不收费。
池和节点在节点运行时会产生费用,即使它们未运行作业也是如此。 不再需要池时,请使用 az batch pool delete 命令将其删除。 删除池会删除节点上的所有任务输出以及节点本身。
az batch pool delete --pool-id myPool
当不再需要为本快速入门创建的任何资源时,可以使用 az group delete 命令删除资源组及其所有资源。 若要删除资源组和存储帐户、Batch 帐户、节点池和所有相关资源,请运行以下命令:
az group delete --name qsBatch
在本快速入门中,你创建了 Batch 帐户和池,创建并运行了 Batch 作业和任务,并查看了节点的任务输出。 现在你已经了解了 Batch 服务的关键概念,可以将 Batch 用于更现实、更大规模的工作负载了。 若要详细了解 Azure Batch,请继续学习 Azure Batch 教程。
培训
模块
使用 Azure CLI 在 Azure Batch 中运行并行任务 - Training
了解 Azure Batch 功能,这些功能可以帮助你有效地在云中运行大规模的并行和高性能计算应用程序。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。