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.
Pekerjaan Azure Batch sering memerlukan penyiapan sebelum tugasnya dijalankan, dan pemeliharaan pasca-pekerjaan ketika tugasnya selesai. Misalnya, Anda mungkin perlu mengunduh data input tugas umum ke simpul komputasi Anda, atau mengunggah data output tugas ke Azure Storage setelah pekerjaan selesai. Anda dapat menggunakan tugas persiapan kerja dan rilis pekerjaan untuk operasi ini.
- Tugas persiapan pekerjaan dijalankan sebelum tugas-tugas dari pekerjaan dimulai, pada semua node komputasi yang dijadwalkan untuk menjalankan setidaknya satu tugas.
- Tugas rilis pekerjaan berjalan setelah pekerjaan selesai, pada setiap simpul di kumpulan yang menjalankan tugas persiapan pekerjaan.
Seperti halnya tugas Batch lainnya, Anda dapat menentukan baris perintah yang akan dipanggil saat persiapan pekerjaan atau tugas rilis berjalan. Tugas persiapan dan pelepasan pekerjaan menawarkan fitur tugas Batch yang familier seperti:
- Unduhan file sumber daya.
- Eksekusi yang ditingkatkan.
- Variabel lingkungan kustom.
- Durasi eksekusi maksimum.
- Coba lagi hitungan.
- Waktu retensi file.
Artikel ini memperlihatkan cara menggunakan kelas JobPreparationTask dan JobReleaseTask di pustaka Batch .NET .
Petunjuk / Saran
Tugas persiapan dan penyelesaian sangat membantu dalam lingkungan berbagi kumpulan, di mana kumpulan simpul komputasi bertahan di antara pelaksanaan tugas dan digunakan oleh banyak tugas.
Contoh penggunaan untuk tugas persiapan dan pelepasan tugas
Tugas-tugas persiapan pekerjaan dan pelepasan tugas cocok untuk skenario-skenario berikut:
Unduh data tugas umum. Pekerjaan batch sering memerlukan sekumpulan data umum sebagai input untuk tugas pekerjaan. Anda dapat menggunakan tugas persiapan kerja untuk mengunduh data ini ke setiap simpul sebelum eksekusi tugas pekerjaan lainnya.
Misalnya, dalam perhitungan analisis risiko harian, data pasar bersifat spesifik pekerjaan namun umum untuk semua tugas dalam pekerjaan. Anda dapat menggunakan tugas persiapan kerja untuk mengunduh data pasar ini, yang sering berukuran beberapa gigabyte, ke setiap simpul komputasi sehingga tugas apa pun yang berjalan pada simpul dapat menggunakannya.
Hapus output pekerjaan dan tugas. Di lingkungan kumpulan bersama, di mana simpul komputasi kumpulan tidak dinonaktifkan di antara pekerjaan, Anda mungkin perlu menghapus data pekerjaan di antara eksekusi. Misalnya, Anda mungkin perlu menghemat ruang disk pada simpul, atau memenuhi kebijakan keamanan organisasi Anda. Anda dapat menggunakan tugas rilis pekerjaan untuk menghapus data yang diunduh tugas persiapan pekerjaan atau eksekusi tugas yang dihasilkan.
Pertahankan log. Anda mungkin ingin menyimpan salinan file log yang dihasilkan tugas Anda, atau file crash dump yang dihasilkan aplikasi yang gagal. Anda dapat menggunakan tugas rilis pekerjaan untuk mengompresi dan mengunggah data ini ke akun Azure Storage.
Tugas persiapan pekerjaan
Sebelum menjalankan tugas pekerjaan, Batch menjalankan tugas persiapan pekerjaan pada setiap simpul komputasi yang dijadwalkan untuk menjalankan tugas. Secara default, Batch menunggu tugas persiapan pekerjaan selesai sebelum menjalankan tugas pekerjaan terjadwal, tetapi Anda dapat mengonfigurasinya untuk tidak menunggu.
Jika simpul dimulai ulang, tugas persiapan pekerjaan berjalan lagi, tetapi Anda juga dapat menonaktifkan perilaku ini. Jika Anda memiliki pekerjaan dengan tugas persiapan kerja dan tugas manajer pekerjaan, tugas persiapan pekerjaan berjalan sebelum tugas manajer pekerjaan dan sebelum semua tugas lainnya. Tugas persiapan pekerjaan selalu berjalan terlebih dahulu.
Tugas persiapan pekerjaan hanya berjalan pada simpul yang dijadwalkan untuk menjalankan tugas. Perilaku ini mencegah eksekusi yang tidak perlu pada simpul yang tidak diberi tugas apa pun. Simpul mungkin tidak diberi tugas apa pun ketika jumlah tugas pekerjaan kurang dari jumlah simpul dalam kumpulan. Perilaku ini juga berlaku ketika eksekusi tugas bersamaan diaktifkan, yang membuat beberapa simpul menganggur jika jumlah tugas lebih rendah dari total kemungkinan tugas bersamaan.
Nota
JobPreparationTask berbeda dari CloudPool.StartTask yang JobPreparationTask
berjalan di awal setiap pekerjaan, sedangkan StartTask
hanya berjalan ketika simpul komputasi pertama kali bergabung dengan kumpulan atau memulai ulang.
Tugas pelepasan pekerjaan
Setelah Anda menandai pekerjaan sebagai selesai, tugas pelepasan pekerjaan berjalan pada setiap simpul dalam kumpulan yang menjalankan tugas persiapan pekerjaan. Anda menandai pekerjaan sebagai selesai dengan mengeluarkan permintaan penghentian. Permintaan ini menetapkan status pekerjaan ke mengakhiri, menghentikan semua tugas yang sedang aktif atau berjalan yang terkait dengan pekerjaan, dan menjalankan tugas pelepasan pekerjaan. Pekerjaan kemudian berpindah ke status selesai .
Nota
Menghapus pekerjaan juga menjalankan tugas rilis pekerjaan. Namun, jika pekerjaan sudah dihentikan, tugas rilis tidak berjalan untuk kedua kalinya jika pekerjaan tersebut kemudian dihapus.
Tugas rilis pekerjaan dapat berjalan selama maksimal 15 menit sebelum layanan Batch mengakhirinya. Untuk informasi selengkapnya, lihat dokumentasi referensi REST API.
Tugas persiapan dan rilis pekerjaan dengan Batch .NET
Untuk menjalankan tugas persiapan pekerjaan, tetapkan objek JobPreparationTask ke properti CloudJob.JobPreparationTask pekerjaan Anda. Demikian pula, untuk menggunakan tugas rilis pekerjaan, inisialisasi JobReleaseTask dan tetapkan ke CloudJob.JobReleaseTask pekerjaan tersebut.
Dalam cuplikan kode berikut, myBatchClient
adalah instans BatchClient, dan myPool
merupakan kumpulan yang ada dalam akun Batch.
// 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();
Tugas rilis pekerjaan dijalankan saat pekerjaan dihentikan atau dihapus. Anda mengakhiri pekerjaan dengan menggunakan JobOperations.TerminateJobAsync, dan menghapus pekerjaan dengan menggunakan JobOperations.DeleteJobAsync. Anda biasanya mengakhiri atau menghapus pekerjaan saat tugasnya selesai, atau ketika batas waktu yang Anda tentukan tercapai.
// 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");
Sampel kode di GitHub
Untuk melihat tugas persiapan dan rilis pekerjaan dalam tindakan, buat dan jalankan proyek sampel JobPrepRelease dari GitHub. Aplikasi konsol ini mengambil tindakan berikut:
- Membuat kumpulan dengan dua simpul.
- Membuat pekerjaan dengan persiapan pekerjaan, rilis, dan tugas standar.
- Menjalankan tugas persiapan, yang pertama kali menuliskan ID simpul ke dalam file teks di direktori bersama simpul.
- Menjalankan tugas pada setiap simpul yang menulis ID tugasnya ke file teks yang sama.
- Setelah semua tugas selesai atau batas waktu tercapai, cetak konten file teks setiap simpul ke konsol.
- Menjalankan tugas rilis pekerjaan untuk menghapus file dari simpul ketika pekerjaan selesai.
- Mencetak kode keluar dari tugas persiapan dan rilis untuk setiap simpul tempat tugas tersebut dijalankan.
- Menjeda eksekusi untuk memungkinkan konfirmasi penghapusan pekerjaan dan/atau kumpulan.
Output dari aplikasi sampel mirip dengan contoh berikut:
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...
Nota
Perbedaan waktu pembuatan dan mulai simpul di kumpulan baru berarti beberapa simpul siap untuk tugas sebelum yang lain, sehingga Anda mungkin melihat keluaran yang berbeda. Secara khusus, karena tugas selesai dengan cepat, salah satu simpul dari kumpulan mungkin akan menjalankan semua tugas dari pekerjaan tersebut. Jika ini terjadi, tugas persiapan dan pelepasan pekerjaan tidak ada untuk simpul yang tidak menjalankan tugas apapun.
Melihat tugas persiapan dan rilis pekerjaan di portal Microsoft Azure
Anda dapat menggunakan portal Microsoft Azure untuk melihat properti dan tugas pekerjaan Batch, termasuk tugas persiapan dan rilis pekerjaan. Dari halaman akun Batch Anda, pilih Pekerjaan dari navigasi kiri lalu pilih pekerjaan. Jika Anda menjalankan aplikasi sampel, navigasikan ke halaman pekerjaan setelah tugas selesai, tetapi sebelum Anda menghapus pekerjaan dan kumpulan.
Anda dapat memantau kemajuan dan status pekerjaan dengan memperluas Perkiraan jumlah tugas pada halaman Gambaran Umum atau Tugas pekerjaan.
Cuplikan layar berikut menunjukkan halaman JobPrepReleaseSampleJob setelah aplikasi sampel berjalan. Pekerjaan ini memiliki tugas persiapan dan rilis, sehingga Anda dapat memilih Tugas persiapan atau Tugas rilis di navigasi kiri untuk melihat propertinya.
Langkah berikutnya
- Pelajari tentang pemeriksaan kesalahan untuk pekerjaan dan tugas.
- Pelajari cara menggunakan paket aplikasi untuk menyiapkan simpul komputasi Batch untuk eksekusi tugas.
- Jelajahi berbagai cara untuk menyalin data dan aplikasi ke simpul komputasi Batch.
- Pelajari tentang menggunakan pustaka Konvensi File Azure Batch untuk menyimpan log dan data output pekerjaan dan tugas lainnya.