Esercizio - Monitorare il processo di Azure Batch nell'interfaccia della riga di comando

Completato

Se si usa Azure Batch per eseguire attività con utilizzo intensivo di risorse, sarà spesso necessario sapere come stanno procedendo queste attività.

Come progettista della soluzione per l'organizzazione no profit, occorrerà disporre di strumenti per accedere a quello che accade in Azure Batch. È anche necessario determinare se i nodi e le attività sono operativi, qual è il loro stato di avanzamento e se hanno prodotto file di output che possono essere scaricati.

In questa unità verrà creato un processo simile a quello dell'unità precedente, si monitorerà lo stato di avanzamento delle relative attività e verranno scaricati i file che le attività generano come output, il tutto dall'interfaccia della riga di comando di Azure.

Importante

Gli esercizi in questo modulo sono facoltativi. Per completare gli esercizi, è necessario avere una sottoscrizione di Azure.

Monitorare le attività tramite l'interfaccia della riga di comando

Azure Batch gestisce tutti i dettagli relativi alla creazione e alla gestione dei nodi di calcolo, oltre che alla pianificazione dei processi da eseguire su questi nodi.

Quando sono state create le attività nell'ultima unità, Azure Batch le ha accodate per l'esecuzione nel pool. Essendo stata stabilita una capacità disponibile per i nodi, Azure Batch ha pianificato l'esecuzione delle attività su tali nodi.

Alla fine dell'ultima unità è stato eliminato il processo, con l'effetto di eliminare tutte le relative attività. Verrà ora creato un nuovo processo con le attività. È importante notare che eliminare e ricreare attività è un'operazione piuttosto rapida, che consente di separare facilmente diversi esperimenti e progetti in Azure Batch. Al contrario, eliminare e ricreare entità di Batch di livello superiore (come gli account) richiede più tempo perché il pool di Batch deve essere ricreato e le macchine virtuali allocate.

  1. Accedere al portale di Azure.

  2. Aprire Cloud Shell selezionando l'icona di Cloud Shell (>_) nel menu in alto.

  3. Eseguire il comando seguente in Cloud Shell per creare un nuovo processo di Batch:

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

    È stato assegnato un nome diverso per evitare eventuali conflitti con il processo dell'unità precedente, per cui è stata pianificata l'eliminazione ma che non è stato necessariamente ancora eliminato.

  4. Eseguire il comando seguente per creare attività di Batch nell'ambito di questo nuovo processo:

    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. Eseguire il comando seguente in Cloud Shell per visualizzare lo stato di una delle attività create:

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

Scaricare l'attività tramite l'interfaccia della riga di comando

Per verificare che il processo batch sia stato eseguito correttamente, è possibile scaricare ed esaminare i file che ha creato.

  1. Eseguire il comando seguente in Cloud Shell per visualizzare una tabella di tutti i file generati da una delle attività create:

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

    Nota

    Se viene visualizzato un The files of the specified task cannot be accessed as the task state is still active messaggio di errore, attendere alcuni minuti e quindi eseguire di nuovo il comando.

  2. Eseguire il comando seguente in Cloud Shell per creare una directory dedicata per gli output delle attività e selezionarla:

    mkdir taskoutputs && cd taskoutputs
    
  3. Eseguire il comando seguente in Cloud Shell per scaricare i file generati da tutte le attività create:

    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
    

    Le attività hanno una directory di lavoro predefinita e per impostazione predefinita il lavoro viene indirizzato a stdout.txt. Eseguendo un ciclo è possibile reindirizzare stdout.txt a versioni numerate di stdout.txt, ognuna delle quali illustra le operazioni di una determinata attività e quale nodo è stato usato per eseguirla.

  4. Eseguire il comando seguente per visualizzare il contenuto di testo di alcuni file generati dal campione:

    cat stdout1.txt && cat stdout2.txt
    

    Questo output mostra diverse attività pianificate su nodi differenti mentre vengono elaborate dall'utilità di pianificazione di Batch.

    Anche in questo caso, l'account Azure Batch e il pool dei nodi di lavoro verranno mantenuti per essere usati nell'unità successiva, ma si eliminerà il processo di Batch. Poiché il processo di Batch funge da contenitore per le attività di Batch, anche queste attività verranno eliminate.

  5. Usare il comando seguente per eliminare il processo batch:

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