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:

  1. Létrehoz egy készletet két csomóponttal.
  2. Feladat létrehozása feladat-előkészítési, kiadási és standard tevékenységekkel.
  3. 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.
  4. Minden csomóponton futtat egy feladatot, amely a tevékenységazonosítóját ugyanarra a szövegfájlra írja.
  5. 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.
  6. A feladat kiadási feladatának futtatásával törli a fájlt a csomópontról a feladat befejezésekor.
  7. Kinyomtatja a feladat-előkészítési és kiadási feladatok kilépési kódját az egyes csomópontokhoz, amelyen futottak.
  8. 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.

Képernyőkép a feladat tevékenységének előrehaladásáról a Azure Portal.

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épernyőkép a feladatkiadási feladat tulajdonságairól a Azure Portal.

Következő lépések