練習 - 在 CLI 中建立 Azure Batch 作業以執行平行工作
Azure CLI 可讓您從命令行建立及部署 Azure Batch 資源。
身為非營利性的解決方案架構師,您想要開始為 Azure 上的光學字元辨識 (OCR) 案例建立 Batch 解決方案。 在第一個步驟中,您將測試如何使用 Azure CLI 來建立 Batch 帳戶、背景工作節點集區、作業和工作。
Azure CLI 是建立和管理 Azure 資源的跨平臺命令行。 它會使用一致的 az noun verb --properties
語法。 用來管理 Azure Batch 的 CLI 命令會遵循此慣例,因此所有命令的格式都是 az batch verb --properties
。
這很重要
本課程模組中的練習是選擇性的。 若要完成練習,您需要自己的 Azure 訂用帳戶。
建立 Azure Batch 資源
首先,您會為測試情境建立 Azure Batch 帳戶和工作節點集區。 然後,您會建立 Batch 作業和工作來執行於集區中。
建立新的資源群組
登入 Azure 入口網站。
選取左側功能表中的 [資源群組 ]。
選取 + 建立。
完成表單以建立練習的新資源群組,並記下名稱。
建立 Azure Batch 帳戶
在入口網站中,選取頂端功能表中的 Cloud Shell 圖示 (>_) 來開啟 Cloud Shell。 使用終端機視窗頂端的下拉功能表,確定您位於 Bash中。
為您的資源群組和批次資源建立環境變數。
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
在 Cloud Shell 中執行下列命令,以建立 Azure Batch 帳戶。 從下列其中一個位置中選擇:
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 Batch 帳戶:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
建立三個執行 Ubuntu 22.04 的標準 A1 v2 VM 集區:
az batch pool create \ --id mypool --vm-size Standard_A1_v2 \ --target-dedicated-nodes 3 \ --image canonical:ubuntuserver:22.04-LTS \ --node-agent-sku-id "batch.node.ubuntu 22.04"
執行下列命令,定期判斷節點是否已就緒:
az batch pool show --pool-id mypool \ --query "allocationState"
當此查詢顯示節點「穩定」時,即已準備好運作。 雖然它們顯示為「重新調整大小」,但實際上正在配置。 如果您想要多次查詢節點的狀態,您可以使用向上鍵在 Cloud Shell 中重複最近的命令。
執行下列命令來建立 Batch 作業,將所有在節點上執行的任務進行邏輯分組。
az batch job create \ --id myjob \ --pool-id mypool
執行下列命令以建立 Batch 工作:
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 Batch 運作方式的相當一些特性。 工作會自動排程到具有可用容量的節點。 不過,我們使用 (
AZ_BATCH_TASK_ID
和AZ_BATCH_NODE_ID
) 的環境變數來顯示哪些工作正在哪個節點上執行的資訊,只能在工作 使用者的內容中取得,這是在每個節點上建立的預設帳戶,才能執行工作。 此外,--command-line
引數不會直接在殼層下執行,因此您必須明確地使用/bin/bash -c
呼叫殼層,才能使用printenv
及grep
命令。此迴圈會完成 Azure Batch 作業實作。 保留 Azure Batch 帳戶和工作節點集區,以供下一個模組使用,但刪除 Batch 作業。 因為 Batch 作業會做為其 Batch 工作的容器,因此也會刪除工作。
在 Cloud Shell 中執行下列命令,以刪除 Batch 作業:
az batch job delete --job-id myjob -y