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

Dokončeno

Pokud v Azure Batch spouštíte náročné úkoly, může se hodit možnost častěji kontrolovat jejich průběh.

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 části vytvoříte úlohu podobnou té v předchozí části, budete monitorovat průběh jejích úkolů a stáhnete soubory, které tyto úkoly vytvoří jako výstup – to všechny pomocí Azure CLI.

Důležité

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

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

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

Když jste v předchozí části vytvořili úkoly, služba Azure Batch je zařadila do fronty ke spuštění ve fondu. Po zjištění dostupné kapacity služba Azure Batch naplánovala spuštění úkolů v těchto uzlech.

Na konci předchozí části jsme odstranili úlohu, a tím i všechny její úkoly. Teď vytvoříme novou úlohu a úkoly. Je vhodné poznamenat, že odstranění a opětovné vytvoření úkolů je poměrně rychlá operace a díky ní od sebe v Azure Batch snadno oddělíte různé experimenty a projekty. 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 k webu Azure Portal.

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

  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í lekce, která byla naplánovaná k odstranění, ale ještě není odstraněná.

  4. Spuštěním následujícího příkazu vytvořte v této nové úloze úkoly 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. Spuštěním následujícího příkazu v Cloud Shellu zobrazte stav některého z vytvořených úkolů:

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

Stažení výstupu úkolu 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 některým z úkolů, které jste vytvořili:

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

    Poznámka:

    Pokud se zobrazí The files of the specified task cannot be accessed as the task state is still active chybová zpráva, 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 úkolu 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 úkoly, 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 ve výchozím nastavení je jejich práce směrována na stdout.txt. Procházením smyčky můžeme přesměrovat stdout.txt na číslované verze stdout.txt, z nichž každý ukazuje práci daného úkolu a který uzel byl použit ke 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é pro různé uzly podle toho, jak 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. Protože úloha Batch slouží jako kontejner pro úkoly Batch, dojde i k odstranění jejích úkolů.

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

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