Feladatok és tevékenységek az Azure Batchben
Az Azure Batchben a tevékenységek a számítási egységeket jelölik. A feladatok ezeknek a feladatoknak a gyűjteményei. A feladatokról és feladatokról, valamint az Azure Batch-munkafolyamatokban való használatukról az alábbiakban olvashat bővebben.
Feladatok
A feladatok tevékenységek gyűjteményei. A feladatok határozzák meg, hogyan végezzék el a hozzájuk tartozó tevékenységek a számítási feladatokat a készlet számítási csomópontjaiban.
A feladat azt a készletet adja meg, amelyben a munkát futtatni szeretné. Az egyes feladatokhoz saját készletet hozhat létre, de egyetlen készletet is használhat több feladathoz. Létrehozhat készletet minden feladathoz, amely egy feladatütemezéshez van társítva, vagy egy készletet minden feladatütemezéshez társított feladathoz.
A feladatok prioritása
Opcionális feladatprioritást rendelhet a létrehozott feladatokhoz. A Batch szolgáltatás a feladat prioritási értékével határozza meg az ütemezés sorrendjét (a feladaton belüli összes tevékenységhez) az egyes készletekben.
Egy feladat prioritásának frissítéséhez hívja meg a Feladatművelet tulajdonságainak frissítését (Batch REST), vagy módosítsa a CloudJob.Priority (Batch .NET) szolgáltatást. A prioritási értékek -1000 (legalacsonyabb prioritás) és +1000 (legmagasabb prioritás) között mozognak.
Ugyanazon a készleten belül a magasabb prioritású feladatok ütemezési elsőbbséget élveznek az alacsonyabb prioritású feladatokkal szemben. A már futó, alacsonyabb prioritású feladatokban lévő tevékenységeket nem fogják előre beszúrni egy magasabb prioritású feladat tevékenységei. Az azonos prioritási szinttel rendelkező feladatoknak egyenlő esélyük van az ütemezésre, és a tevékenységek végrehajtásának sorrendje nincs meghatározva.
Az egyik készletben futó magas prioritású feladat nem befolyásolja a külön készletben vagy egy másik Batch-fiókban futó feladatok ütemezését. A feladat prioritása nem vonatkozik az automatikus várólistákra, amelyek a feladat elküldésekor jönnek létre.
Feladatmegkötések
A feladatok korlátozásai segítségével korlátokat szabhat a feladatokhoz:
- Beállíthatja a maximális valós időt, ami azt jelenti, hogy ha egy feladat az itt megadott időtartamnál hosszabban fut, a rendszer leállítja a feladatot és a hozzá tartozó összes tevékenységet.
- Megadhatja a tevékenység újrapróbálkozásának maximális számát kényszerként, beleértve azt is, hogy egy tevékenység mindig újrapróbálkozott-e, vagy soha ne próbálkozzon újra. A tevékenység újrapróbálkozása azt jelenti, hogy ha a feladat sikertelen, a rendszer újra lekérdezi a futtatást.
Feladatkezelői feladatok és automatikus leállítás
Tevékenységeket az ügyfélalkalmazás is adhat a feladatokhoz, vagy megadhat egy feladatkezelői tevékenységet is. A feladatkezelői tevékenységek tartalmazzák a feladatok tevékenységeinek létrehozásához szükséges információkat, és a készlet egyik számítási csomópontján futnak. A feladatkezelői feladatot kifejezetten a Batch kezeli; a feladat létrehozásakor a rendszer azonnal várólistára kerül, és sikertelenség esetén újraindul. A feladatütemezéssel létrehozott feladatokhoz feladatkezelői tevékenységre van szükség, mert csak így definiálhatók a feladatok a feladat példányosítása előtt.
Alapértelmezés szerint a feladatok akkor is aktív állapotban maradnak, ha már a hozzájuk tartozó összes tevékenység lefutott. Ezt módosíthatja, és beállíthatja, hogy a rendszer automatikusan megszüntesse a feladatot, amikor az ahhoz tartozó összes tevékenység befejeződött. Állítsa a feladat onAllTasksComplete tulajdonságát (OnAllTasksComplete a Batch .NET-ben) *'-ra terminatejob
, hogy automatikusan leállítsa a feladatot, ha az összes tevékenysége befejezett állapotban van.
A Batch szolgáltatás úgy tekinti, hogy a tevékenységek nélküli feladatok mindegyike befejeződött. Ezért ezt a funkciót általában egy feladatkezelői tevékenységgel használjuk. Ha automatikus feladatleállást szeretne használni feladatkezelő nélkül, először állítsa be egy új feladat OnAllTasksComplete tulajdonságát a *'-ranoaction
terminatejob
, majd csak azután, hogy befejezte a tevékenységek hozzáadását a feladathoz.
Ütemezett feladatok
A Feladatütemezéssel rendszeresen előforduló feladatokat ütemezhet a Batch szolgáltatásban. A feladatütemezés meghatározza, mikor fussanak a feladatok, és tartalmazza a futtatandó feladatok specifikációit. Megadhatja az ütemezés időtartamát (mennyi ideig és mikor lép érvénybe) és azt, hogy milyen gyakran jönnek létre feladatok az ütemezett időszakban.
Tevékenységek
A tevékenységek olyan számítási egységek, amelyek feladathoz vannak társítva, és egy csomóponton futnak. A tevékenységek egy csomóponthoz vannak társítva futtatáshoz, vagy a várólistán vannak, amíg egy csomópont szabaddá válik. Egyszerűen fogalmazva a tevékenységek egy vagy több programot vagy parancsfájlt futtatnak a számítási csomóponton, és ezzel elvégzik az Önnek szükséges feladatokat.
Amikor létrehozza a tevékenységet, a következőket kell megadnia:
A tevékenységhez tartozó parancssort. Ez a parancssor futtatja az alkalmazást vagy parancsfájlt a számítási csomóponton.
Fontos megjegyezni, hogy a parancssor nem rendszerhéj alatt fut. Így nem tudja natívan kihasználni a rendszerhéj előnyeit, például a környezeti változók értékének behelyettesítését (ide tartozik a
PATH
is). Az ilyen funkciók kihasználásához meg kell hívnia a rendszerhéjat a parancssorban, például Windows-csomópontokon vagy/bin/sh
Linuxon való indítássalcmd.exe
:cmd /c MyTaskApplication.exe %MY_ENV_VAR%
/bin/sh -c MyTaskApplication $MY_ENV_VAR
Ha a tevékenységeknek olyan alkalmazást vagy parancsfájlt is futtatniuk kell, amely nem tartozik a csomópont
PATH
- vagy referenciakörnyezet-változói közé, hívja meg explicit módon a rendszerhéját a feladat parancssorából.A feldolgozni kívánt adatokat tartalmazó erőforrásfájlok. Ezeket a fájlokat a rendszer automatikusan a csomópontra másolja egy Azure Storage-fiók Blob Storage-tárhelyéből, mielőtt végrehajtaná a tevékenység parancssorát. További információ: Feladat indítása, fájlok és könyvtárak.
Az alkalmazás számára szükséges környezeti változók. További információkért tekintse meg a tevékenységek környezeti beállításait.
Azok a korlátozások, amelyeken belül a tevékenység végrehajtható. Korlátozás például a maximális időtartam, ameddig a tevékenység futhat, a meghiúsult tevékenységek újrapróbálásának maximális száma, valamint a tevékenység munkakönyvtárában tárolt fájlok megőrzésének maximális ideje.
Az ütemezett tevékenység futtatására beállított számítási csomópontra üzembe helyezni kívánt alkalmazáscsomagok. Az alkalmazáscsomagok leegyszerűsítik a tevékenységek által futtatott alkalmazások üzembe helyezését és verziókezelését. A tevékenységszintű alkalmazáscsomagok különösen megosztott készletes környezetekben hasznosak, ahol a különböző feladatok egy készletben futnak, és a rendszer nem törli a készletet a feladat befejezésekor. Ha a feladatnál a készletben kevesebb a tevékenység, mint a csomópont, az alkalmazáscsomagok használatával csökkentheti az adatátviteli igényt, mivel így a rendszer csak azokon a csomópontokon helyezi üzembe az alkalmazást, amelyek ténylegesen futtatják a tevékenységeket.
Egy, a Docker Hubban vagy egy privát beállításjegyzékben található tárolórendszerkép-referencia és további beállítások egy olyan Docker-tároló létrehozásához, amelyben a feladatok a csomóponton futnak. Ezt az információt csak akkor kell meghatározni, ha a készlet tárolókonfigurációval van beállítva.
Feljegyzés
Egy tevékenység maximális élettartama 180 nap, amikor hozzáadják a feladathoz, és amikor befejeződik. A befejezett tevékenységek 7 napig megmaradnak; a maximális élettartamon belül nem befejezett tevékenységek adatai nem érhetők el.
A csomóponton történő számításhoz definiált feladatok mellett a Batch szolgáltatás több speciális feladatot is biztosít:
- Indítási tevékenység
- Feladatkezelő-tevékenység
- Feladat-előkészítési és -kiadási tevékenységek
- Többpéldányos feladatok
- Tevékenységfüggőségek
Indítási tevékenység
A készlethez társított indítási tevékenység segítségével előkészítheti a csomópontok működési környezetét. Elvégeztethet például különböző műveleteket, például a tevékenységek által futtatandó alkalmazások telepítését, illetve a háttérfolyamatok elindítását. A kezdő tevékenység minden alkalommal fut, amikor egy csomópont elindul, amíg a készletben marad. Ez magában foglalja a csomópont első hozzáadását a készlethez, illetve az újraindítást vagy az újraindulást.
Az indítási tevékenység elsődleges előnye, hogy tartalmazhatja a számítási csomópontok konfigurálásához szükséges, illetve a feladatok végrehajtásához szükséges alkalmazások telepítéséhez szükséges összes információt. Így a készletekben működő csomópontok számának növelése rendkívül egyszerű, csupán a csomópontok új tervezett számát kell meghatároznia. A kezdési feladat biztosítja az új csomópontok konfigurálásához és a feladatok elfogadásához szükséges információkat a Batch szolgáltatás számára.
Az Azure Batch-feladathoz hasonlóan az Azure Storage-ban is megadhatja az erőforrásfájlok listáját a végrehajtandó parancssor mellett. A Batch szolgáltatás először az erőforrásfájlokat másolja a csomópontra az Azure Storage-tárterületből, majd futtatja a megadott parancssort. A készletekhez tartozó indítási tevékenységek esetében a fájllista általában a tevékenységhez tartozó alkalmazást és annak függőségeit tartalmazza.
Ezeken felül azonban szerepelhetnek az indítási tevékenységben a számítási csomóponton futó összes tevékenység számára felhasználható referenciaadatok is. Az indítási tevékenység parancssora például egy robocopy
művelet elvégzésével képes az indítási feladat munkakönyvtárából a megosztott mappába másolni az alkalmazás fájljait (amelyeket erőforrásfájlokként definiált, és letöltött a csomópontra), majd lefuttatni egy MSI-fájlt vagy egy setup.exe
-t.
Általában azt szeretné, hogy a Batch szolgáltatás megvárja a kezdési tevékenység befejezését, mielőtt a csomópont készen áll a hozzárendelt tevékenységekre. Ezt azonban igény szerint másképpen konfigurálhatja.
Ha egy indítási tevékenység meghiúsul egy számítási csomóponton, akkor a csomópont állapota úgy frissül, hogy tükrözze a hibát, és a csomóponthoz nem lesz hozzárendelve egyetlen tevékenység sem. Az indítási tevékenység meghiúsulhat, ha hiba történik az erőforrásfájloknak a tárterületről való másolásakor, illetve ha a parancssor által futtatott folyamat nullától eltérő kilépési kódot ad vissza.
Amikor meglévő készlethez ad indítási tevékenységet, vagy ilyen készlethez tartozó tevékenységet frissít, újra kell indítania a számítási csomópontokat, hogy a rendszer az összes csomópontra alkalmazza az indítási tevékenységet.
Feljegyzés
A Batch korlátozza az indítási tevékenységek méretét, amibe az erőforrásfájlok és a környezeti változók is beletartoznak. Ha csökkentenie kell egy indítási tevékenység méretét, a következő két megoldás közül választhat:
Az alkalmazáscsomagok segítségével alkalmazások vagy adatok terjeszthetők a Batch-készlet összes csomópontján. Az alkalmazáscsomagokkal kapcsolatban további információkat a Batch-alkalmazáscsomagokkal számítási csomópontokra végzett alkalmazástelepítést ismertető cikkben talál.
Manuálisan is létrehozhatja az alkalmazások fájljait tartalmazó tömörített archívumot. Töltse fel a tömörített archívumot az Azure Storage-ba blobként. Adja meg a kezdő tevékenységhez erőforrásfájlként a ZIP-archívumot. A kezdő tevékenység parancssorának futtatása előtt csomagolja ki a parancssorból az archívumot.
Az archívum kibontásához használhatja az Ön által választott archiválási eszközt. Mellékelnie kell azt az eszközt, amellyel az archívumot kicsomagolja a kezdő tevékenység erőforrás-fájljaként.
Feladatkezelő tevékenység
A feladatvégrehajtás szabályozására és/vagy figyelésére általában egy feladatkezelői feladatot használ. A feladatkezelői feladatokat például gyakran használják a feladatok létrehozásához és elküldéséhez, a futtatandó további feladatok meghatározásához és a munka befejezésének meghatározásához.
A feladatkezelői tevékenység azonban más célokra is használható, Ez egy teljes körű feladat, amely képes elvégezni a feladathoz szükséges műveleteket. A feladatkezelői tevékenység például letöltheti a paraméterként meghatározott fájlt, elemezheti a fájl tartalmát, és további tevékenységeket küldhet el a tartalom alapján.
A rendszer minden más feladat előtt indítja el a feladatkezelői tevékenységeket. Ez a tevékenység a következő jellemzőkkel bír:
- A Batch szolgáltatás automatikusan küldi el ezeket tevékenységekként a feladat létrehozásakor.
- Úgy vannak ütemezve, hogy a feladatok más tevékenységei előtt fussanak.
- A hozzájuk társított csomópontot távolítja el a rendszer utoljára a készletből a készlet méretének csökkentésekor.
- A befejezésük a feladat összes tevékenységének befejezéséhez köthető.
- A feladatkezelői tevékenység a legmagasabb prioritást kapja, ha újra kell indítani. Ha egy tétlen csomópont nem érhető el, a Batch szolgáltatás leállíthatja valamelyik másik futó tevékenységet a készletben, hogy helyet szabadítson fel a feladatkezelői tevékenység futtatásához.
- Az egyik feladat feladatkezelő tevékenysége nem rendelkezik nagyobb prioritással, mint más feladatok tevékenységei. A feladatok között csak a feladatszintű prioritások érvényesek.
Feladat-előkészítési és -kiadási tevékenységek
A Batch feladat-előkészítési feladatokat biztosít a feladat-végrehajtás előtti beállításhoz, valamint a feladat kiadási feladatait a feladat utáni karbantartáshoz vagy karbantartáshoz.
A feladat-előkészítési tevékenység minden olyan számítási csomóponton fut, amely ütemezetten futtatja a feladatokat, mielőtt a többi feladat végrehajtása befejeződne. Egy feladat-előkészítési feladattal például másolhatja az összes tevékenység által megosztott, de a feladatra jellemző adatokat.
Ha egy feladat befejeződött, a feladatkiadási tevékenység a készlet minden csomópontján fut, amely legalább egy tevékenységet végrehajtott. Egy feladatkiadási tevékenység törölheti például a feladat-előkészítési tevékenység által másolt adatokat, vagy tömörítheti és feltöltheti a diagnosztikai napló adatait.
Mind a feladat-előkészítési, mind a feladatkiadási tevékenységeknél megadhat egy parancssort, amelyet futtatni szeretne a tevékenység meghívásakor. Ezek segítségével számos különböző funkciót érhet el, például fájlokat tölthet le, emelt jogosultsági szintű futtatást végezhet, egyéni környezeti változókat adhat meg, illetve beállíthatja a maximális végrehajtási időt, az újrapróbálások számát, illetve a fájlmegőrzési időt.
A feladatelőkészítési és -kiadási tevékenységekkel kapcsolatos további információért lásd: Feladat-előkészítési és -befejezési műveletek futtatása Azure Batch számítási csomópontokon.
Többpéldányos tevékenység
A többpéldányos tevékenységek olyan tevékenységek, amelyek több számítási csomóponton való egyidejű futtatásra vannak konfigurálva. Többpéldányos feladatok esetén olyan nagy teljesítményű számítási forgatókönyveket engedélyezhet, amelyekhez olyan számítási csomópontok egy csoportja van lefoglalva, amelyek egyetlen számítási feladat, például az Üzenetátadási felület (MPI) feldolgozásához vannak lefoglalva.
A Batch szolgáltatásban az MPI-feladatok Batch .NET-könyvtárral való futtatásának részletes leírásáért lásd: Use multi-instance tasks to run Message Passing Interface (MPI) applications in Azure Batch (Többpéldányos tevékenységek használata Message Passing Interface- (MPI-) alkalmazások futtatásához az Azure Batch szolgáltatásban).
Tevékenység függőségek
Ahogyan a név is jelzi, a tevékenységfüggőségek segítségével beállíthatja, hogy egy tevékenység végrehajtásához más tevékenységek előzetes befejezése legyen szükséges. Ez a funkció olyan helyzeteket támogat, amelyekben egy „alsóbb rétegbeli” tevékenység egy „felsőbb rétegbeli” tevékenység kimenetét használja, vagy amikor egy felsőbb rétegbeli tevékenység alsóbb rétegbeli tevékenység által igényelt inicializálást végez.
A funkció használatához először engedélyeznie kell a Batch-feladat tevékenységfüggőségeit . Ezután az egy másik (vagy sok másik) tevékenységtől függő mindegyik tevékenységhez meg kell adnia azokat a tevékenységeket, amelyektől függnek.
A tevékenységfüggőségekkel a következőkhöz hasonló forgatókönyveket konfigurálhat:
- A taskB a taskA tevékenységtől függ (a taskB végrehajtása nem kezdődik meg a taskA befejeződéséig).
- A taskC a taskA és a taskB tevékenységtől is függ.
- A taskD egy tevékenységtartománytól függ, például az 1 – 10. tevékenység befejeződéséig nem hajtja végre a rendszer.
További információ: Tevékenységfüggőségek az Azure Batchben és a TaskDependencies kódminta az Azure-batch-samples GitHub-adattárban.
Környezeti beállítások tevékenységekhez
A Batch-szolgáltatás által végrehajtott minden egyes feladat hozzáférhet azokhoz a környezeti változókhoz, amelyeket a számítási csomópontokon beállít. Ide tartoznak a Batch szolgáltatás által definiált környezeti változók és a tevékenységekhez definiálható egyéni környezeti változók. A tevékenységek által végrehajtott alkalmazások és szkriptek hozzáféréssel rendelkeznek ezekhez a környezeti változókhoz a végrehajtás során.
Az egyéni környezeti változókat a tevékenységek és a feladatok szintjén is megadhatja: ehhez töltse ki a kívánt elemek környezeti beállítások tulajdonságait. További információ: Feladat hozzáadása feladatművelethez (Batch REST) vagy CloudTask.EnvironmentSettings és CloudJob.CommonEnvironmentSettings tulajdonságok a Batch .NET-ben.
Az ügyfélalkalmazás vagy szolgáltatás a Get information about a task (Tevékenység információinak lekérése) művelet (Batch REST) segítségével, vagy a CloudTask.EnvironmentSettings tulajdonság (Batch .NET) elérésével képes beszerezni a tevékenység (szolgáltatás által meghatározott és egyéni) környezeti változóit. A számítási csomóponton végrehajtott folyamatok például a közismert %VARIABLE_NAME%
(Windows) vagy a $VARIABLE_NAME
(Linux) szintaxis segítségével képesek elérni ezeket és más környezeti változókat a csomóponton.
A számítási csomópont környezeti változóiban megtalálja a szolgáltatás által definiált környezeti változók listáját.