練習 - 在 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 中。
為資源群組和 Batch 資源建立環境變數。
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
建立一個三個標準 A1 v2 VM (執行 Ubuntu 18.04) 的集區:
az batch pool create \ --id mypool --vm-size Standard_A1_v2 \ --target-dedicated-nodes 3 \ --image canonical:ubuntuserver:18.04-LTS \ --node-agent-sku-id "batch.node.ubuntu 18.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