Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een Azure Batch-taak vereist vaak setup voordat de taken worden uitgevoerd en onderhoud na de taak wanneer de taken zijn voltooid. U moet bijvoorbeeld algemene taakinvoergegevens downloaden naar uw rekenknooppunten of taakuitvoergegevens uploaden naar Azure Storage nadat de taak is voltooid. U kunt jobvoorbereiding en jobrelease taken voor deze bewerkingen gebruiken.
- Een taakvoorbereidingstaak wordt uitgevoerd vóór de taken van een taak, op alle rekenknooppunten die zijn gepland om ten minste één taak uit te voeren.
- Een jobreleasetaak wordt uitgevoerd zodra de taak is voltooid, op elk knooppunt in de pool waarop een jobvoorbereidingstaak is uitgevoerd.
Net als bij andere Batch-taken kunt u een opdrachtregel opgeven die moet worden aangeroepen wanneer een jobvoorbereiding of releasetaak wordt uitgevoerd. Jobvoorbereidings- en releasetaken bieden vertrouwde Batch-taakfuncties zoals:
- Bronbestand downloaden.
- Uitvoering met verhoogde bevoegdheid.
- Aangepaste omgevingsvariabelen.
- Maximale uitvoeringsduur.
- Aantal nieuwe pogingen.
- Bewaartijd voor bestanden.
In dit artikel wordt beschreven hoe u de klassen JobPreparationTask en JobReleaseTask gebruikt in de Batch .NET-bibliotheek .
Hint
Jobvoorbereidings- en releasetaken zijn met name handig in omgevingen met gedeelde pools, waarin een pool rekenknooppunten tussen taakuitvoeringen blijft bestaan en door veel taken wordt gebruikt.
Gebruiksvoorbeelden voor jobvoorbereidings- en releasetaken
Jobvoorbereidings- en jobreleasetaken zijn geschikt voor de volgende scenario's:
Algemene taakgegevens downloaden. Batchprocessen vereisen vaak een gemeenschappelijke set gegevens als invoer voor de taken. U kunt een taakvoorbereidingstaak gebruiken om deze gegevens naar elk knooppunt te downloaden voordat de andere taken van de taak worden uitgevoerd.
In dagelijkse berekeningen van risicoanalyses zijn marktgegevens bijvoorbeeld taakspecifiek, maar wel gebruikelijk voor alle taken in de taak. U kunt een taakvoorbereidingstaak gebruiken om deze marktgegevens, die vaak meerdere gigabytes groot zijn, te downloaden naar elk rekenknooppunt, zodat elke taak die op het knooppunt wordt uitgevoerd, deze kan gebruiken.
Taak- en taakuitvoer verwijderen. In een omgeving met gedeelde pools, waarbij de rekenknooppunten van een pool niet buiten gebruik worden gesteld tussen taken, moet u mogelijk taakgegevens tussen uitvoeringen verwijderen. U moet bijvoorbeeld schijfruimte besparen op de knooppunten of voldoen aan het beveiligingsbeleid van uw organisatie. U kunt een taakvrijgavetaken gebruiken om gegevens te verwijderen die door taakvoorbereiding zijn gedownload of die door taakuitvoering zijn gegenereerd.
Logboeken behouden. Mogelijk wilt u een kopie van logboekbestanden bewaren die door uw taken worden gegenereerd of crashdumpbestanden die mislukte toepassingen genereren. U kunt een taak voor taakrelease gebruiken om deze gegevens te comprimeren en te uploaden naar een Azure Storage-account.
Jobvoorbereidingstaak
Voordat taaktaken worden uitgevoerd, voert Batch de taakvoorbereidingstaak uit op elk rekenknooppunt dat is gepland om een taak uit te voeren. Batch wacht standaard tot de taakvoorbereidingstaak is voltooid voordat geplande taaktaken worden uitgevoerd, maar u kunt deze niet configureren om te wachten.
Als het knooppunt opnieuw wordt opgestart, wordt de jobvoorbereidingstaak opnieuw uitgevoerd, maar kunt u dit gedrag ook uitschakelen. Als u een taak hebt met een voorbereidingstaak en een managingstaak, wordt de voorbereidingstaak uitgevoerd vóór de managingstaak en vóór alle andere taken. De taakvoorbereidingstaak wordt altijd eerst uitgevoerd.
De taakvoorbereidingstaak wordt alleen uitgevoerd op knooppunten die zijn gepland om een taak uit te voeren. Dit gedrag voorkomt onnodige uitvoeringen op knooppunten waaraan geen taken zijn toegewezen. Knooppunten worden mogelijk geen taken toegewezen wanneer het aantal taaktaken kleiner is dan het aantal knooppunten in de pool. Dit gedrag is ook van toepassing wanneer gelijktijdige taakuitvoering is ingeschakeld, waardoor sommige knooppunten inactief blijven als het aantal taken lager is dan het totale aantal gelijktijdige taken.
Opmerking
JobPreparationTask verschilt van CloudPool.StartTask in die JobPreparationTask wordt uitgevoerd aan het begin van elke taak, terwijl StartTask deze alleen wordt uitgevoerd wanneer een rekenknooppunt voor het eerst lid wordt van een pool of opnieuw wordt opgestart.
Taak voor vrijgave van taken
Zodra u een taak als voltooid markeert, wordt de taak voor vrijgave van de taak uitgevoerd op elk knooppunt in de pool waarop een taakvoorbereidingstaak is uitgevoerd. U markeert een taak als voltooid door een beëindigingsaanvraag uit te geven. Met deze aanvraag stelt u de jobstatus in op afsluiten, beëindigt u alle actieve of lopende taken die aan de job zijn gekoppeld en voert u de vrijgavetaak van de job uit. De taak wordt vervolgens verplaatst naar de voltooide status.
Opmerking
Bij het verwijderen van een job wordt ook de release van de job uitgevoerd. Als een taak echter al is beëindigd, wordt de releasetaak niet een tweede keer uitgevoerd als de taak later wordt verwijderd.
Taakreleasetaken kunnen maximaal 15 minuten worden uitgevoerd voordat de Batch-service ze beëindigt. Zie de naslagdocumentatie voor de REST API voor meer informatie.
Jobvoorbereidings- en releasetaken met Batch .NET
Als u een taakvoorbereidingstaak wilt uitvoeren, wijst u een JobPreparationTask-object toe aan de eigenschap CloudJob.JobPreparationTask van uw taak. Als u een job release-taak wilt gebruiken, initialiseert u een JobReleaseTask en wijst u deze toe aan de CloudJob.JobReleaseTask van uw job.
In het volgende codefragment myBatchClient is dit een exemplaar van BatchClient en myPool is dit een bestaande pool binnen het Batch-account.
// 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();
De jobreleasetaak wordt uitgevoerd wanneer een taak wordt beëindigd of verwijderd. U beëindigt een taak met behulp van JobOperations.TerminateJobAsync en verwijdert een taak met behulp van JobOperations.DeleteJobAsync. Meestal beëindigt of verwijdert u een taak wanneer de taken zijn voltooid of wanneer een time-out die u definieert, is bereikt.
// 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");
Codevoorbeeld op GitHub
Als u taakvoorbereidings- en releasetaken in actie wilt zien, bouwt en voert u het JobPrepRelease-voorbeeldproject uit vanuit GitHub. Deze consoletoepassing voert de volgende acties uit:
- Hiermee maakt u een pool met twee knooppunten.
- Hiermee maakt u een opdracht met jobvoorbereiding, uitvoering en standaardtaken.
- Hiermee wordt de taakvoorbereidingstaak uitgevoerd, die eerst de knooppunt-id naar een tekstbestand in de gedeelde map van een knooppunt schrijft.
- Voert een taak uit op elk knooppunt dat de taak-id naar hetzelfde tekstbestand schrijft.
- Zodra alle taken zijn voltooid of de time-out is bereikt, wordt de inhoud van het tekstbestand van elk knooppunt naar de console afgedrukt.
- Hiermee wordt de jobreleasetaak uitgevoerd om het bestand te verwijderen uit het knooppunt wanneer de taak is voltooid.
- Hiermee worden de afsluitcodes van de taakvoorbereidings- en releasetaken afgedrukt voor elk knooppunt waarop ze zijn uitgevoerd.
- Onderbreekt de uitvoering om bevestiging van taak- en/of poolverwijdering toe te staan.
De uitvoer van de voorbeeldtoepassing is vergelijkbaar met het volgende voorbeeld:
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...
Opmerking
De verschillende aanmaak- en begintijden van knooppunten in een nieuwe pool betekent dat sommige knooppunten gereed zijn voor taken voordat anderen, zodat u mogelijk andere uitvoer ziet. Omdat de taken snel zijn voltooid, kan een van de knooppunten van de pool alle taken van de taak uitvoeren. Als dit gebeurt, bestaan de taakvoorbereidings- en releasetaken niet voor het knooppunt waarop geen taken zijn uitgevoerd.
Taakvoorbereidings- en releasetaken weergeven in Azure Portal
U kunt Azure Portal gebruiken om eigenschappen en taken van Batch-taken weer te geven, waaronder jobvoorbereidings- en releasetaken. Selecteer taken in de linkernavigatiebalk van uw Batch-account en selecteer vervolgens een taak. Als u de voorbeeldtoepassing uitvoert, gaat u naar de taakpagina nadat de taken zijn voltooid, maar voordat u de taak en pool verwijdert.
U kunt de voortgang en status van de taak controleren door het aantal geschatte taken uit te vouwen op de pagina Taakoverzicht of Taken .
In de volgende schermopname ziet u de pagina JobPrepReleaseSampleJob nadat de voorbeeldtoepassing is uitgevoerd. Deze taak had voorbereidings- en releasetaken, zodat u Voorbereidingstaken of Release-taken in het linkernavigatievenster kunt selecteren om de eigenschappen ervan te bekijken.
Volgende stappen
- Meer informatie over foutcontrole voor opdrachten en taken.
- Meer informatie over het gebruik van toepassingspakketten om Batch-rekenknooppunten voor te bereiden voor taakuitvoering.
- Verken verschillende manieren om gegevens en toepassingen te kopiëren naar Batch-rekenknooppunten.
- Meer informatie over het gebruik van de Azure Batch File Conventions-bibliotheek voor het persistent maken van logboeken en andere taak- en taakuitvoergegevens.