Oefening: uw Azure Batch-taak bewaken in de CLI

Voltooid

Als u Azure Batch gebruikt om intensieve taken uit te voeren, wilt u vaak weten hoe de taken gaan.

Als oplossingsarchitect voor de non-profitorganisatie hebt u manieren nodig om toegang te krijgen tot wat er gebeurt in Azure Batch. U moet ook bepalen of de knooppunten en taken werken, hoe ver ze zijn gevorderd en of ze downloadbare uitvoerbestanden hebben geproduceerd.

In deze les maakt u een taak die vergelijkbaar is met die in de vorige les, bewaakt u de voortgang van de taken en downloadt u de bestanden die de taken als uitvoer produceren, allemaal met behulp van de Azure CLI.

Belangrijk

De oefeningen in deze module zijn optioneel. Als u de oefeningen wilt voltooien, hebt u uw eigen Azure-abonnement nodig.

Taken bewaken met behulp van de CLI

Azure Batch verwerkt alle details van het maken en beheren van rekenknooppunten en het plannen van taken die op deze knooppunten moeten worden uitgevoerd.

Wanneer u in het laatste onderdeel taken hebt gemaakt, heeft Azure Batch ze in de wachtrij geplaatst zodat ze in de pool uitgevoerd kunnen worden. Toen werd vastgesteld dat knooppunten beschikbare capaciteit hadden, heeft Azure Batch de taken gepland om op die knooppunten uit te voeren.

Aan het einde van de laatste les hebben we de functie verwijderd, waarmee alle bijbehorende taken ook werden verwijderd. We gaan nu een nieuwe klus en taken maken. Het is de moeite waard om te vermelden dat het verwijderen en opnieuw maken van taken een redelijk snelle bewerking is en dat u eenvoudig verschillende experimenten en projecten in Azure Batch kunt scheiden. Het verwijderen en opnieuw maken van Batch-entiteiten (zoals accounts) kost daarentegen meer tijd, omdat de Batch-pool opnieuw moet worden gemaakt en virtuele machines moeten worden toegewezen.

  1. Meld u aan bij de Azure Portal.

  2. Open Cloud Shell door in het bovenste menu het Cloud Shell-pictogram (>_) te selecteren.

  3. Voer de volgende opdracht uit in Cloud Shell om een nieuwe Batch-taak te maken:

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

    We hebben het anders genoemd om conflicten met de taak uit de vorige eenheid te voorkomen, die is gepland voor verwijdering, maar nog niet noodzakelijkerwijs verwijderd.

  4. Voer de volgende opdracht uit om Batch-taken te maken binnen deze nieuwe taak:

    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. Voer de volgende opdracht uit in Cloud Shell om de status van een van de gemaakte taken weer te geven:

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

Taakuitvoer downloaden met behulp van de CLI

Als u wilt controleren of de batchtaak correct is uitgevoerd, kunt u de gemaakte bestanden downloaden en onderzoeken.

  1. Voer de volgende opdracht uit in Cloud Shell om een tabel weer te geven van alle bestanden die zijn gegenereerd door een van de taken die u hebt gemaakt:

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

    Notitie

    Als u een The files of the specified task cannot be accessed as the task state is still active foutbericht ziet, wacht u enkele minuten en voert u de opdracht opnieuw uit.

  2. Voer de volgende opdracht uit in Cloud Shell om een toegewezen map te maken voor taakuitvoer en navigeer ernaartoe:

    mkdir taskoutputs && cd taskoutputs
    
  3. Voer de volgende opdracht uit in Cloud Shell om de bestanden te downloaden die zijn gegenereerd door alle taken die u hebt gemaakt:

    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
    

    Taken hebben een standaardwerkmap en hun werk wordt standaard omgeleid naar stdout.txt. Door een lus te doorlopen, kunnen we stdout.txt omleiden naar genummerde versies van stdout.txt, die elk het werk van een bepaalde taak weergeven en welk knooppunt is gebruikt om het uit te voeren.

  4. Voer de volgende opdracht uit om de tekstinhoud van een aantal door de voorbeeld gegenereerde bestanden weer te geven:

    cat stdout1.txt && cat stdout2.txt
    

    In deze uitvoer worden verschillende taken weergegeven die op verschillende knooppunten worden gepland wanneer de Batch-planner deze verwerkt.

    Nogmaals, we laten het Azure Batch-account en de pool met werkknooppunten aanwezig voor gebruik in de volgende module, maar we verwijderen de Batch-job. Omdat de Batch job fungeert als een container voor de Batch-taken, worden deze taken ook verwijderd.

  5. Gebruik de volgende opdracht om de Batch-taak te verwijderen:

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