Feladat-előkészítési és kiadási feladatok a Batch számítási csomópontokon

Az Azure Batch-feladatok végrehajtása előtt gyakran szükséges a beállítás, illetve a feladatok végrehajtása után a karbantartás. Előfordulhat például, hogy le kell töltenie a feladat bemeneti adatait a számítási csomópontokra, vagy fel kell töltenie a feladat kimeneti adatait az Azure Storage-ba a feladat befejezése után. 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ég a feladat tevékenységei előtt fut az összes olyan számítási csomóponton, amely legalább egy tevékenység futtatására van ütemezve.
  • A feladatkiadási feladat akkor fut, miután a feladat befejeződött, a készlet minden olyan csomópontján, amelyen futott feladat-előkészítési feladat.

A többi Batch-tevékenységhez hasonlóan megadhat egy parancssort is, amelyet 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 feladatok ismerős Batch-feladatfunkciókkal rendelkeznek, például:

  • Erőforrásfájl letöltése.
  • Magasabb 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álható a BatchJobPreparationTask és BatchJobReleaseTask osztály a Azure. Compute.Batch könyvtár.

Jótanács

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 feladat-kiadási feladatok a következő forgatókönyvekhez megfelelőek:

  • Töltse le a gyakori feladatadatokat. A Batch-feladatok gyakran megkövetelik a feladatok tevékenységeinek bemeneteként használt adatok közös készletét. A feladat-előkészítési feladatokkal ezeket az adatokat minden csomópontra letöltheti a feladat egyéb feladatainak 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. A feladat-előkészítési feladat segítségével 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ó tevékenységek használhassák 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 feladatadatokat a futtatások között. Előfordulhat például, hogy lemezterületet kell megőriznie a csomópontokon, vagy meg kell felelnie a szervezet biztonsági szabályzatainak. Feladat-kiadási tevékenység használatával törölheti azokat az adatokat, amelyeket egy feladat-előkészítési tevékenység letöltött vagy létrehozott.

  • Naplók megőrzése. Előfordulhat, hogy meg szeretné őrizni a feladatok által létrehozott naplófájlok másolatát, vagy a sikertelen alkalmazások által létrehozott hibaelhárítási fá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 feladat befejeződik, mielőtt ütemezett feladatokat futtat, de konfigurálhatja, hogy ne várjon.

Ha a csomópont újraindul, a feladat-előkészítési feladat újra fut, de letilthatja ezt a viselkedést is. Ha van egy munkafeladat előkészítési feladata és egy munkakezelő feladata, az előkészítési feladat a munkakezelő feladat előtt fut le, és megelőzi az összes többi feladatot. A feladatelőkészítés mindig először fut.

A feladat-előkészítési tevékenység csak olyan csomópontokon fut, amelyek ütemezve vannak egy tevékenység futtatására. 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 lesznek hozzárendelve 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ű tevékenységvégrehajtás engedélyezve van, ami miatt egyes csomópontok tétlenek maradnak, ha a tevékenységek száma alacsonyabb, mint a teljes lehetséges egyidejű tevékenység.

Megjegyzés:

A BatchJobPreparationTask eltér a BatchPool.StartTask-tól , amely BatchJobPreparationTask az egyes feladatok elején fut, míg StartTask csak akkor fut, ha egy számítási csomópont először csatlakozik egy készlethez vagy újraindul.

Feladat kiadási feladata

Miután megjelöl egy feladatot befejezettként, a feladatkiadó feladat lefut minden csomóponton a készletben, amely feladat-előkészítési feladatot futtatott. Egy feladatot befejezettként jelölhet 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ásodik alkalommal, 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 feladatfelszabadítási feladatok az Azure.Compute.Batch szolgáltatásban

Feladat-előkészítési feladat futtatásához rendeljen hozzá egy BatchJobPreparationTask objektumot a feladat BatchJobCreateOptions.JobPreparationTask tulajdonságához. Hasonlóképpen, egy feladatfelszabadítási feladat használatához inicializáljon egy BatchJobReleaseTask objektumot, majd rendelje azt hozzá a feladat BatchJobCreateOptions.JobReleaseTask tulajdonságához.

A következő kódrészletben a myBatchClient egy példány a BatchClient, és a myPool egy meglévő készlet a Batch-fiókon belül.

// 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";

// Build the job create content for BatchPool "myPool" with preparation and
// release tasks attached.
BatchJobCreateOptions jobContent = new BatchJobCreateOptions(
    "JobPrepReleaseSampleJob",
    new BatchPoolInfo { PoolId = "myPool" })
{
    JobPreparationTask = new BatchJobPreparationTask(jobPrepCmdLine),
    JobReleaseTask = new BatchJobReleaseTask(jobReleaseCmdLine)
};

await myBatchClient.CreateJobAsync(jobContent);

A feladat kiadási feladata egy feladat leállásakor vagy törlésekor fut. Egy feladatot a BatchClient.TerminateJobAsync használatával fejezhet be, és a BatchClient.DeleteJobAsync használatával 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.TerminateJobAsync(WaitUntil.Completed, "JobPrepReleaseSampleJob");

Kódminta a GitHubon

Ha működés közben szeretné megtekinteni a feladatok előkészítését és kiadását, 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ét csomópontot tartalmazó medencét.
  2. Feladat létrehozása feladatelőkészítéssel, kiadással és standard feladatokkal.
  3. Futtatja a feladat-előkészítési feladatot, amely először egy szövegfájlba írja a csomópont azonosítóját egy csomópont megosztott könyvtárában.
  4. Minden csomóponton futtat egy feladatot, amely a feladatazonosítóját ugyanarra a szövegfájlra írja.
  5. Az összes feladat elvégzése vagy az időtúllépés elérése után az egyes csomópontok szövegfájljainak tartalmát a konzolra nyomtatja.
  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ódjait az egyes futtatott csomópontokhoz.
  8. Szünetelteti a végrehajtást a feladat és/vagy a készlet törlésének megerősítéséhez.

A mintaalkalmazás kimenete a következő 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 feladatok gyorsan befejeződnek, a fürt egyik csomópontja futtathatja a munka összes tevékenységét. Ha ez történik, a feladat-előkészítési és kiadási tevékenységek nem léteznek azon csomópont esetében, amely nem futtatott tevékenységeket.

Feladat-előkészítési és kiadási feladatok megtekintése az Azure Portalon

Az Azure Portalon megtekintheti a Batch-feladat tulajdonságait és tevékenységeit, beleértve a feladat-előkészítési és kiadási feladatokat. A Batch-fiók lapján válassza a Feladatok lehetőséget a bal oldali navigációs sávon, majd válasszon ki egy feladatot. Ha futtatja a mintaalkalmazást, lépjen a feladat oldalára a tevékenységek befejezése után, de a feladat és a csoport törlése előtt.

A feladatok előrehaladásának és állapotának monitorozásához bontsa ki a Hozzávetőleges tevékenységek számát a feladat áttekintése vagy a Feladatok lapon.

Képernyőkép a feladatok előrehaladásáról az Azure Portalon.

Az alábbi képernyőképen a JobPrepReleaseSampleJob lap látható a mintaalkalmazás futtatása után. Ebben a feladatban előkészítési és kiadási tevékenységek voltak, így a bal oldali navigációs sávon kiválaszthatja az Előkészítési vagya Kiadási feladatokat a tulajdonságaik megtekintéséhez.

Képernyőkép a feladatkiadási feladat tulajdonságairól az Azure Portalon.

Következő lépések