Feladat-előkészítési és kiadási tevékenységek Batch számítási csomópontokon
A Azure Batch feladatok végrehajtása előtt gyakran be kell állítani a beállításokat, és a feladatok befejezésekor karbantartást kell végezni. Előfordulhat például, hogy le kell töltenie a gyakori feladatbeviteli adatokat a számítási csomópontokra, vagy a feladat befejezése után fel kell töltenie a feladat kimeneti adatait az Azure Storage-ba. Ezekhez a műveletekhez feladat-előkészítési és feladatkiadási feladatokat használhat.
- A feladat-előkészítési tevékenységek a feladat tevékenységei előtt futnak az összes olyan számítási csomóponton, amely legalább egy tevékenység futtatására van ütemezve.
- A feladatkiadási tevékenység a feladat befejezése után fut a készlet minden olyan csomópontján, amely feladat-előkészítési feladatot futtatott.
A többi Batch-tevékenységhez hasonlóan megadhat egy parancssort is, amely meghívható egy feladat-előkészítési vagy kiadási feladat futtatásakor. A feladat-előkészítési és kiadási tevékenységek ismerős Batch-feladatfunkciókkal rendelkeznek, például:
- Erőforrásfájl letöltése.
- Emelt szintű végrehajtás.
- Egyéni környezeti változók.
- Maximális végrehajtási időtartam.
- Újrapróbálkozás száma.
- Fájlmegőrzési idő.
Ez a cikk bemutatja, hogyan használhatja a JobPreparationTask és a JobReleaseTask osztályt a Batch .NET-kódtárban .
Tipp
A feladat-előkészítési és kiadási feladatok különösen hasznosak a megosztott készletkörnyezetekben , ahol a számítási csomópontok készlete megmarad a feladatfuttatások között, és számos feladat használja.
Használati esetek feladat-előkészítési és kiadási feladatokhoz
A feladat-előkészítési és a feladatkiadási feladatok a következő forgatókönyvekhez megfelelőek:
Töltse le a gyakori feladatadatokat. A Batch-feladatokhoz gyakran közös adatkészletre van szükség a feladat tevékenységeinek bemeneteként. A feladat-előkészítési feladatokkal letöltheti ezeket az adatokat minden csomópontra a feladat egyéb tevékenységeinek végrehajtása előtt.
A napi kockázatelemzési számításokban például a piaci adatok feladatspecifikusak, mégis gyakoriak a feladat összes tevékenységében. Feladat-előkészítési feladat használatával letöltheti ezeket a gyakran több gigabájt méretű piaci adatokat az egyes számítási csomópontokra, hogy a csomóponton futó összes tevékenység használhassa azokat.
Feladat és tevékenység kimenetének törlése. Olyan megosztott készletkörnyezetben, ahol a készlet számítási csomópontjai nem leszerelhetők a feladatok között, előfordulhat, hogy törölnie kell a feladatok adatait a futtatások között. Előfordulhat például, hogy lemezterületet kell felszabadítania a csomópontokon, vagy meg kell felelnie a szervezet biztonsági szabályzatainak. A feladatkiadási tevékenység használatával törölheti azokat az adatokat, amelyeket egy feladat-előkészítési feladat töltött le, vagy amelyeket a feladat végrehajtása hozott létre.
Naplók megőrzése. Érdemes lehet megőrizni a tevékenységek által létrehozott naplófájlok másolatát, vagy a sikertelen alkalmazások által létrehozott összeomlási memóriaképfájlokat. A feladatkiadási feladatokkal tömörítheti és feltöltheti ezeket az adatokat egy Azure Storage-fiókba.
Feladat-előkészítési feladat
A feladattevékenységek futtatása előtt a Batch minden olyan számítási csomóponton futtatja a feladat-előkészítési feladatot, amely egy tevékenység futtatására van ütemezve. Alapértelmezés szerint a Batch megvárja, amíg a feladat-előkészítési tevékenység befejeződik az ütemezett feladattevékenységek futtatása előtt, de konfigurálhatja úgy, hogy ne várjon.
Ha a csomópont újraindul, a feladat-előkészítési feladat újra fut, de ezt a viselkedést is letilthatja. Ha rendelkezik feladat-előkészítési és feladatkezelői tevékenységgel, a feladat-előkészítési tevékenység a feladatkezelő tevékenység előtt és az összes többi tevékenység előtt fut. A feladat-előkészítési feladat mindig először fut.
A feladat-előkészítési tevékenység csak a tevékenység futtatására ütemezett csomópontokon fut. Ez a viselkedés megakadályozza a szükségtelen futtatásokat olyan csomópontokon, amelyekhez nincs hozzárendelve tevékenység. Előfordulhat, hogy a csomópontok nem rendelhetők hozzá tevékenységekhez, ha a feladattevékenységek száma kisebb, mint a készletben lévő csomópontok száma. Ez a viselkedés akkor is érvényes, ha az egyidejű feladat-végrehajtás engedélyezve van, ami bizonyos csomópontokat tétlenül hagy, ha a tevékenységek száma alacsonyabb, mint az összes lehetséges egyidejű tevékenység.
Megjegyzés
A JobPreparationTask különbözik a CloudPool.StartTask-tól , amely JobPreparationTask
az egyes feladatok elején fut, míg StartTask
a futtatás csak akkor történik meg, ha egy számítási csomópont először csatlakozik egy készlethez vagy újraindul.
Feladatkiadási feladat
Miután befejezettként jelölt meg egy feladatot, a feladatkiadási tevékenység a készlet azon csomópontjaikon fut, amelyek feladat-előkészítési feladatot futtattak. A feladatokat befejezettként jelölheti meg egy leállítási kérelem kiadásával. Ez a kérés leállítja a feladat állapotát, leállítja a feladathoz társított aktív vagy futó tevékenységeket, és futtatja a feladat kiadási feladatát. A feladat ezután a befejezett állapotba kerül.
Megjegyzés
A feladat törlése a feladat kiadási feladatát is végrehajtja. Ha azonban egy feladat már le van állítva, a kiadási feladat nem fut másodszor, ha a feladatot később törlik.
A feladatkiadási feladatok legfeljebb 15 percig futhatnak, mielőtt a Batch szolgáltatás leállítja őket. További információkért tekintse meg a REST API referenciadokumentációját.
Feladat-előkészítési és kiadási tevékenységek a Batch .NET-tel
Feladat-előkészítési feladat futtatásához rendeljen hozzá egy JobPreparationTask objektumot a feladat CloudJob.JobPreparationTask tulajdonságához. Hasonlóképpen, egy feladatkiadási feladat használatához inicializáljon egy JobReleaseTaskot , és rendelje hozzá a feladat CloudJob.JobReleaseTaskjához.
A következő kódrészletben myBatchClient
a BatchClient egy példánya, és myPool
egy meglévő készlet a Batch-fiókon belül.
// Create the CloudJob for CloudPool "myPool"
CloudJob myJob =
myBatchClient.JobOperations.CreateJob(
"JobPrepReleaseSampleJob",
new PoolInformation() { PoolId = "myPool" });
// Specify the command lines for the job preparation and release tasks
string jobPrepCmdLine =
"cmd /c echo %AZ_BATCH_NODE_ID% > %AZ_BATCH_NODE_SHARED_DIR%\\shared_file.txt";
string jobReleaseCmdLine =
"cmd /c del %AZ_BATCH_NODE_SHARED_DIR%\\shared_file.txt";
// Assign the job preparation task to the job
myJob.JobPreparationTask =
new JobPreparationTask { CommandLine = jobPrepCmdLine };
// Assign the job release task to the job
myJob.JobReleaseTask =
new JobReleaseTask { CommandLine = jobReleaseCmdLine };
await myJob.CommitAsync();
A feladatkiadási feladat egy feladat leállásakor vagy törlésekor fut. A feladatokat a JobOperations.TerminateJobAsync paranccsal szüntetheti meg, és a JobOperations.DeleteJobAsync paranccsal törölhet egy feladatot. A feladatokat általában a tevékenységek befejezésekor vagy az Ön által megadott időtúllépés elérésekor szünteti meg vagy törli.
// Terminate the job to mark it as completed. Terminate initiates the
// job release task on any node that ran job tasks. Note that the
// job release task also runs when a job is deleted, so you don't
// have to call Terminate if you delete jobs after task completion.
await myBatchClient.JobOperations.TerminateJobAsync("JobPrepReleaseSampleJob");
Kódminta a GitHubon
A feladatok előkészítésének és kiadásának működés közbeni megtekintéséhez hozza létre és futtassa a JobPrepRelease mintaprojektet a GitHubról. Ez a konzolalkalmazás a következő műveleteket hajtja végre:
- Létrehoz egy készletet két csomóponttal.
- Feladat létrehozása feladat-előkészítési, kiadási és standard tevékenységekkel.
- Futtatja a feladat-előkészítési feladatot, amely először egy csomópont megosztott könyvtárában lévő szövegfájlba írja a csomópont azonosítóját.
- Minden csomóponton futtat egy feladatot, amely a tevékenységazonosítóját ugyanarra a szövegfájlra írja.
- Az összes feladat befejezése vagy az időtúllépés elérése után kinyomtatja az egyes csomópontok szövegfájljainak tartalmát a konzolra.
- A feladat kiadási feladatának futtatásával törli a fájlt a csomópontról a feladat befejezésekor.
- Kinyomtatja a feladat-előkészítési és kiadási feladatok kilépési kódját az egyes csomópontokhoz, amelyen futottak.
- Szünetelteti a végrehajtást a feladat és/vagy készlet törlésének megerősítéséhez.
A mintaalkalmazás kimenete az alábbi példához hasonló:
Attempting to create pool: JobPrepReleaseSamplePool
Created pool JobPrepReleaseSamplePool with 2 nodes
Checking for existing job JobPrepReleaseSampleJob...
Job JobPrepReleaseSampleJob not found, creating...
Submitting tasks and awaiting completion...
All tasks completed.
Contents of shared\job_prep_and_release.txt on tvm-2434664350_1-20160623t173951z:
-------------------------------------------
tvm-2434664350_1-20160623t173951z tasks:
task001
task004
task005
task006
Contents of shared\job_prep_and_release.txt on tvm-2434664350_2-20160623t173951z:
-------------------------------------------
tvm-2434664350_2-20160623t173951z tasks:
task008
task002
task003
task007
Waiting for job JobPrepReleaseSampleJob to reach state Completed
...
tvm-2434664350_1-20160623t173951z:
Prep task exit code: 0
Release task exit code: 0
tvm-2434664350_2-20160623t173951z:
Prep task exit code: 0
Release task exit code: 0
Delete job? [yes] no
yes
Delete pool? [yes] no
yes
Sample complete, hit ENTER to exit...
Megjegyzés
Az új készlet csomópontjainak eltérő létrehozási és kezdési időpontjai azt jelentik, hogy egyes csomópontok készen állnak a feladatokra mások előtt, így eltérő kimenet jelenhet meg. Pontosabban, mivel a tevékenységek gyorsan befejeződnek, a készlet egyik csomópontja futtathatja a feladat összes feladatát. Ha ez történik, a feladat-előkészítési és kiadási tevékenységek nem léteznek azokhoz a csomópontokhoz, amelyek nem futtattak tevékenységeket.
Feladat-előkészítési és kiadási tevékenységek megtekintése a Azure Portal
A Azure Portal használatával megtekintheti a Batch-feladat tulajdonságait és tevékenységeit, beleértve a feladat-előkészítési és kiadási tevékenységeket. A Batch-fiók lapján válassza a Bal oldali navigációs sáv Feladatok elemét, majd válasszon ki egy feladatot. Ha a mintaalkalmazást futtatja, lépjen a feladat lapjára a tevékenységek befejezése után, de a feladat és a készlet törlése előtt.
A feladatok előrehaladását és állapotát a Feladat áttekintése vagy a Feladatok lapon található Hozzávetőleges tevékenységek száma lehetőség kibontásával figyelheti.
Az alábbi képernyőképen a JobPrepReleaseSampleJob oldal látható a mintaalkalmazás futtatása után. Ez a feladat előkészítési és kiadási feladatokat tartalmazott, így a bal oldali navigációs sávon kiválaszthatja az Előkészítési tevékenységek vagy a Tevékenységek kiadása lehetőséget a tulajdonságaik megtekintéséhez.
Következő lépések
- További információ a feladatok és tevékenységek hibaellenőrzéséről.
- Megtudhatja, hogyan használhat alkalmazáscsomagokat a Batch számítási csomópontok feladatvégrehajtásra való előkészítéséhez.
- Megismerheti az adatok és alkalmazások Batch számítási csomópontokra történő másolásának különböző módjait.
- Ismerje meg, hogyan őrizheti meg a naplókat és a feladat- és tevékenységkimeneti adatokat a Azure Batch Fájlkonvenciók tár használatával.