Úlohy a úkoly v Azure Batch
V Azure Batch úkol představuje jednotku výpočtu. Úloha je kolekce těchto úkolů. Další informace o úlohách a úkolech a jejich použití v pracovním Azure Batch jsou popsány 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, ve kterém se má práce spustit. 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, která je přidružená k plánu úlohy ,nebo jeden fond pro všechny úlohy, které jsou přidruženy k plánu úlohy.
Priorita úloh
Úlohě, které vytvoříte, můžete přiřadit volitelnou prioritu úlohy. Služba Batch používá hodnotu priority úlohy k určení pořadí plánování (pro všechny úkoly v rámci úlohy) wtihin každý fond.
Pokud chcete aktualizovat prioritu úlohy, zavolejte operaci Aktualizovat vlastnosti úlohy (Batch REST) nebo upravte CloudJob.Priority (Batch .NET). Hodnoty priority jsou v rozsahu od -1 000 (nejnižší priorita) do 1 000 (nejvyšší priorita).
V rámci stejného fondu mají úlohy s vyšší prioritou přednost plánování před úlohami s nižší prioritou. Úkoly v úlohách s nižší prioritou, které už jsou spuštěné, nezkrátí úkoly v rámci ú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 automatické zařazování, které se vytvoří při jejich odeslaní.
Omezení úloh
Můžete použít omezení úlohy k zadání určitých omezení pro ú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 opakování úkolů, včetně toho, jestli se úkol bude vždy opakovat nebo se nikdy neopakuje. Opakování úlohy znamená, že pokud se úloha nezdaří, znovu se zařadí do fronty, aby se znovu spouštěla.
Úkoly 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. Úkol správce úloh zpracovává konkrétně Batch. Jakmile se úloha vytvoří, zařadit se do fronty, a pokud selže, restartuje se. Úkol správce úloh je vyžadován pro úlohy, které jsou vytvořeny podle plánu ú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 úlohy onAllTasksComplete (OnAllTasksComplete v Batch .NET) na *', aby se úloha automaticky ukončila, když jsou všechny její úkoly terminatejob v dokončeném stavu.
Služba Batch považuje úlohu bez úkolů za dokončené všechny její úkoly. 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 novou úlohu u vlastnosti onAllTasksComplete na a pak ji nastavit na *' až po dokončení přidávání úkolů do noaction terminatejob úlohy.
Naplánované úlohy
Plány úloh umožňují vytvářet 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 aktivní) a jak často se během naplánovaného období vytvářejí úlohy.
Úlohy
Úkol je jednotka výpočtu, která je přidružena k úloze. Běží na uzlu. Úkoly jsou přiřazeny k uzlu pro provádění 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 se nespouštěl v prostředí. Proto nemůže nativně využívat funkce shellu, jako například rozšíření proměnné prostředí (sem patří i
PATH). Abyste tyto funkce využili, musíte vyvolat prostředí na příkazovém řádku, například spuštěním příkazu nacmd.exeWindows uzlech nebo/bin/shv Linuxu:cmd /c MyTaskApplication.exe %MY_ENV_VAR%/bin/sh -c MyTaskApplication $MY_ENV_VARPokud vaše úkoly potřebují spustit aplikaci nebo skript, které nejsou v
PATHuzlu nebo v referenčních proměnných prostředí, vyvolejte shell explicitně 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 části Start task and Files and directories.
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í zjednodušené nasazení a správu verzí aplikací, které vaše úkoly spouštěny. Balíčky aplikací na úrovni úkolů jsou zvláště užitečné v prostředích sdíleného fondu, kde se různé úlohy spouštějí v jednom fondu a kde se fond po dokončení úlohy neodstraňuje. 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 jeho přidání do úlohy po dokončení, je 180 dnů. Dokončené úkoly se zachytává po dobu 7 dnů. Data pro úkoly, které nejsou dokončeny v rámci maximální doby života, nejsou přístupná.
Kromě úloh, které definujete pro provádění výpočtů na uzlu, poskytuje služba Batch také několik speciálních úloh:
- Spouštěcí úkol
- Úkol správce úloh
- Úkoly přípravy a uvolnění úloh
- Úkoly s více instancemi
- Závislosti úkolů
Spouštěcí ú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í. Úkol spuštění se spustí při každém spuštění uzlu tak dlouho, dokud zůstane ve fondu. To zahrnuje první přidání uzlu do fondu a restartování nebo opětovné spuštění z image.
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ů. Úkol spuštění poskytuje informace potřebné pro službu Batch ke konfiguraci nových uzlů a jejich připravení pro příjem úkolů.
Stejně jako u každého úkolu služby Azure Batch můžete také zadat seznam souborů prostředků ve službě Azure Storage (vedle příkazového řádku, který se má provést). Služba Batch nejprve zkopíruje soubory prostředků ze služby Azure Storage do uzlu a pak spustí příkazový řádek. U spouštěcího úkolu fondu obsahuje seznam souborů obvykle 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. Například příkazový řádek úkolu spuštění by mohl provést operaci kopírování souborů aplikace (které byly zadány jako soubory prostředků a staženy do uzlu) z pracovního adresáře úkolu spuštění do sdílené složky a pak spustit robocopy MSI nebo setup.exe .
Obvykle budete chtít, aby služba Batch před zvážením uzlu připraveného k přiřazení úkolů čekala na dokončení úkolu spuštění. Můžete ho ale podle potřeby nakonfigurovat jinak.
Pokud na výpočetním uzlu selže spouštěcí úkol, je stav tohoto uzlu aktualizován, aby odrážel selhání, a uzlu se nepřiřazují žádné úlohy. Spouštěcí úkol může selhat, jestliže se vyskytl problém s kopírováním jeho souborů prostředků z úložiště nebo pokud proces spuštěný pomocí jeho 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 tento komprimovaný archiv jako soubor prostředků pro 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. Nástroj, který použijete k rozbalení archivu, budete muset zahrnout jako soubor prostředků pro tento spouštěcí úkol.
Úkol správce úloh
Úkol správce úloh se obvykle používá k řízení nebo monitorování provádění úlohy. 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 se práce dokončila.
Úkol správce úloh však není omezen na tyto aktivity. Jedná se o úplný podrobnějším úkol, který může provádět všechny akce, které jsou pro úlohu nutné. Ú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:
- Je službou Batch automaticky odeslán jako úkol při vytvoření úlohy.
- Je naplánován ke spuštění před dalšími úkoly v rámci úlohy.
- Jeho přidružený uzel je poslední, který se odebere z fondu, když je fond zmenšován.
- Jeho ukončení může být vázáno na ukončení všech úkolů v úloze.
- Úkolu správce úloh je přiřazena nejvyšší priorita, když je nutné jej restartovat. Pokud není k dispozici nečinný uzel, může služba Batch ukončit jeden z ostatních spuštěných úkolů ve fondu, aby uvolnila prostor pro spuštění úkolu správce úloh.
- Úkol správce úloh v jedné úloze nemá přednost před úkoly jiných úloh. Mezi úlohami jsou dodržovány pouze priority s úrovní úlohy.
Úkoly přípravy a uvolnění úloh
Batch poskytuje úlohy přípravy úloh pro nastavení spuštění před úlohou a úlohy uvolnění úloh pro údržbu nebo čištění po úloze.
Úkol přípravy úlohy se spustí na všech výpočetních uzlech, které mají naplánované spouštění úkolů, před provedením jakékoli jiné úlohy úlohy. Úkol přípravy úlohy můžete například použít ke zkopírování dat, která jsou sdílena všemi úkoly, ale jsou jedinečná pro úlohu.
Po dokončení úlohy se na každém uzlu ve fondu, který spustil alespoň jeden úkol, spustí úkol uvolnění úlohy. Například úkol uvolnění úlohy může odstranit data, která byla zkopírována úlohou přípravy úlohy nebo může komprimovat a odeslat data protokolu diagnostiky.
Ú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í úkolů s více instancemi můžete povolit vysoce výkonné výpočetní scénáře, které vyžadují skupinu výpočetních uzlů, které jsou přiděleny společně pro zpracování jedné úlohy, jako je například rozhraní předávání zpráv (MPI).
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 úkolů
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.
Chcete-li použít tuto funkci, musíte nejprve Povolit závislosti úkolů na úloze služby 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:
- úkolb závisí na úloze a (úkolb se nespustí, dokud se nedokončí úkol ).
- Úkol C závisí na úkolu A i úkolu B.
- úkol závisí na řadě úkolů, například na úkolech 1 až 10, než se spustí.
další podrobnosti najdete v tématu závislosti úloh v Azure Batch a ukázka kódu TaskDependencies v úložišti Azure-Batch-samples GitHub.
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í proměnné prostředí, které můžete definovat pro vaše úkoly. Aplikace a skripty, které vaše úkoly spouště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ší podrobnosti najdete v tématu Přidání úlohy do operace úlohy (Batch REST) nebo vlastnosti CloudTask. EnvironmentSettings a vlastnosti cloudjob. CommonEnvironmentSettings v dávce .NET.
Vaše klientská aplikace nebo služba může získat službou i uživatelem definované proměnné prostředí úkolu pomocí operace Získat informace o úkolu (Batch REST) nebo přístupem k vlastnosti CloudTask.EnvironmentSettings (Batch .NET). 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).
V proměnných prostředí výpočetních uzlůnajdete seznam všech proměnných prostředí definovaných službou.
Další kroky
- Seznamte se se soubory a adresáři.