Cvičení – monitorování úlohy Azure Batch v rozhraní příkazového řádku

Dokončeno

Pokud ke spouštění náročných úloh používáte Službu Azure Batch, budete často chtít vědět, jak úkoly probíhají.

Jako architekt řešení pro neziskové organizace budete potřebovat přístup k tomu, co se děje ve službě Azure Batch. Také je potřeba zjistit, jestli uzly a úkoly fungují, jak daleko postupovaly a jestli vytvořily výstupní soubory ke stažení.

V této lekci vytvoříte úlohu podobnou té v předchozí lekci, budete monitorovat průběh svých úkolů a stahovat soubory, které tyto úkoly vytvářejí jako výstup, a to vše pomocí Azure CLI.

Důležitý

Cvičení v tomto modulu jsou volitelná. K dokončení cvičení budete potřebovat vlastní předplatné Azure.

Monitorování úloh pomocí rozhraní příkazového řádku

Azure Batch zpracovává všechny podrobnosti o vytváření a správě výpočetních uzlů a plánování úloh, které se mají na těchto uzlech spouštět.

Když jste vytvořili úkoly v poslední jednotce, služba Azure Batch je zařadila do fronty pro spuštění ve fondu. Vzhledem k tomu, že uzly měly dostupnou kapacitu, služba Azure Batch naplánovala úlohy tak, aby běžely na těchto uzlech.

Na konci poslední jednotky jsme odstranili úlohu, což vedlo k odstranění všech jejích úkolů. Teď vytvoříme novou práci a úkoly. Stojí za zmínku, že odstranění a opětovné vytvoření úkolů je poměrně rychlá operace a umožňuje snadno oddělit různé experimenty a projekty ve službě Azure Batch. Odstranění a opětovné vytvoření entit Batch na vyšší úrovni (jako účty) naopak trvá déle, protože fond Batch se musí znovu vytvořit a přidělit virtuální počítače.

  1. Přihlaste se do Azure portálu .

  2. V horní nabídce otevřete Cloud Shell výběrem ikony Cloud Shellu (>_).

  3. Spuštěním následujícího příkazu v Cloud Shellu vytvořte novou úlohu Batch:

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

    Pojmenovali jsme ho jinak, aby nedocházelo ke konfliktu s úlohou z předchozí jednotky, která byla naplánována k odstranění, ale nutně ještě nebyla odstraněna.

  4. Spuštěním následujícího příkazu vytvořte úlohy Batch v rámci této nové úlohy:

    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. Spuštěním následujícího příkazu v Cloud Shellu zobrazte stav jedné z úloh, které jste vytvořili:

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

Stažení výstupu úlohy pomocí rozhraní příkazového řádku

Pokud chcete zkontrolovat, jestli se dávková úloha správně spustila, můžete stáhnout a zkontrolovat soubory, které vytvořila.

  1. Spuštěním následujícího příkazu v Cloud Shellu zobrazte tabulku všech souborů vygenerovaných jednou z úloh, které jste vytvořili:

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

    Poznámka

    Pokud se zobrazí chybová zpráva The files of the specified task cannot be accessed as the task state is still active, počkejte několik minut a spusťte příkaz znovu.

  2. Spuštěním následujícího příkazu v Cloud Shellu vytvořte vyhrazený adresář pro výstupy úloh a přejděte do něj:

    mkdir taskoutputs && cd taskoutputs
    
  3. Spuštěním následujícího příkazu v Cloud Shellu stáhněte soubory vygenerované všemi úlohami, které jste vytvořili:

    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
    

    Úkoly mají výchozí pracovní adresář a jejich práce je ve výchozím nastavení směrována na stdout.txt. Pro opakované zpracování můžeme přesměrovat stdout.txt na číslované verze stdout.txt, z nichž každá ukazuje úkol dané práce a také který uzel byl použit k jeho spuštění.

  4. Spuštěním následujícího příkazu zobrazte textový obsah několika ukázkových vygenerovaných souborů:

    cat stdout1.txt && cat stdout2.txt
    

    Tento výstup zobrazuje různé úkoly naplánované na různé uzly, protože je plánovač Batch zpracovává.

    Znovu ponecháme účet Azure Batch a fond pracovních uzlů, které použijeme v další lekci, ale úlohu Batch odstraníme. Vzhledem k tomu, že úloha Batch funguje jako kontejner pro své úkoly Batch, budou tyto úkoly také odstraněny.

  5. Pomocí následujícího příkazu odstraňte úlohu Batch:

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