Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Azure Batch futó tevékenységek kimeneti adatokat hozhatnak létre a futtatáskor. A feladat kimeneti adatait gyakran kell tárolni a feladat más tevékenységei, a feladatot végrehajtó ügyfélalkalmazás vagy mindkettő lekéréséhez. A feladatok kimeneti adatokat írnak egy Batch számítási csomópont fájlrendszerére, de a csomópont összes adata elveszik, amikor újraimageelődik, vagy amikor a csomópont elhagyja a medencét. A tevékenységeknek fájlmegőrzési időszakuk is lehet, amely után a feladat által létrehozott fájlok törlődnek. Ezért fontos, hogy a feladat kimenetét később is megőrizze egy adattárban, például Azure Storage.
A Batch tárfiók-beállításaiért lásd: Batch-fiókok és Azure Storage-fiókok.
Az Azure Batch feladatadatait a File Conventions könyvtár segítségével mentheti .NET-hez. A Fájlkonvenciók kódtára leegyszerűsíti a feladatkimeneti adatok Azure Storage való tárolásának és beolvasásának folyamatát. A Fájlkonvenciók tárat feladat- és ügyfélkódban is használhatja. Feladat módban a könyvtár használatával tartsa meg a fájlokat. Ügyfél módban a tár használatával listázhatja és lekérheti a fájlokat. A feladatkód a könyvtár használatával is lekérheti az előző feladatok kimenetét, például egy feladatfüggőségi helyzetben.
A Fájlkonvenciók könyvtárban található kimeneti fájlok lekéréséhez keresse meg egy munkafolyamat vagy feladat fájljait. Nem kell tudnia a fájlok nevét vagy helyét. Ehelyett a fájlokat azonosító és cél szerint listázhatja. Felsorolja például egy adott tevékenység összes köztes fájljának listáját. Vagy lekérhet egy előnézeti fájlt egy adott feladathoz.
A Batch service API a 2017-05-01-es verziótól kezdve támogatja a kimeneti adatok Azure Storage megőrzését a virtuális gép konfigurációjával létrehozott készleteken futó feladatok és feladatkezelő feladatok esetében. A feladatokat létrehozó kódból továbbra is megőrizheti a kimenetet. Ez a módszer a Fájl-konvenciók könyvtár alternatívája. A Batch-ügyfélalkalmazásokat úgy módosíthatja, hogy megőrizze a kimenetet anélkül, hogy frissítenie kellene a feladat által futtatott alkalmazást. További információért lásd: Feladatadatok mentése az Azure Storage-ba a Batch szolgáltatás API-val.
Tárhasználati esetek
Azure Batch többféle módon is megőrizheti a feladat kimenetét. A fájlkonvenciók tárát akkor használja, ha a következőt szeretné:
- Módosítsa annak az alkalmazásnak a kódját, amelyet a feladat a fájlok megőrzéséhez futtat.
- Streamelje az adatokat Azure Storage, amíg a feladat még fut.
- Adatok tartós megőrzése tárakból.
- Keresse meg és töltse le a feladat kimeneti fájljait azonosító vagy cél alapján az ügyfélalkalmazásban vagy más feladatokban.
- Tekintse meg a feladat kimenetét az Azure portálon.
Más forgatókönyvek esetén érdemes megfontolni egy másik megközelítést. További információ más lehetőségekről: A munkafolyamat és a feladat kimenetének mentése Azure Storage-ba.
Mi a Batch-fájlkonvenciók szabványa?
A Batch-fájlkonvenciók szabványa elnevezési sémát biztosít azon céltárolókhoz és blobelérési útvonalakhoz, amelyekbe a kimeneti fájlok meg vannak írva. A szabványnak megfelelő Azure tárolóban tárolt fájlok automatikusan megtekinthetők a Azure portálon.
A .NET fájlkonvenciók könyvtára a szabványnak megfelelően automatikusan elnevezi a tárolókat és a feladatkimeneti fájlokat. A kódtár metódusokat is biztosít a kimeneti fájlok lekérdezéséhez Azure Storage. Lekérdezhet feladatazonosító, tevékenységazonosító vagy cél alapján.
Ha nem .NET nyelvvel fejleszt, saját maga is implementálhatja a fájlkonvenciók szabványát az alkalmazásban. További információ: A Batch-fájlkonvenciók szabványának implementálása.
Azure Storage-fiók csatolása
Ha a kimeneti adatokat a Fájlkonvenciók tár használatával szeretné Azure Storage őrizni, először csatoljon egy Azure Storage fiókot a Batch-fiókhoz.
- Jelentkezzen be a Azure portálra.
- Keressen rá, és válassza a Batch lehetőséget a keresősávon.
- Válassza ki a Batch-fiókot a Azure Storage összekapcsolásához.
- A Batch-fiók oldalán a Beállítások alatt válassza a Tárfiók lehetőséget.
- Ha még nincs Azure Storage fiókja a Batch-fiókjához, válassza a Storage account (None) lehetőséget.
- Válassza ki a használni kívánt Azure Storage fiókot. A legjobb teljesítmény érdekében használjon egy fiókot ugyanabban a régióban, mint a Batch-fiók.
Kimeneti adatok megőrzése
A feladat- és tevékenységkimeneti adatokat a Fájlkonvenciók tárban őrizheti meg. Először hozzon létre egy tárolót Azure Storage. Ezután mentse a kimenetet a tárolóba. A feladatkódban az Azure Storage ügyfélkönyvtárát a .NET-hez használva töltse fel a feladat kimenetét a tárolóba.
Az Azure Storage tárolók és blobok használatával kapcsolatos további információért lásd: Azure Blob Storage használatának megkezdése a .NET segítségével.
A fájlkonvenciók tárában tárolt összes feladat- és feladatkimenet ugyanabban a tárolóban van tárolva. Ha sok feladat egyszerre próbál meg fájlokat őrizni, Azure Storage szabályozási korlátok kényszeríthetők. További információ: A Blob Storage teljesítmény- és méretezhetőségi ellenőrzőlistája.
Tároló létrehozása
A feladat kimenetének Azure Storage való megőrzéséhez először hozzon létre egy tárolót a CloudJob.PrepareOutputStorageAsync meghívásával. Ez a bővítménymetódus egy CloudStorageAccount objektumot használ paraméterként. A metódus létrehoz egy tárolót, amely a File Conventions szabványnak megfelelően van elnevezve. A tároló tartalmát a Azure portál és a cikkben ismertetett lekérési módszerek derítik fel.
Általában hozzon létre egy tárolót az ügyfélalkalmazásában, amely létrehozza a készleteket, a munkákat és a feladatokat. Például:
CloudJob job = batchClient.JobOperations.CreateJob(
"myJob",
new PoolInformation { PoolId = "myPool" });
// Create reference to the linked Azure Storage account
CloudStorageAccount linkedStorageAccount =
new CloudStorageAccount(myCredentials, true);
// Create the blob storage container for the outputs
await job.PrepareOutputStorageAsync(linkedStorageAccount);
Tevékenységkimenetek tárolása
A tároló létrehozása után a feladatok a TaskOutputStorage használatával menthetik a kimenetet a tárolóba. Ez az osztály a Fájlkonvenciók könyvtárban érhető el.
A feladatkódban hozzon létre egy TaskOutputStorage objektumot. Amikor a tevékenység befejezi a munkáját, hívja meg a TaskOutputStorage parancsot. SaveAsync metódus. Ez a lépés a kimenetet az Azure Storage-ba menti.
CloudStorageAccount linkedStorageAccount = new CloudStorageAccount(myCredentials);
string jobId = Environment.GetEnvironmentVariable("AZ_BATCH_JOB_ID");
string taskId = Environment.GetEnvironmentVariable("AZ_BATCH_TASK_ID");
TaskOutputStorage taskOutputStorage = new TaskOutputStorage(
linkedStorageAccount, jobId, taskId);
/* Code to process data and produce output file(s) */
await taskOutputStorage.SaveAsync(TaskOutputKind.TaskOutput, "frame_full_res.jpg");
await taskOutputStorage.SaveAsync(TaskOutputKind.TaskPreview, "frame_low_res.jpg");
A kindTaskOutputStorage paramétere.A SaveAsync metódus kategorizálja a tárolt fájlokat. Négy előre definiált TaskOutputKind-típus létezik: TaskOutput, TaskPreview, TaskLogés TaskIntermediate. a kimenet egyéni kategóriáit is definiálhatja.
Adja meg, hogy milyen típusú kimeneteket szeretne listázni a Batch későbbi lekérdezésekor. Ezután, amikor felsorolja egy tevékenység kimeneteit, szűrhet az egyik kimeneti típusra. Például szűrjön így: "Adja meg a 109 feladat előnézeti kimenetét". További információ: Kimeneti adatok lekérése.
A kimeneti típus azt is meghatározza, hogy hol jelenik meg egy output fájl a Azure portálon. A TaskOutput kategóriában lévő fájlok a Tevékenység kimeneti fájljai alatt találhatók. A Tevékenységnapló kategóriában lévő fájlok a Tevékenységnaplók alatt találhatók.
Feladatkimenetek tárolása
A teljes feladathoz társított kimeneteket is tárolhatja. Egy filmmegjelenítési feladat egyesítési feladatában például a teljes renderelt filmet feladatkimenetként is megőrizheti. A feladat befejezése után az ügyfélalkalmazás listázhatja és lekérheti a feladat kimeneteit. Az ügyfélalkalmazásnak nem kell lekérdeznie az egyes feladatokat.
A feladat kimenetének tárolása a JobOutputStorage meghívásával. SaveAsync metódus. Adja meg a JobOutputKind és a fájlnevet. Például:
CloudJob job = new JobOutputStorage(acct, jobId);
JobOutputStorage jobOutputStorage = job.OutputStorage(linkedStorageAccount);
await jobOutputStorage.SaveAsync(JobOutputKind.JobOutput, "mymovie.mp4");
await jobOutputStorage.SaveAsync(JobOutputKind.JobPreview, "mymovie_preview.mp4");
A feladatkimenetek TaskOutputKind típusához hasonlóan a JobOutputKind típussal is kategorizálhatja a feladat tárolt fájljait. Később listázhat egy adott kimenettípust. A JobOutputKind típus kimeneti és előnézeti kategóriákat is tartalmaz. A típus támogatja az egyéni kategóriák létrehozását is.
Feladatnaplók tárolása
Előfordulhat, hogy a feladat végrehajtása során frissített fájlokat is meg kell őriznie. Előfordulhat például, hogy meg kell őriznie a naplófájlokat, vagy más hasonló adatokat, mint a stdout.txt és a stderr.txt. A Fájlkonvenciók könyvtára biztosítja a TaskOutputStorage szolgáltatást. SaveTrackedAsync metódus az ilyen típusú fájlok megőrzéséhez. A SaveTrackedAsync használatával nyomon követheti a csomóponton lévő fájlok frissítéseit egy megadott időközönként. Ezután mentse el ezeket a frissítéseket az Azure Storage szolgáltatásba.
Az alábbi példa a SaveTrackedAsync használatával frissíti az adatokat az Azure Storage-ban 15 másodpercenként a feladat végrehajtása során.
TimeSpan stdoutFlushDelay = TimeSpan.FromSeconds(3);
string logFilePath = Path.Combine(
Environment.GetEnvironmentVariable("AZ_BATCH_TASK_DIR"), "stdout.txt");
// The primary task logic is wrapped in a using statement that sends updates to
// the stdout.txt blob in Storage every 15 seconds while the task code runs.
using (ITrackedSaveOperation stdout =
await taskStorage.SaveTrackedAsync(
TaskOutputKind.TaskLog,
logFilePath,
"stdout.txt",
TimeSpan.FromSeconds(15)))
{
/* Code to process data and produce output file(s) */
// We are tracking the disk file to save our standard output, but the
// node agent may take up to 3 seconds to flush the stdout stream to
// disk. So give the file a moment to catch up.
await Task.Delay(stdoutFlushDelay);
}
Cserélje le a megjegyzést tartalmazó szakaszt Code to process data and produce output file(s) arra a kódra, amit a feladat általában végez. Előfordulhat például, hogy olyan kóddal rendelkezik, amely adatokat tölt le Azure Storage, majd átalakításokat vagy számításokat hajt végre. Ezt a kódot egy using blokkba tördelve rendszeres időközönként frissítheti a fájlokat a SaveTrackedAsync használatával.
A csomópontügynök egy olyan program, amely a pool minden csomópontján fut. Ez a program biztosítja a parancs- és vezérlőfelületet a csomópont és a Batch szolgáltatás között. A Task.Delay hívás szükséges ennek a using blokknak a végén. A hívás gondoskodik arról, hogy a csomópontügynöknek legyen ideje kiüríteni a standard tartalmát a stdout.txt csomóponton lévő fájlba. E késleltetés nélkül kihagyható a kimenet utolsó néhány másodperce. Előfordulhat, hogy az összes fájl esetében nincs szüksége erre a késésre.
Ha engedélyezi a fájlkövetést a SaveTrackedAsync használatával, csak a követett fájlhoz hozzáadott módosítások kerülnek mentésre az Azure Storage-ba. Ezt a módszert csak a nem forgó naplófájlok vagy a fájl végéhez fűző műveletekkel írt egyéb fájlok nyomon követésére használhatja.
Kimeneti adatok lekérése
Egy adott tevékenységhez vagy feladathoz tartozó kimeneti fájlok lekéréséhez nem kell ismernie a Azure Storage elérési útját vagy a fájlneveket. Ehelyett feladat- vagy feladatazonosító alapján kérheti le a kimeneti fájlokat.
Az alábbi példakód végigvezeti egy feladat tevékenységein. Ezután a kód kinyomtat néhány információt a feladat kimeneti fájljairól. Ezután a kód letölti a fájlokat az AzureStorage-ból.
foreach (CloudTask task in myJob.ListTasks())
{
foreach (OutputFileReference output in
task.OutputStorage(storageAccount).ListOutputs(
TaskOutputKind.TaskOutput))
{
Console.WriteLine($"output file: {output.FilePath}");
output.DownloadToFileAsync(
$"{jobId}-{output.FilePath}",
System.IO.FileMode.Create).Wait();
}
}
Kimeneti fájlok megtekintése a Azure portálon
Ha a feladat kimeneti fájljai a Batch fájlkonvenciók szabványt használják, a fájlokat a Azure portálon tekintheti meg.
A kimeneti fájlok portálon való megjelenítésének engedélyezéséhez meg kell felelnie az alábbi követelményeknek:
Ahhoz, hogy a kimeneti fájlok automatikusan megjelenjenek a Azure portálon, a következőt kell tennie:
- Azure Storage-fiók csatlakoztatása a Batch-fiókhoz.
- Kövesse Azure Storage tárolók és fájlok előre definiált elnevezési konvencióit. Ha a File Conventions könyvtárat használja a kimenet megőrzéséhez, a fájlok a Fájlkonvenciók szabványának megfelelően maradnak meg.
Feladatkimeneti fájlok és naplók megtekintése a Azure portálon:
- Jelentkezzen be a Azure portálra.
- Nyissa meg azt a feladatot, amelynek a kimenetét meg szeretné tekinteni.
- Válassza ki a mentett kimeneti fájlokat vagy a mentett naplókat.
Kódrészlet
A PersistOutputs mintaprojekt a GitHub Azure Batch kódminták egyike. Ez a Visual Studio megoldás bemutatja, hogyan használható a Azure Batch Fájlkonvenciók könyvtára a feladat kimenetének tartós tárolóba való megőrzéséhez. A minta futtatásához kövesse az alábbi lépéseket:
- Nyissa meg a projektet a Visual Studio 2019.
- Adja hozzá a Batch és az Azure Storage fiók hitelesítő adatait az AccountSettings.settings fájlhoz a Microsoft.Azure.Batch.Samples.Common projektben.
- Hozza létre a megoldást. Még ne futtassa a megoldást.
- Ha a rendszer kéri, állítsa vissza a NuGet-csomagokat.
- Töltsön fel egy alkalmazási csomagotPersistOutputsTask a Azure portálon keresztül.
- A
PersistOutputsTask.exevégrehajtható fájlt és a hozzá tartozó függőségeket bele kell foglalni a .zip csomagba. - Állítsa be az alkalmazásazonosítót a következőre
PersistOutputsTask: . - Állítsa be az alkalmazáscsomag verzióját a következőre
1.0: .
- A
- A projekt futtatásához válassza a Start lehetőséget.
- Amikor a rendszer kéri a használni kívánt adatmegőrzési technológia kiválasztását, adja meg az 1 értéket. Ez a beállítás a fájlkonvenciók könyvtárát használja a minta futtatásához, a feladat kimenetének tárolására.
Szerezd be a Batch fájlkonvenciók könyvtárát a .NET-hez.
Az .NET Batch-fájlkonvenciók könyvtára NuGet érhető el. A kódtár új módszerekkel bővíti a CloudJob - és CloudTask-osztályokat . További információkért tekintse meg a Fájlkonvenciók könyvtárának referenciadokumentációját.
A File Conventions kódtár forráskódja GitHub érhető el.