Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ve službě Azure Batch představuje úkol jednotku výpočtu. Úloha je kolekce těchto úkolů. Další informace o úlohách a úkolech a jejich použití v pracovním postupu služby Azure Batch najdete níže.
Úlohy
Úloha je kolekce úkolů. Řídí, jak se provádí výpočet pomocí jejích úkolů na výpočetních uzlech ve fondu.
Úloha určuje fond, kde se má úloha vykonat. Můžete vytvořit nový fond pro každou úlohu nebo použít jeden fond pro mnoho úloh. Můžete vytvořit fond pro každou úlohu přidruženou k plánu úlohy nebo jeden fond pro všechny úlohy přidružené k plánu úloh.
Priorita úloh
K úlohám, které vytvoříte, můžete přiřadit volitelnou prioritu. Služba Batch používá hodnotu priority úlohy k určení pořadí plánování (pro všechny úkoly v rámci úlohy) v rámci každého fondu.
Pokud chcete aktualizovat prioritu úlohy, zavolejte Aktualizační vlastnosti úlohy (Batch REST) nebo upravte BatchJob.Priority (Azure. Compute.Batch). Hodnoty priority jsou v rozsahu od -1000 (nejnižší priorita) do +1000 (nejvyšší priorita).
Ve stejném fondu mají úlohy s vyšší prioritou přednost plánování před úlohami s nižší prioritou. Úkoly ve spuštěných úlohách s nižší prioritou nebudou přerušeny úkoly z úlohy s vyšší prioritou. Úlohy se stejnou úrovní priority mají stejnou šanci na naplánování a pořadí provádění úkolů není definováno.
Úloha s vysokou prioritou spuštěnou v jednom fondu nebude mít vliv na plánování úloh spuštěných v samostatném fondu nebo v jiném účtu Batch. Priorita úlohy se nevztahuje na autopooly, které se vytvoří při odeslání úlohy.
Omezení úloh
Můžete použít omezení pro úlohy ke stanovení určitých limitů pro vaše úlohy.
- Můžete nastavit maximální uplynulý čas, takže pokud některá úloha běží po dobu delší než určený maximální uplynulý čas, úloha a všechny její úkoly budou ukončeny.
- Jako omezení můžete zadat maximální počet opakovaných pokusů o úkol, včetně toho, jestli se úkol vždy opakuje nebo nikdy neopakuje. Opakování úlohy znamená, že pokud se úloha nezdaří, znovu se spustí znovu.
Úlohy správce úloh a automatické ukončení
Klientská aplikace si může přidat úkoly do úlohy, nebo můžete zadat úkol správce úloh. Úkol správce úloh obsahuje informace potřebné k vytvoření požadovaných úkolů pro úlohu, přičemž úkol správce úloh běží na jednom výpočetním uzlu v rámci fondu. Úloha správce úloh je specificky zpracována službou Batch; zařadí se do fronty, jakmile je úloha vytvořena, a pokud selže, restartuje se. Úkol správce úloh se vyžaduje pro úlohy vytvořené plánem úlohy, protože je to jediný způsob, jak definovat úkoly před vytvořením instance úlohy.
Ve výchozím nastavení zůstanou úlohy v aktivním stavu po dokončení všech úkolů v rámci úlohy. Toto chování můžete změnit tak, aby se úlohy automaticky ukončily po dokončení všech úkolů v úloze. Nastavte vlastnost onAllTasksComplete (OnAllTasksComplete v Azure. Compute.Batch) pro terminatejob*, aby se úloha automaticky ukončila, když jsou všechny její úkoly v dokončeném stavu.
Služba Batch považuje úlohu bez žádných úkolů za splněnou. Tato možnost se proto nejčastěji používá pro úkoly správce úloh. Pokud chcete použít automatické ukončení úlohy bez správce úloh, měli byste nejprve nastavit vlastnost onAllTasksComplete nové úlohy na noactionhodnotu *terminatejob' až po dokončení přidávání úkolů do úlohy.
Naplánované úlohy
Plány úloh umožňují vytvořit opakované úlohy v rámci služby Batch. Plán úloh určuje, kdy spustit úlohy a obsahuje specifikace pro úlohy, které mají být spuštěny. Můžete určit dobu trvání plánu (jak dlouho a kdy je plán v platnosti) a jak často se úlohy vytvářejí během naplánovaného období.
Úlohy
Úkol je jednotka výpočtu, která je přidružena k úloze. Běží na uzlovém bodě. Úkoly jsou přiřazeny k uzlu k provedení, nebo jsou zařazeny do fronty, dokud se uzel neuvolní. Jednoduše řečeno, úkol spustí na výpočetním uzlu jeden nebo více programů nebo skriptů k provedení potřebné práce.
Při vytvoření úkolu můžete zadat:
Příkazový řádek pro úkol. Toto je příkazový řádek, kterým se na výpočetním uzlu spouští vaše aplikace nebo skript.
Je důležité si uvědomit, že příkazový řádek nefunguje pod shell. Proto nemůže nativně využívat funkce shellu, jako je rozšiřování proměnných prostředí (to zahrnuje ). Pokud chcete tyto funkce využít, musíte vyvolat prostředí na příkazovém řádku, například spuštěním
cmd.exena uzlech Windows nebo/bin/shv Linuxu:cmd /c MyTaskApplication.exe %MY_ENV_VAR%/bin/sh -c MyTaskApplication $MY_ENV_VARPokud vaše úlohy potřebují spustit aplikaci nebo skript, které nejsou na uzlu
PATHnebo neodkazují na proměnné prostředí, explicitně použijte shell v příkazovém řádku úkolu.Soubory prostředků obsahující data, která mají být zpracována. Tyto soubory se před provedením příkazového řádku úkolu automaticky zkopírují do uzlu z úložiště objektů blob v účtu Azure Storage. Další informace naleznete v tématu Zahájení úkolů a Souborů a adresářů.
Proměnné prostředí, které jsou požadovány příslušnou aplikací. Další informace najdete v tématu Nastavení prostředí pro úlohy.
Omezení, za kterých by měl být proveden úkol. Mezi omezení patří například: maximální doba, po kterou smí úkol běžet, maximální počet pokusů o opakování neúspěšného úkolu a maximální doba, po kterou jsou zachovány soubory v pracovním adresáři úkolu.
Balíčky aplikací pro nasazení do výpočetního uzlu, na kterém je naplánováno spuštění úkolu. Balíčky aplikací poskytují možnost zjednodušeného nasazení a správy verzí aplikací, které provádějí vaše úkoly. Balíčky aplikací na úrovni úloh jsou zvlášť užitečné v prostředích sdíleného fondu, kde se v jednom fondu spouštějí různé úlohy a po dokončení úlohy se fond neodstraní. Pokud má vaše úloha méně úkolů, než je uzlů ve fondu, balíčky aplikací úkolů můžou omezit přenosy dat, protože se aplikace může nasadit jen na uzly, které úkoly budou skutečně provádět.
Odkaz na image kontejneru v Docker Hubu nebo privátním registru a další nastavení pro vytvoření kontejneru Dockeru, ve kterém se bude spouštět úloha na uzlu. Tyto údaje zadáváte pouze v případě, že je ve fondu nastavená konfigurace kontejneru.
Poznámka:
Maximální doba života úkolu, od doby, kdy je přidána do úlohy do dokončení, je 180 dní. Dokončené úkoly se uchovávají po dobu 7 dnů; data pro úkoly, které nejsou dokončeny v rámci maximální životnosti, nejsou přístupná.
Kromě úkolů, které definujete k provádění výpočtů na uzlu, poskytuje služba Batch také několik speciálních úloh:
- Zahájit úkol
- Úkol správce úloh
- Úkoly přípravy a zahájení úloh
- Úlohy s více instancemi
- Závislosti úkolů
Zahájit úkol
Přidružením spouštěcího úkolu k fondu můžete připravit provozní prostředí jeho uzlů. Můžete například provádět akce, jako je instalace aplikací, které vaše úkoly spouštějí, nebo spouštění procesů na pozadí. Spouštěcí úloha se spustí při každém spuštění uzlu, dokud zůstane ve fondu. To zahrnuje, když je uzel poprvé přidán do fondu a když je restartován nebo znovu načten.
Hlavní výhodou spouštěcího úkolu je, že obsahuje všechny informace potřebné ke konfiguraci výpočetního uzlu a instalaci aplikací nezbytných k provádění úkolu. Proto je navýšení počtu uzlů ve fondu pouze otázkou zadání nového cílového počtu uzlů. Spouštěcí úloha poskytuje informace potřebné pro službu Batch, aby nakonfigurovala nové uzly a připravila je na přijetí úkolů.
Stejně jako u jakékoli úlohy Azure Batch můžete kromě příkazového řádku, který se má spustit, zadat seznam souborů prostředků ve službě Azure Storage. Služba Batch nejprve zkopíruje soubory prostředků ze služby Azure Storage do uzlu a pak spustí příkazový řádek. U úkolu spouštění fondu obvykle seznam souborů obsahuje aplikaci úkolu a její závislosti.
Spouštěcí úkol ale může obsahovat také referenční data, která budou k dispozici k použití ve všech úkolech spouštěných na výpočetním uzlu. Příkazový řádek spouštěcího úkolu může například provést operaci robocopy kopírování souborů aplikace (které byly zadány jako soubory prostředků a staženy do uzlu) z pracovního adresáře spouštěcího úkolu do sdílené složky a potom spustit soubor MSI nebo setup.exe.
Obvykle budete chtít, aby služba Batch počkala na dokončení úvodního úkolu, než uzel považuje za připravený k přiřazení dalších úkolů. Podle potřeby ale můžete toto nastavení nakonfigurovat jinak.
Pokud na výpočetním uzlu selže spouštěcí úkol, stav uzlu se aktualizuje tak, aby odrážel selhání a uzel nemá přiřazené žádné úkoly. Spouštěcí úloha může selhat, pokud dojde k problému při kopírování souborů prostředků z úložiště nebo pokud proces spuštěný pomocí příkazového řádku vrátí nenulový ukončovací kód.
Pokud přidáváte nebo aktualizujete spouštěcí úkol pro už existující fond, musíte restartovat jeho výpočetní uzly, aby se na nich spouštěcí úkol provedl.
Poznámka:
Batch omezuje celkovou velikost spouštěcího úkolu, což zahrnuje soubory prostředků i proměnné prostředí. Pokud potřebujete zmenšit velikost spouštěcího úkolu, můžete použít jednu ze dvou následujících metod:
K distribuci aplikací nebo dat napříč všemi uzly ve fondu Batch můžete použít balíčky aplikací. Další informace o balíčcích aplikací najdete v tématu Nasazení aplikací do výpočetních uzlů pomocí balíčků aplikací služby Batch.
Můžete ručně vytvořit komprimovaný archiv obsahující vaše soubory aplikací. Tento komprimovaný archiv potom uložte do služby Azure Storage jako objekt blob. Zadejte zazipovaný archiv jako soubor prostředků pro váš spouštěcí úkol. Před spuštěním příkazového řádku pro spouštěcí úkol rozbalte archiv z příkazového řádku.
K rozbalení archivu můžete použít archivační nástroj podle vašeho výběru. Musíte zahrnout nástroj, který používáte k rozbalení archivu, jako zdrojový soubor pro spouštěcí úkol.
Úkol správce úloh
K řízení a/nebo monitorování provádění úloh obvykle používáte úlohu správce úloh. Například úlohy správce úloh se často používají k vytvoření a odeslání úkolů pro úlohu, určení dalších úkolů ke spuštění a určení, kdy je práce dokončena.
Úloha správce úloh ale není omezena na tyto aktivity. Jedná se o plnohodnotný úkol, který může provádět jakékoli akce, které jsou pro úlohu potřeba. Úkol správce úloh může například stáhnout soubor zadaný jako parametr, analyzovat obsah tohoto souboru a odeslat další úkoly na základě těchto obsahů.
Úkol správce úloh je spuštěn před všemi ostatními úkoly. Má následující funkce:
- Služba Batch ji automaticky odešle jako úkol při vytvoření úlohy.
- Je plánováno, že se spustí před ostatními úkoly v úloze.
- Jeho přidružený uzel je posledním, který je odstraněn z fondu, když se fond zmenšuje.
- Jeho ukončení může být vázáno na ukončení všech úkolů v úloze.
- Úkol správce úloh má nejvyšší prioritu, když je potřeba ho restartovat. Pokud není nečinný uzel dostupný, může služba Batch ukončit jeden z ostatních spuštěných úkolů ve fondu, aby se uvolnilo místo pro spuštění úlohy správce úloh.
- Úkol správce úloh v jedné úloze nemá prioritu nad úkoly jiných úloh. V rámci prací jsou dodržovány pouze priority na úrovni práce.
Úkoly přípravy a uvolnění úloh
Služba Batch poskytuje úkoly pro přípravu úloh a nastavení jejich provádění, a také úkoly pro uvolnění úloh pro údržbu nebo vyčištění po dokončení úlohy.
Úkol přípravy úlohy se spustí na všech výpočetních uzlech, které jsou naplánované ke spuštění úkolů před spuštěním některého z ostatních úkolů úlohy. Můžete například použít úkol přípravy úlohy ke kopírování dat, která jsou sdílena všemi úkoly, ale je pro úlohu jedinečná.
Po dokončení úlohy se úloha uvolnění spustí na každém uzlu v poolu, který vykonal alespoň jeden úkol. Úloha uvolnění může například odstranit data zkopírovaná úlohou přípravy, nebo může komprimovat a nahrát diagnostické protokolové údaje.
Úkoly přípravy i uvolnění úloh umožňují zadat příkazový řádek, který se provede, když je úkol vyvolán. Nabízejí funkce, jako například stahování souborů, provádění se zvýšenými oprávněními, vlastní proměnné prostředí, maximální dobu provádění, počet opakování a dobu uchovávání souboru.
Další informace ohledně úkolů přípravy a uvolnění úloh najdete v části Spouštění úkolů přípravy a dokončení úlohy na výpočetních uzlech Azure Batch.
Úkoly s více instancemi
Úkol s více instancemi je úkol, který je nakonfigurován, aby byl současně spuštěn na více než jednom výpočetním uzlu. Pomocí úloh s více instancemi můžete povolit scénáře vysokovýkonného výpočetního prostředí, které vyžadují skupinu výpočetních uzlů, které jsou přiděleny dohromady pro zpracování jedné úlohy, jako je rozhraní MPI (Message Passing Interface).
Podrobné informace o spouštění úloh MPI ve službě Batch pomocí knihovny Batch .NET najdete v článku Použití úkolů s více instancemi ke spouštění aplikací rozhraní MPI (Message Passing Interface) v Azure Batch.
Závislosti úkolu
Závislosti úkolů, jak již název napovídá, umožňují určit, jestli úkol závisí před svým spuštěním na dokončení jiných úkolů. Tato funkce poskytuje podporu pro situace, ve kterých "podřízený" úkol spotřebovává výstup "nadřazeného" úkolu nebo když nadřazený úkol provádí inicializaci, která je požadovaná podřízeným úkolem.
Pokud chcete tuto funkci použít, musíte nejprve povolit závislosti úkolů v úloze Batch. Pak pro každý úkol, který závisí na jiném (nebo mnoha jiných), zadáte úkoly, na kterých tento úkol závisí.
Pomocí závislosti úkolů lze nakonfigurovat například následující scénáře:
- Úkol B závisí na úkolu A (úkol B nezahájí provádění, dokud se nedokončí úkol A).
- Úkol C závisí na úkolu A i úkolu B.
- Úkol D závisí na celé řadě úkolů, například na úkolu 1 až 10, než se provede
Další informace najdete v tématu Závislosti úloh ve službě Azure Batch a ukázka kódu TaskDependencies v úložišti GitHub azure-batch-samples .
Nastavení prostředí pro úlohy
Každý úkol prováděný službou Batch má přístup k proměnným prostředí, které nastaví na výpočetních uzlech. To zahrnuje proměnné prostředí definované službou Batch a vlastními proměnnými prostředí, které můžete definovat pro své úkoly. Aplikace a skripty, které vaše úlohy provádějí, mají během provádění přístup k těmto proměnným prostředí.
Vlastní proměnné prostředí můžete nastavit na úrovni úkolů či úloh tím, že vyplníte vlastnost nastavení prostředí pro tyto entity. Další informace najdete v operaci Přidat úkol do úlohy (Batch REST) nebo ve vlastnostech BatchTask.EnvironmentSettings a BatchJob.CommonEnvironmentSettings v Azure.Compute.Batch.
Klientská aplikace nebo služba může získat proměnné prostředí úlohy, definované službou i vlastní, pomocí operace Získání informací o úloze (Batch REST) nebo přístupem k vlastnosti BatchTask.EnvironmentSettings (Azure.Compute.Batch). Procesy prováděné na výpočetním uzlu mohou také přistupovat k těmto i ostatním proměnným prostředí na uzlu například pomocí známé syntaxe %VARIABLE_NAME% (Windows) nebo $VARIABLE_NAME (Linux).
Seznam všech proměnných prostředí definovaných službou najdete v proměnných prostředí výpočetních uzlů.
Známá omezení
- Úloha zablokovaná ve spuštěném stavu: Služba Batch spolupracuje s výpočetními uzly a spravuje životní cyklus úloh. Když je úkol naplánován pro spuštění na výpočetním uzlu, je tento uzel zodpovědný za aktualizaci stavu úkolu z běžícího na dokončený. Pokud je výpočetní uzel předem zrušený nebo ztratí připojení ke službě Batch, jeho úkoly zůstanou ve spuštěném stavu, dokud služba Batch nezískají možnost přeplánovat je tak, aby běžela s jiným výpočetním uzlem. Pokud není žádný jiný výpočetní uzel, tyto úlohy můžou zůstat ve stavu běhu navždy. Pokud chcete zjistit, jestli je úkol zablokovaný ve spuštěném stavu, můžete se na úkol dotazovat a zkontrolovat, jestli je přidružený uzel nepoužitelný nebo odstraněný z fondu.
- Když je úloha ukončena, služba Batch ukončí pouze své spuštěné úkoly s dostupnými výpočetními uzly. Všechny existující aktivní úlohy a běžící úlohy s nepoužitelnými uzly zůstávají ve svém aktuálním stavu.
- Když je úloha znovu zařazena do fronty (například kvůli předem přerušenému uzlu nebo operaci změny velikosti fondu s
Requeuemožností), je přesunuta na konec fronty příslušné úlohy. Existuje možnost, že se úkol zpozdí a bude přeplánován, když ve stejné úloze čekají další aktivní úkoly.
Další kroky
- Seznamte se se soubory a adresáři.