Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I Azure Batch representerar en uppgift en beräkningsenhet. Ett jobb är en samling av dessa uppgifter. Mer information om jobb och uppgifter samt hur de används i ett Azure Batch-arbetsflöde beskrivs nedan.
Jobb
Ett jobb är en samling aktiviteter. Det hanterar hur beräkningen utförs av dess aktiviteter på beräkningsnoderna i en pool.
Ett jobb anger den pool där arbetet ska köras. Du kan skapa en ny pool för varje jobb eller använda en pool för många jobb. Du kan skapa en pool för varje jobb som är associerat med ett jobbschema eller en pool för alla jobb som är associerade med ett jobbschema.
Jobbprioritet
Du kan tilldela en valfri jobbprioritet till jobb som du skapar. Batch-tjänsten använder jobbets prioritetsvärde för att fastställa schemaläggningsordningen (för alla aktiviteter i jobbet) i varje pool.
Om du vill uppdatera prioriteten för ett jobb anropar du Uppdatera egenskaperna för en jobbåtgärd (Batch REST) eller ändrar CloudJob.Priority (Batch .NET). Prioritetsvärden sträcker sig från -1 000 (lägsta prioritet) till +1 000 (högsta prioritet).
I samma pool har jobb med högre prioritet schemaläggningsprioritet framför jobb med lägre prioritet. Uppgifter i jobb med lägre prioritet som redan körs kommer inte att avbrytas av uppgifter i ett jobb med högre prioritet. Jobb med samma prioritetsnivå har lika stor chans att schemaläggas, och körordningen är inte definierad.
Ett jobb med ett högt prioritetsvärde som körs i en pool påverkar inte schemaläggningen av jobb som körs i en separat pool eller i ett annat Batch-konto. Jobbprioritet gäller inte för automatiska pooler som skapas när jobbet skickas.
Jobbbegränsningar
Du kan använda jobbegränsningar för att ange vissa begränsningar för dina jobb:
- Du kan ställa in en högsta wall-clock-tid så att ett jobb och alla dess aktiviteter avslutas om jobbet körs under längre tid än den angivna wall-clock-tiden.
- Du kan ange det maximala antalet återförsök som en begränsning, inklusive om en aktivitet alltid görs om eller aldrig görs om. Om du försöker utföra en aktivitet igen innebär det att om aktiviteten misslyckas kommer den att köras igen.
Jobbhanterarens uppgifter och automatisk avslutning
Klientprogrammet kan lägga till aktiviteter till ett jobb eller så kan du ange en Job Manager-aktivitet. En Job Manager-aktivitet innehåller den information som krävs för att skapa de nödvändiga aktiviteterna för ett jobb, där Job Manager-aktiviteten körs på en av beräkningsnoderna i poolen. Jobbhanteringsuppgiften hanteras specifikt av Batch, den placeras i kö så snart jobbet har skapats och startas om vid misslyckande. En jobbhanteraraktivitet krävs för jobb som skapas av ett jobbschema, eftersom det är det enda sättet att definiera aktiviteterna innan jobbet instansieras.
Som standard är jobben fortfarande i aktivt läge när alla aktiviteter i jobbet har slutförts. Du kan ändra det här beteendet så att jobbet avbryts automatiskt när alla aktiviteter i jobbet har slutförts. Ange jobbets onAllTasksComplete-egenskap (OnAllTasksComplete i Batch .NET) till terminatejob*" för att automatiskt avsluta jobbet när alla dess aktiviteter är i slutfört tillstånd.
Batch-tjänsten anser att ett jobb utan uppgifter betraktas som att ha slutfört alla sina uppgifter. Därför används det här alternativet oftast med en Job Manager-aktivitet. Om du vill använda automatisk uppsägning av jobb utan en jobbhanterare bör du först ange ett nytt jobbs onAllTasksComplete-egenskap till noactionoch sedan ange den till terminatejob*' först när du har lagt till aktiviteter i jobbet.
Schemalagda jobb
Med jobbscheman kan du skapa återkommande jobb i Batch-tjänsten. Ett jobbschema anger när jobb ska köras och innehåller specifikationerna för jobben som ska köras. Du kan ange varaktigheten för schemat (hur länge och när schemat gäller) och hur ofta jobb skapas under den schemalagda perioden.
Uppgifter
En uppgift är en beräkningsenhet som är kopplad till en arbetsuppgift. Den körs på en nod. Uppgifter tilldelas till en nod för körning eller placeras i kö tills en nod blir ledig. Enkelt beskrivet kör en aktivitet ett eller flera program eller skript på en beräkningsnod för att utföra det arbete som du vill ha gjort.
När du skapar en aktivitet kan du ange:
Kommandorad för uppgiften. Det här är kommandoraden som kör ditt program eller skript på beräkningsnoden.
Observera att kommandoraden inte körs under ett skal. Därför kan den inte dra nytta av gränssnittsfunktioner som miljövariabelexpansion (detta inkluderar
PATH). Om du vill dra nytta av sådana funktioner måste du anropa gränssnittet på kommandoraden, till exempel genom att startacmd.exepå Windows-noder eller/bin/shi Linux:cmd /c MyTaskApplication.exe %MY_ENV_VAR%/bin/sh -c MyTaskApplication $MY_ENV_VAROm dina uppgifter behöver köra ett program eller skript som inte finns i nodens eller referensmiljöns variabler anropar du gränssnittet explicit på aktivitetskommandoraden
PATH.Resursfiler som innehåller de data som ska bearbetas. Dessa filer kopieras automatiskt till noden från Blob Storage i ett Azure Storage-konto innan aktivitetens kommandorad körs. Mer information finns i Starta uppgift och Filer och kataloger.
Miljövariablerna som krävs av programmet. Mer information finns i Miljöinställningar för aktiviteter.
Begränsningarna som aktiviteten ska köras under. Begränsningarna omfattar t.ex. den längsta tid som aktiviteten kan köras, det högsta antal omförsök som ska göras för en aktivitet som misslyckats, samt den längsta tid som filer i aktivitetens arbetskatalog ska bevaras.
Programpaket för distribution till beräkningsnoden som aktiviteten har schemalagts att köra på. Med programpaket blir det lättare att distribuera och hantera versionerna av de program som dina aktiviteter kör. Programpaket på aktivitetsnivå är särskilt användbara i miljöer med delad pool, där olika jobb körs i en pool och poolen inte tas bort när ett jobb har slutförts. Om jobbet har färre aktiviteter än noder i poolen kan programpaket för aktiviteter minimera dataöverföringen eftersom ditt program bara distribueras till noderna som kör aktiviteterna.
En containeravbildning är en referens i Docker Hub eller ett privat register och ytterligare inställningar för att skapa en Docker-container i vilken uppgiften körs på noden. Den här informationen behöver du bara ange om poolen har skapats med en containerkonfiguration.
Anteckning
Maximal livstid för en uppgift, från den tidpunkt då den läggs till i jobbet tills den slutförs, är 180 dagar. Slutförda uppgifter sparas i 7 dagar. data för uppgifter som inte har slutförts inom den maximala livslängden är inte tillgängliga.
Förutom uppgifter som du definierar för att utföra beräkningen på en nod tillhandahålls även flera särskilda uppgifter av Batch-tjänsten:
- Startaktivitet
- Job Manager-aktivitet
- Jobbförberedelse- och jobbpubliceringsaktiviteter
- Uppgifter för flera instanser
- Aktivitetsberoenden
Starta uppgift
Genom att associera en startaktivitet med en pool kan du förbereda driftsmiljön för dess noder. Du kan t.ex. installera de program som dina aktiviteter ska köra eller starta bakgrundsprocesser. Startaktiviteten körs varje gång en nod startas, så länge den finns kvar i poolen. Detta inkluderar när noden först läggs till i poolen och när den startas om eller omskapas.
En viktig fördel med startaktiviteten är att den kan innehålla all information som krävs för att konfigurera en beräkningsnod och installera de program som krävs för att köra aktiviteterna. Att öka antalet noder i en pool är därför lika enkelt som att ange antalet nya målnoder. Startaktiviteten innehåller den information som krävs för att Batch-tjänsten ska kunna konfigurera de nya noderna och förbereda dem för att acceptera uppgifter.
Precis som med alla Azure Batch-uppgifter kan du ange en lista över resursfiler i Azure Storage, förutom en kommandorad som ska köras. Batchtjänsten kopierar först resursfilerna till noden från Azure Storage och kör sedan kommandoraden. När det gäller en pools startaktivitet innehåller fillistan vanligtvis aktivitetens program och dess beroenden.
Startuppgiften kan dock även innehålla referensdata som ska användas av alla aktiviteter som körs på beräkningsnoden. En startaktivitets kommandorad kan exempelvis köra en robocopy-åtgärd för att kopiera programfiler (som anges som resursfiler och laddas ned till noden) från startaktivitetens arbetskatalog till den delade mappen och sedan köra en MSI eller setup.exe.
Vanligtvis vill du att Batch-tjänsten ska vänta tills startaktiviteten har slutförts innan noden är redo att tilldelas uppgifter. Du kan dock konfigurera detta på ett annat sätt efter behov.
Om en startaktivitet misslyckas på en beräkningsnod uppdateras nodens tillstånd för att återspegla felet och noden tilldelas inga uppgifter. En startaktivitet kan misslyckas om det uppstår ett problem med att kopiera dess resursfiler från lagringen, eller om processen som körs av dess kommandorad returnerar en slutkod som inte är noll.
Om du lägger till eller uppdaterar startaktiviteten för en befintlig pool måste du starta om dess beräkningsnoder för att startaktiviteten ska tillämpas på noderna.
Anteckning
Batch begränsar den totala storleken på en startaktivitet. Det här omfattar resursfiler och miljövariabler. Om du vill minska storleken på en startaktivitet finns två metoder:
Du kan använda programpaket för att distribuera program eller data i varje nod i Batch-poolen. Mer information om programpaket finns i Deploy applications to compute nodes with Batch application packages (Distribuera program till beräkningsnoder med Batch-programpaket).
Du kan manuellt skapa ett zippat arkiv som innehåller dina programfiler. Ladda upp ditt zippade arkiv till Azure Storage som en blob. Ange det zippade arkivet som en resursfil för startaktiviteten. Innan du kör kommandoraden för din startaktivitet packar du upp arkivet från kommandoraden.
Du kan packa upp arkivet med valfritt arkiveringsverktyg. Du måste inkludera verktyget som du använder för att packa upp arkivet som en resursfil för startaktiviteten.
Job Manager-aktivitet
Du använder vanligtvis en jobbhanteraraktivitet för att styra och/eller övervaka jobbkörning. Till exempel används jobbhanteraruppgifter ofta för att skapa och skicka uppgifter för ett jobb, fastställa ytterligare uppgifter som ska köras och avgöra när arbetet är klart.
En jobbhanteraraktivitet är dock inte begränsad till dessa aktiviteter. Det är en fullfjädrad funktion som kan utföra alla åtgärder som krävs för jobbet. En jobbmanager-uppgift kan till exempel ladda ned en fil som angetts som en parameter, analysera innehållet i filen och skicka fler uppgifter baserat på innehållet.
En Job Manager-aktivitet startar innan alla andra aktiviteter. Den tillhandahåller följande funktioner:
- Den skickas automatiskt som en uppgift av Batch-tjänsten när jobbet skapas.
- Den är schemalagd att köras före de andra aktiviteterna i ett jobb.
- Dess associerade nod är den sista som tas bort från en pool om poolens storlek minskas.
- Dess avslutning kan vara kopplad till avslutningen av alla uppgifter i uppgiften.
- En job manager-uppgift får högsta prioritet när den behöver startas om. Om en inaktiv nod inte är tillgänglig kan Batch-tjänsten avsluta en av de andra aktiviteter som körs i poolen för att göra plats för jobbhanterarens uppgift att köras.
- En jobbhanteraraktivitet i ett jobb har inte prioritet framför andra jobbs uppgifter. Över jobb observeras endast prioriteringar på jobbnivå.
Förberedelse av jobb och utgivningsaktiviteter
Batch tillhandahåller förberedelseuppgifter för inställningar före körning av jobbet och frisläppningsuppgifter för underhåll eller städning efter jobbet.
En jobbförberedelseuppgift körs på alla beräkningsnoder som schemalagts att köra aktiviteter, innan andra jobbuppgifter körs. Du kan till exempel använda en jobbförberedelseaktivitet för att kopiera data som delas av alla aktiviteter, men som är unika för jobbet.
När ett jobb har slutförts körs en jobbpubliceringsuppgift på alla noder i poolen som har kört minst en uppgift. En jobbpubliceringsaktivitet kan till exempel ta bort data som kopierades av jobbförberedelseaktiviteten, eller komprimera och ladda upp diagnostikloggdata.
Både jobbförberedelse- och jobbpubliceringsaktiviteter tillåter dig att ange en kommandorad som ska köras när aktiviteten anropas. De stöder funktioner som filhämtning, upphöjd körning, anpassade miljövariabler, högsta körningstid, antal omförsök och kvarhållningstid för filer.
Mer information om jobbförberedelse- och jobbpubliceringsaktiviteter finns i Köra jobbförberedelse- och jobbpubliceringsaktiviteter på Azure Batch-beräkningsnoder.
Aktivitet med flera instanser
En aktivitet med flera instanser är en aktivitet som är konfigurerad att köras på mer än en beräkningsnod samtidigt. Med uppgifter med flera instanser kan du aktivera scenarier med högpresterande databehandling som kräver en grupp beräkningsnoder som allokeras tillsammans för att bearbeta en enda arbetsbelastning, till exempel MPI (Message Passing Interface).
Detaljerad information om hur du kör MPI-jobb i Batch med hjälp av Batch .NET-biblioteket finns i Använda aktiviteter med flera instanser för att köra MPI-program (Message Passing Interface) i Azure Batch.
Beroenden mellan uppgifter
Med aktivitetsberoenden kan du, som namnet antyder, ange att en aktivitet är beroende av att andra aktiviteter slutförs innan den kan köras. Den här funktionen har stöd för situationer där en ”underordnad” aktivitet använder utdata från en ”överordnad” aktivitet, eller där en överordnad aktiviteten utför viss initiering som krävs av en underordnad aktivitet.
Om du vill använda den här funktionen måste du först aktivera aktivitetsberoenden för ditt Batch-jobb. För varje aktivitet som är beroende av en annan (eller flera andra) anger du sedan de aktiviteter som den aktiviteten är beroende av.
Med aktivitetsberoenden kan du konfigurera scenarier som följande:
- aktivitetB är beroende av aktivitetA (aktivitetB kan inte köra förrän aktivitetA har slutförts).
- aktivitetC är beroende av både aktivitetA och aktivitetB.
- aktivitetD är beroende av en serie aktiviteter, till exempel aktivitet 1 till och med 10, innan den kan köras.
Mer information finns i Aktivitetsberoenden i Azure Batch och Kodexemplet TaskDependencies i GitHub-lagringsplatsen azure-batch-samples .
Miljöinställningar för aktiviteter
Varje aktivitet som utförs av Batch-tjänsten har åtkomst till miljövariabler som anges på datornoder. Detta inkluderar miljövariabler som definieras av Batch-tjänsten och anpassade miljövariabler som du kan definiera för dina uppgifter. Program och skript som dina uppgifter kör har åtkomst till dessa miljövariabler under körningen.
Du kan ange anpassade miljövariabler på aktivitets- eller jobbnivå genom att fylla i egenskapen för miljöinställningar för dessa entiteter. Mer information finns i egenskaperna Lägg till en aktivitet i en jobbåtgärd (Batch REST) eller CloudTask.EnvironmentSettings och CloudJob.CommonEnvironmentSettings i Batch .NET.
Klientprogrammet eller tjänsten kan hämta en aktivitets miljövariabler, både tjänstdefinierade och anpassade, med hjälp av åtgärden Hämta information om en aktivitet (Batch REST) eller genom att komma åt egenskapen CloudTask.EnvironmentSettings (Batch .NET). Processer som körs på en beräkningsnod kan komma åt dessa och andra miljövariabler på noden, till exempel genom att använda vanlig %VARIABLE_NAME%- (Windows) eller $VARIABLE_NAME-syntax (Linux).
Du hittar en lista över alla tjänstdefinierade miljövariabler i miljövariabler för beräkningsnoder.
Kända begränsningar
- Uppgift som fastnat i körläge: Batch-tjänsten fungerar tillsammans med beräkningsnoder för att hantera uppgiftslivscykeln. När en aktivitet schemaläggs på en beräkningsnod för körning, ansvarar beräkningsnoden för att uppdatera aktivitetens status från "körs" till "slutförd". Om en beräkningsnod är preparerad eller har förlorat anslutningen till Batch-tjänsten förblir dess uppgifter i körläge tills Batch-tjänsten kan schemalägga om dem för att köras med en annan beräkningsnod. Om det inte finns någon annan beräkningsnod kan dessa uppgifter förbli i körning för alltid. För att avgöra om en aktivitet har fastnat i körningstillstånd kan du fråga aktiviteten för att kontrollera om dess associerade nod är oanvändbar eller borttagen från poolen.
- När ett jobb avslutas avslutar Batch-tjänsten endast sina aktiviteter som körs med tillgängliga beräkningsnoder. Alla befintliga aktiva aktiviteter och aktiviteter som körs med oanvändbara noder förblir aktuella.
- När en uppgift hämtas på nytt (till exempel på grund av en förinstallerad nod eller en åtgärd för storleksändring av poolen med
Requeuealternativet) skickas den tillbaka till slutet av jobbets kö. Det är därför möjligt att uppgiften fördröjs och schemaläggs om när det finns andra aktiva uppgifter som väntar i samma uppgift.
Nästa steg
- Lär dig mer om filer och kataloger.