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