練習 - 在 CLI 中監視 Azure Batch 作業

已完成

如果您使用 Azure Batch 執行密集型工作,您通常會想知道工作的進展。

身為非營利組織的方案架構設計人員,您需要方法來存取 Azure Batch 中的情況。 您還需要確定節點和工作是否正常運作、它們取得了多大進展,以及它們是否產生了可下載的輸出檔案。

在本單元中,您將建立類似上一單元的作業、監視其工作的進度,並下載工作產生作為輸出的檔案,這些全都使用 Azure CLI。

重要

此課程模組中的練習是選擇性的。 若要完成這些練習,您會需要自己的 Azure 訂用帳戶。

使用 CLI 監視工作

Azure Batch 會處理建立和管理計算節點,以及在這些節點上執行之排程工作的所有詳細資料。

當您在最後一個單元中建立工作時,Azure Batch 會將它們排入佇列以在集區中執行。 在確定節點具有可用容量時,Azure Batch 會排程在這些節點上執行的工作。

在最後一個單元的結尾,我們會刪除該作業,該作業具有刪除其所有工作的效果。 我們現在將建立新的作業和工作。 值得注意的是,刪除和重新建立工作是一項相當快速的作業,並允許您輕鬆地在 Azure Batch 中分辨出不同的實驗和專案。 相反地,刪除並重新建立較高層級的 Batch 實體 (例如帳戶) 需要更多時間,因為必須重新建立 Batch 集區和配置虛擬機器。

  1. 登入 Azure 入口網站

  2. 選取頂端功能表中的 Cloud Shell 圖示 (>_) 來開啟 Cloud Shell。

  3. 在 Cloud Shell 中執行下列命令以建立新的 Batch 作業:

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

    我們會將其命名為不同名稱,以避免與前一個單元的作業發生任何衝突,該單元已排程刪除但尚未刪除。

  4. 執行下列命令,以在此新的作業內建立 Batch 工作:

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob2 \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    
  5. 在 Cloud Shell 中執行下列命令,以檢視您所建立之其中一項工作的狀態:

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

使用 CLI 下載工作輸出

若要檢查批次工作是否正確執行,您可以下載並檢查它所建立的檔案。

  1. 在 Cloud Shell 中執行下列命令,以顯示由您所建立的其中一項工作產生的所有檔案的資料表:

    az batch task file list \
     --job-id myjob2 \
     --task-id mytask5 \
     --output table
    

    注意

    如果您看到 The files of the specified task cannot be accessed as the task state is still active 錯誤訊息,請稍候幾分鐘,然後再執行命令。

  2. 在 Cloud Shell 中執行下列命令,為工作輸出建立專用目錄,並瀏覽至該目錄:

    mkdir taskoutputs && cd taskoutputs
    
  3. 在 Cloud Shell 中執行下列命令,以下載由您所建立之所有工作產生的檔案:

    for i in {1..10}
    do
    az batch task file download \
        --job-id myjob2 \
        --task-id mytask$i \
        --file-path stdout.txt \
        --destination ./stdout$i.txt
    done
    

    工作具有預設工作目錄,且根據預設,它們的工作將會導向至 stdout.txt。 透過迴圈,我們可以將 stdout.txt 重新導向到 stdout.txt 的編號版本,每個版本都顯示特定工作的工作,以及用來執行它的節點。

  4. 執行下列命令以檢視幾個範例產生檔案的文字內容:

    cat stdout1.txt && cat stdout2.txt
    

    此輸出會在 Batch 排程器處理它們時,顯示排程到不同節點上的不同工作。

    同樣地,我們將保留 Azure Batch 帳戶和背景工作節點集區以在下一個單元中使用,但我們會刪除 Batch 作業。 由於 Batch 作業充當其 Batch 工作的容器,因此也會一併刪除這些工作。

  5. 使用下列命令以刪除批次工作:

    az batch job delete --job-id myjob2 -y