Feladatok és tevékenységek az Azure Batchben

A Azure Batch 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 azok Azure Batch munkafolyamatokban való használatáró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. Minden feladathoz létrehozhat készletet, amely egy feladatütemezéshez van társítva, vagy egy készletet a feladatütemezéshez társított összes 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.

A feladatok prioritásának frissítéséhez hívja meg a Feladatművelet tulajdonságainak frissítése (Batch REST) vagy a CloudJob.Priority (Batch .NET) módosítását. 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. Az alacsonyabb prioritású feladatokban már futó feladatokat nem előzik meg a magasabb prioritású feladatok tevékenységei. Az azonos prioritási szinttel rendelkező feladatoknak egyenlő esélyük van az ütemezésre, és a feladat végrehajtásának sorrendje nincs meghatározva.

Az egyik készletben futó magas prioritású feladat nem befolyásolja a különálló készletben vagy egy másik Batch-fiókban futó feladatok ütemezését. A feladat prioritása nem vonatkozik az automatikus készletekre, 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éget mindig újrapróbálkoznak-e, vagy soha nem próbálkoznak újra. A tevékenység újrapróbálkozása azt jelenti, hogy ha a feladat meghiúsul, a rendszer újból 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ása után a rendszer várólistára kerül, és ha nem sikerül, újraindul. A feladatütemezés által létrehozott feladatokhoz feladatkezelői tevékenység szükséges, 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ítja a feladatot, ha az összes tevékenysége befejezett állapotban van.

A Batch szolgáltatás úgy tekint egy feladatra, hogy nincs tevékenység, és az összes tevékenysége befejeződött. Ezért ezt a funkciót általában egy feladatkezelői tevékenységgel használjuk. Ha automatikus feladatleállítást szeretne használni feladatkezelő nélkül, először állítsa be egy új feladat OnAllTasksComplete tulajdonságát a értékre noaction, majd csak azután, terminatejobhogy 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 (hogy mennyi ideig és mikor van érvényben az ütemezés), és hogy milyen gyakran jönnek létre feladatok az ütemezett időszakban.

Feladatok

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 cmd.exe Windows-csomópontokon vagy /bin/sh Linuxon:

    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örnyezeti beállítások tevékenységekhez.

  • 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.

Megjegyzés

Egy tevékenység maximális élettartama, attól kezdve, hogy mikor kerül a feladathoz, és mikor fejeződik be, 180 nap. A befejezett tevékenységek 7 napig megmaradnak; A maximális élettartamon belül nem elvégzett tevékenységek adatai nem érhetők el.

A csomóponton történő számításhoz definiált feladatok mellett számos speciális feladatot is biztosít a Batch szolgáltatás:

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 azt is, hogy a csomópont mikor kerül először a készletbe, és mikor indul újra vagy újra.

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 megadja a Batch szolgáltatáshoz szükséges információkat az új csomópontok konfigurálásához és a feladatok elfogadásához való felkészüléshez.

Ahogy a többi Azure Batch-tevékenységnél, itt is megadhatja az Azure Storage-tárterületen tárolt erőforrásfájlokat, illetve a futtatandó parancssort. 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. A start tevékenység parancssora például végrehajthat egy robocopy műveletet az alkalmazásfájlok (amelyek erőforrásfájlokként lettek megadva és a csomópontra lettek letöltve) a kezdő tevékenység munkakönyvtárából a megosztott mappába, majd futtasson egy MSI-t vagy setup.exe.

Általában azt szeretné, hogy a Batch szolgáltatás megvárja a kezdési feladat befejezését, mielőtt figyelembe venné, hogy a csomópont készen áll a tevékenységek hozzárendelésére. Ezt azonban igény szerint másként is 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.

Megjegyzé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:

  1. 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.

  2. 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

Általában feladatkezelői feladatokat használ a feladatok végrehajtásának vezérlésére és/vagy figyelésére. A feladatkezelői feladatokat például gyakran használják a feladatok tevékenységeinek létrehozására és elküldésére, a futtatandó további tevékenységek meghatározására és a munka befejezésének meghatározására.

A feladatkezelői tevékenység azonban más célokra is használható, Ez egy teljes értékű feladat, amely képes végrehajtani 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 feladatkiadási feladatokat 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 lefut, amely tevékenységek futtatására van ütemezve a többi feladat végrehajtása előtt. Egy feladat-előkészítési feladattal például másolhatja az összes tevékenység által megosztott, de a feladat egyedi adatait.

Ha egy feladat befejeződött, a feladatkiadási tevékenység a készlet minden olyan 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óadatokat.

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. A többpéldányos feladatok lehetővé teszik olyan nagy teljesítményű számítási forgatókönyvek engedélyezését, amelyekhez egy számítási csomópontok egy csoportja van lefoglalva egyetlen számítási feladat, például az Üzenetátadási felület (MPI) feldolgozásához.

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égfüggőségek

A tevékenységfüggőségek, ahogy a neve is mutatja, lehetővé teszik annak megadását, hogy egy tevékenység más tevékenységek befejezésétől függ a végrehajtás előtt. 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 tevékenységfüggőségeket a Batch-feladatban. 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 taskBa taskA-tól függ (a taskB csak akkor kezdi meg a végrehajtást, ha a taskA befejeződött).
  • A taskC a taskA és a taskB függvénytől is függ.
  • A taskD egy tevékenységtartománytól függ, például az 110. tevékenység befejeződéséig nem hajtja végre a rendszer.

További részletekért lásd: Tevékenységfüggőségek az Azure Batch-ban é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 részletekért lásd: 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 szolgáltatás által definiált környezeti változók listáját a Számítási csomópont környezeti változói között találja.

Következő lépések