Cvičení – monitorování úlohy Azure Batch v rozhraní příkazového řádku
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.
Přihlaste se k webu Azure Portal.
Otevřete Cloud Shell výběrem ikony Cloud Shellu (>_) v horní nabídce.
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á.
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
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.
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.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
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ěrovatstdout.txt
na číslované verzestdout.txt
, z nichž každý ukazuje práci daného úkolu a který uzel byl použit ke spuštění.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ů.
Pomocí následujícího příkazu odstraňte úlohu Batch:
az batch job delete --job-id myjob2 -y