Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan memulai cepat ini menunjukkan kepada Anda cara untuk memulai Azure Batch dengan menjalankan aplikasi C# yang menggunakan Azure Batch .NET API. Aplikasi .NET:
- Mengunggah beberapa file data input ke kontainer blob Azure Storage untuk digunakan untuk pemrosesan tugas Batch.
- Membuat kumpulan dua komputer virtual (VM), atau simpul komputasi, yang menjalankan Windows Server.
- Membuat tugas yang menjalankan proses pada simpul untuk memproses setiap file input dengan menggunakan perintah command line Windows.
- Menampilkan file output yang tugas kembalikan.
Setelah Anda menyelesaikan panduan awal ini, Anda memahami konsep utama layanan Batch dan siap menggunakan Batch dengan beban kerja yang lebih realistis dan berskala lebih besar.
Prasyarat
Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.
Akun Batch yang memiliki keterkaitan dengan akun Azure Storage. Anda dapat membuat akun dengan menggunakan salah satu metode berikut: Portal Azure CLI | Azure | Bicep | ARM templat | Terraform.
Visual Studio 2019 atau yang lebih baru, atau .NET 6.0 atau yang lebih baru, untuk Linux atau Windows.
Menjalankan aplikasi
Untuk menyelesaikan panduan cepat ini, Anda mengunduh atau mengkloning aplikasi, memasukkan data akun Anda, membangun dan menjalankan aplikasi, dan memverifikasi output.
Mengunduh atau mengkloning aplikasi
Unduh atau kloning aplikasi Mulai Cepat Azure Batch .NET dari GitHub. Gunakan perintah berikut untuk mengkloning repositori aplikasi dengan klien Git:
git clone https://github.com/Azure-Samples/batch-dotnet-quickstart.git
Berikan informasi akun Anda
Aplikasi ini perlu menggunakan nama akun Batch dan Storage, nilai kunci akun, dan titik akhir akun Batch Anda. Anda bisa mendapatkan informasi ini dari portal Microsoft Azure, API Azure, atau alat baris perintah.
Untuk mendapatkan informasi akun Anda dari portal Microsoft Azure:
- Dari bilah Pencarian Azure, cari dan pilih nama akun Batch Anda.
- Pada halaman akun Batch Anda, pilih Kunci dari navigasi kiri.
- Pada halaman Kunci , salin nilai berikut:
- Akun Kumpulan
- Titik akhir akun
- Kunci akses utama
- Nama akun penyimpanan
- Key1
Navigasikan ke folder batch-dotnet-quickstart yang diunduh dan edit string kredensial di Program.cs untuk menyediakan nilai yang Anda salin:
// Batch account credentials
private const string BatchAccountName = "<batch account>";
private const string BatchAccountKey = "<primary access key>";
private const string BatchAccountUrl = "<account endpoint>";
// Storage account credentials
private const string StorageAccountName = "<storage account name>";
private const string StorageAccountKey = "<key1>
Penting
Mengekspos kunci akun di sumber aplikasi tidak disarankan untuk penggunaan Produksi. Anda harus membatasi akses ke kredensial dan merujuknya dalam kode Anda dengan menggunakan variabel atau file konfigurasi. Yang terbaik adalah menyimpan kunci akun Batch dan Storage di Azure Key Vault.
Membuat dan menjalankan aplikasi dan melihat output
Untuk melihat alur kerja Batch dalam tindakan, buat dan jalankan aplikasi di Visual Studio. Anda juga dapat menggunakan perintah baris dotnet build dan dotnet run.
Di Visual Studio:
Buka file BatchDotNetQuickstart.sln , klik kanan solusi di Penjelajah Solusi, dan pilih Bangun. Jika diminta, gunakan NuGet Package Manager untuk memperbarui atau memulihkan paket NuGet.
Setelah build selesai, pilih BatchDotNetQuickstart di bilah menu atas untuk menjalankan aplikasi.
Durasi umum dengan konfigurasi default adalah sekitar lima menit. Penyiapan node kumpulan awal memakan waktu paling banyak. Untuk menjalankan ulang tugas, hapus tugas dari proses sebelumnya, tetapi jangan hapus pool. Pada kumpulan yang telah dikonfigurasi sebelumnya, pekerjaan selesai dalam beberapa detik.
Aplikasi mengembalikan output yang mirip dengan contoh berikut:
Sample start: 11/16/2022 4:02:54 PM
Container [input] created.
Uploading file taskdata0.txt to container [input]...
Uploading file taskdata1.txt to container [input]...
Uploading file taskdata2.txt to container [input]...
Creating pool [DotNetQuickstartPool]...
Creating job [DotNetQuickstartJob]...
Adding 3 tasks to job [DotNetQuickstartJob]...
Monitoring all tasks for 'Completed' state, timeout in 00:30:00...
Ada jeda sejenak di Monitoring all tasks for 'Completed' state, timeout in 00:30:00... saat simpul-simpul komputasi dari kumpulan mulai menyala. Saat tugas dibuat, Batch mengantrekannya untuk dijalankan pada kumpulan. Segera setelah simpul komputasi pertama tersedia, tugas pertama berjalan pada simpul. Anda dapat memantau status simpul, tugas, dan pekerjaan dari halaman akun Batch Anda di portal Microsoft Azure.
Setelah setiap tugas selesai, Anda akan melihat output yang mirip dengan contoh berikut:
Printing task output.
Task: Task0
Node: tvm-2850684224_3-20171205t000401z
Standard out:
Batch processing began with mainframe computers and punch cards. Today it still plays a central role...
stderr:
...
Meninjau kode
Tinjau kode untuk memahami tahapan dalam Azure Batch .NET Quickstart.
Membuat klien layanan dan mengunggah file sumber daya
Untuk berinteraksi dengan akun penyimpanan, aplikasi menggunakan pustaka klien Azure Storage Blobs untuk .NET untuk membuat BlobServiceClient.
var sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey); string blobUri = "https://" + storageAccountName + ".blob.core.windows.net"; var blobServiceClient = new BlobServiceClient(new Uri(blobUri), sharedKeyCredential); return blobServiceClient;Aplikasi ini menggunakan
blobServiceClientreferensi untuk membuat kontainer di akun penyimpanan dan mengunggah file data ke kontainer. File dalam penyimpanan didefinisikan sebagai objek ResourceFile Batch yang nantinya dapat diunduh Batch ke simpul komputasi.List<string> inputFilePaths = new() { "taskdata0.txt", "taskdata1.txt", "taskdata2.txt" }; var inputFiles = new List<ResourceFile>(); foreach (var filePath in inputFilePaths) { inputFiles.Add(UploadFileToContainer(containerClient, inputContainerName, filePath)); }Aplikasi ini membuat objek BatchClient untuk membuat dan mengelola kumpulan Batch, pekerjaan, dan tugas. Klien Batch menggunakan autentikasi kunci bersama. Batch juga mendukung autentikasi Microsoft Entra.
var cred = new BatchSharedKeyCredentials(BatchAccountUrl, BatchAccountName, BatchAccountKey); using BatchClient batchClient = BatchClient.Open(cred); ...
Membuat kumpulan simpul komputasi
Untuk membuat kumpulan Batch, aplikasi menggunakan metode BatchClient.PoolOperations.CreatePool untuk mengatur jumlah simpul, ukuran VM, dan konfigurasi kumpulan. Objek VirtualMachineConfiguration berikut menentukan ImageReference ke gambar Windows Server Marketplace. Batch mendukung berbagai gambar OS Windows Server dan Linux Marketplace, dan juga mendukung gambar VM kustom.
PoolNodeCount dan ukuran VM PoolVMSize adalah konstanta yang ditentukan. Aplikasi ini membuat kumpulan dua simpul Standard_A1_v2. Ukuran ini menawarkan keseimbangan performa yang baik dibandingkan dengan biaya untuk panduan memulai cepat ini.
Metode Komit mengirimkan kumpulan ke layanan Batch.
private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
return new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.windows amd64");
}
private static ImageReference CreateImageReference()
{
return new ImageReference(
publisher: "MicrosoftWindowsServer",
offer: "WindowsServer",
sku: "2016-datacenter-smalldisk",
version: "latest");
}
private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
try
{
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: PoolId,
targetDedicatedComputeNodes: PoolNodeCount,
virtualMachineSize: PoolVMSize,
virtualMachineConfiguration: vmConfiguration);
pool.Commit();
}
...
Membuat tugas Batch
Tugas Batch adalah pengelompokan logis dari satu atau lebih tugas. Pekerjaan ini mencakup pengaturan umum, seperti prioritas dan kumpulan untuk menjalankan tugas.
Aplikasi ini menggunakan metode BatchClient.JobOperations.CreateJob untuk membuat tugas di dalam pool Anda. Metode Commit mengirimkan pekerjaan ke layanan Batch. Awalnya pekerjaan tidak memiliki tugas.
try
{
CloudJob job = batchClient.JobOperations.CreateJob();
job.Id = JobId;
job.PoolInformation = new PoolInformation { PoolId = PoolId };
job.Commit();
}
...
Membuat tugas
Batch menyediakan sejumlah cara untuk menyebarkan aplikasi dan skrip ke node komputasi. Aplikasi ini membuat daftar objek input ResourceFile. Setiap tugas memproses file input dengan menggunakan properti CommandLine . Baris perintah Batch adalah tempat Anda menentukan aplikasi atau skrip Anda.
Baris perintah dalam kode berikut menjalankan perintah Windows type untuk menampilkan file input. Kemudian, aplikasi menambahkan setiap tugas ke pekerjaan dengan metode AddTask , yang mengantrekan tugas untuk dijalankan pada simpul komputasi.
for (int i = 0; i < inputFiles.Count; i++)
{
string taskId = String.Format("Task{0}", i);
string inputFilename = inputFiles[i].FilePath;
string taskCommandLine = String.Format("cmd /c type {0}", inputFilename);
var task = new CloudTask(taskId, taskCommandLine)
{
ResourceFiles = new List<ResourceFile> { inputFiles[i] }
};
tasks.Add(task);
}
batchClient.JobOperations.AddTask(JobId, tasks);
Melihat output tugas
Aplikasi ini membuat TaskStateMonitor untuk memantau tugas dan memastikan tugas selesai. Ketika setiap tugas berhasil dijalankan, outputnya menulis ke stdout.txt. Aplikasi kemudian menggunakan properti CloudTask.ComputeNodeInformation untuk menampilkan file stdout.txt untuk setiap tugas yang diselesaikan.
foreach (CloudTask task in completedtasks)
{
string nodeId = String.Format(task.ComputeNodeInformation.ComputeNodeId);
Console.WriteLine("Task: {0}", task.Id);
Console.WriteLine("Node: {0}", nodeId);
Console.WriteLine("Standard out:");
Console.WriteLine(task.GetNodeFile(Constants.StandardOutFileName).ReadAsString());
}
Membersihkan sumber daya
Aplikasi ini secara otomatis menghapus kontainer penyimpanan yang dibuatnya, dan memberi Anda opsi untuk menghapus kumpulan Batch dan pekerjaan. Kumpulan dan simpul dikenakan biaya selama simpul aktif, meskipun tidak ada pekerjaan yang dijalankan. Jika Anda tidak lagi memerlukan kumpulan, hapus kumpulan tersebut.
Saat Anda tidak lagi memerlukan akun Batch dan akun penyimpanan, Anda dapat menghapus grup sumber daya yang berisinya. Di portal Microsoft Azure, pilih Hapus grup sumber daya di bagian atas halaman grup sumber daya. Pada layar Hapus grup sumber daya , masukkan nama grup sumber daya, lalu pilih Hapus.
Langkah berikutnya
Dalam panduan memulai cepat ini, Anda menjalankan aplikasi yang menggunakan API Batch .NET untuk membuat kumpulan Batch, simpul, pekerjaan, dan tugas. Pekerjaan mengunggah file sumber daya ke kontainer penyimpanan, menjalankan tugas pada simpul, dan menampilkan output dari simpul.
Sekarang setelah Anda memahami konsep utama layanan Batch, Anda siap untuk menggunakan Batch dengan beban kerja skala yang lebih realistis dan lebih besar. Untuk mempelajari selengkapnya tentang Azure Batch dan menelusuri beban kerja paralel dengan aplikasi dunia nyata, lanjutkan ke tutorial Batch .NET.