Pekerjaan dan tugas di Azure Batch

Di Azure Batch, tugas mewakili sebuah unit komputasi. Pekerjaan adalah kumpulan dari tugas-tugas ini. Selengkapnya tentang pekerjaan dan tugas, serta bagaimana keduanya digunakan dalam alur kerja Azure Batch, dijelaskan di bawah ini.

Pekerjaan

Pekerjaan adalah kumpulan dari tugas-tugas. Pekerjaan mengelola cara komputasi dilakukan oleh tugas-tugasnya pada simpul komputasi di dalam kumpulan.

Pekerjaan menentukan kumpulan tempat pekerjaan akan dijalankan. Anda dapat membuat kumpulan baru untuk setiap pekerjaan, atau menggunakan satu kumpulan untuk banyak pekerjaan. Anda dapat membuat satu kumpulan untuk setiap pekerjaan yang terkait dengan jadwal pekerjaan, atau satu kumpulan untuk semua pekerjaan yang terkait dengan jadwal pekerjaan.

Prioritas pekerjaan

Anda dapat menetapkan prioritas pekerjaan opsional untuk pekerjaan yang Anda buat. Layanan Batch menggunakan nilai prioritas pekerjaan untuk menentukan urutan penjadwalan (untuk semua tugas dalam pekerjaan) di dalam setiap kumpulan.

Untuk memperbarui prioritas pekerjaan, panggil Perbarui properti operasi pekerjaan (Batch REST), atau ubah CloudJob.Priority (Batch .NET). Nilai prioritas berkisar dari -1000 (prioritas terendah) hingga +1000 (prioritas tertinggi).

Di dalam kumpulan yang sama, pekerjaan berprioritas lebih tinggi memiliki penjadwalan yang diutamakan daripada pekerjaan dengan prioritas lebih rendah. Tugas pada pekerjaan berprioritas lebih rendah yang sudah berjalan tidak akan didahulukan oleh tugas pada pekerjaan dengan prioritas lebih tinggi. Pekerjaan dengan tingkat prioritas yang setara memiliki peluang yang sama untuk dijadwalkan, dan urutan eksekusi tugas tidak didefinisikan.

Pekerjaan dengan nilai prioritas tinggi yang berjalan dalam satu kumpulan tidak akan memengaruhi penjadwalan pekerjaan yang berjalan di kumpulan terpisah atau di akun Batch yang berbeda. Prioritas pekerjaan tidak berlaku untuk autopools yang dibuat saat pekerjaan itu dikirimkan.

Batasan Pekerjaan

Anda dapat menggunakan batasan pekerjaan guna menentukan batas tertentu untuk pekerjaan Anda:

  • Anda dapat mengatur waktu wallclock maksimum, sehingga jika pekerjaan berjalan lebih lama dari waktu wallclock maksimum yang ditentukan, pekerjaan dan semua tugasnya dihentikan.
  • Anda bisa menentukan jumlah maksimum coba-lagi tugas sebagai batasan, termasuk apakah tugas selalu atau tidak pernah dicoba-lagi. Mencoba-lagi tugas berarti bahwa jika tugas gagal, tugas akan diantrekan ulang untuk dijalankan lagi.

Tugas manajer pekerjaan dan penghentian otomatis

Aplikasi klien Anda bisa menambahkan tugas ke pekerjaan, atau Anda bisa menentukan tugas manajer pekerjaan. Tugas manajer pekerjaan berisi informasi yang diperlukan untuk membuat tugas yang diperlukan bagi suatu pekerjaan, dengan tugas manajer pekerjaan dijalankan pada salah satu simpul komputasi di dalam kumpulan. Tugas manajer pekerjaan ditangani secara khusus oleh Batch; tugas tersebut diantrekan segera setelah pekerjaan dibuat dan dihidupkan ulang jika gagal. Tugas manajer pekerjaan diperlukan untuk pekerjaan yang dibuat oleh jadwal pekerjaan, karena itu adalah satu-satunya cara untuk menentukan tugas sebelum pekerjaan diinstansiasi.

Secara default, pekerjaan tetap dalam kondisi aktif ketika semua tugas dalam pekerjaan selesai. Anda dapat mengubah perilaku ini agar pekerjaan secara otomatis dihentikan ketika semua tugas dalam pekerjaan selesai. Mengatur properti pekerjaanOnAllTasksComplete (OnAllTasksComplete di Batch .NET) ke terminatejob*' untuk secara otomatis menghentikan pekerjaan ketika semua tugasnya telah selesai.

Layanan Batch menganggap pekerjaan tanpa tugas telah menyelesaikan semua tugasnya. Oleh karena itu, opsi ini paling sering digunakan dalam tugas manajer pekerjaan. Jika Anda ingin menggunakan penghentian pekerjaan otomatis tanpa manajer pekerjaan, Anda harus menetapkan properti pekerjaan baru onAllTasksComplete ke noaction, lalu atur ke terminatejob *' hanya setelah Anda selesai menambahkan tugas ke pekerjaan.

Pekerjaan terjadwal

Jadwal pekerjaan memungkinkan Anda untuk membuat pekerjaan berulang dalam layanan Batch. Jadwal pekerjaan menentukan kapan pekerjaan dijalankan dan menyertakan spesifikasi untuk pekerjaan yang akan dijalankan. Anda dapat menentukan durasi jadwal (berapa lama dan kapan jadwal berlaku) serta seberapa sering pekerjaan dibuat selama periode yang dijadwalkan.

Tugas

Tugas adalah unit komputasi yang terkait dengan pekerjaan. Tugas berjalan pada simpul. Tugas ditetapkan ke simpul untuk dieksekusi, atau diantrekan hingga simpul menjadi kosong. Sederhananya, tugas menjalankan satu atau beberapa program atau skrip pada simpul komputasi untuk melaksanakan pekerjaan yang perlu Anda selesaikan.

Saat membuat tugas, Anda bisa menentukan:

  • Baris perintah untuk tugas tersebut. Ini adalah baris perintah yang menjalankan aplikasi atau skrip Anda pada simpul komputasi.

    Penting untuk diketahui bahwa baris perintah tidak berjalan di bawah shell. Oleh karena itu, baris perintah secara alami tidak dapat memanfaatkan fitur shell seperti ekspansi variabel lingkungan (termasuk PATH). Untuk memanfaatkan fitur tersebut, Anda harus memanggil shell di baris perintah, seperti dengan meluncurkan cmd.exe pada simpul Windows atau /bin/shpada Linux:

    cmd /c MyTaskApplication.exe %MY_ENV_VAR%

    /bin/sh -c MyTaskApplication $MY_ENV_VAR

    Jika tugas Anda perlu menjalankan aplikasi atau skrip yang tidak ada dalam simpulPATH atau variabel lingkungan referensi, panggil shell secara eksplisit pada baris perintah tugas.

  • File sumber yang berisi data yang akan diproses. Seluruh file ini secara otomatis disalin pada simpul dari penyimpanan Blob di akun Azure Storage sebelum baris perintah tugas dijalankan. Untuk informasi selengkapnya, lihat Memulai tugas dan File dan direktori.

  • Variabel lingkunganyang diperlukan oleh aplikasi Anda. Untuk informasi selengkapnya, lihat Pengaturan lingkungan untuk tugas.

  • Batasan dalam menjalankan tugas. Misalnya, batasan mencakup waktu maksimum tugas yang diizinkan untuk dijalankan, berapa kali tugas yang gagal harus diulang kembali, dan waktu maksimum file dalam direktori kerja tugas dipertahankan.

  • Paket aplikasi untuk disebarkan ke simpul komputasi tempat tugas terjadwal untuk dijalankan. Paket aplikasi menyediakan penyebaran dan penerapan versi aplikasi yang disederhanakan untuk dijalankan tugas Anda. Paket aplikasi tingkat tugas sangat berguna dalam lingkungan kumpulan bersama, yaitu saat pekerjaan yang berbeda dijalankan pada satu kumpulan, dan kumpulan tidak dihapus ketika pekerjaan selesai. Jika tugas Anda memiliki lebih sedikit tugas daripada simpul di dalam kumpulan, paket aplikasi tugas dapat meminimalkan transfer data karena aplikasi Anda hanya disebarkan ke simpul yang menjalankan tugas.

  • Referensi citra kontainer pada Docker Hub atau registri privat dan pengaturan tambahan untuk membuat kontainer Docker di mana tugas berjalan pada simpul. Anda hanya menentukan informasi ini jika kumpulan disiapkan dengan konfigurasi kontainer.

Catatan

Masa pakai maksimum tugas, dari ketika ditambahkan ke pekerjaan hingga selesai, adalah 180 hari. Tugas yang sudah selesai bertahan selama 7 hari; data untuk tugas yang tidak diselesaikan dalam masa pakai maksimum tidak dapat diakses.

Selain tugas yang Anda tentukan untuk melakukan komputasi pada simpul, beberapa tugas khusus juga disediakan oleh layanan Batch:

Tugas mulai

Jika Anda menghubungkan tugas mulai dengan kumpulan, Anda dapat menyiapkan lingkungan operasi dari simpulnya. Misalnya, Anda dapat melakukan tindakan seperti memasang aplikasi yang menjalankan tugas Anda, atau memulai proses latar belakang. Tugas mulai berjalan setiap kali simpul dimulai, selama tugas berada di dalam kumpulan. Ini termasuk ketika simpul pertama kali ditambahkan ke kumpulan dan ketika dihidupkan ulang atau dicitrakan ulang.

Manfaat utama dari tugas mulai adalah bahwa tugas ini berisi semua informasi yang diperlukan untuk mengonfigurasi sebuah simpul komputasi dan memasang aplikasi yang diperlukan untuk eksekusi tugas. Oleh karena itu, meningkatkan jumlah simpul dalam kumpulan sesederhana menentukan jumlah simpul target baru. Tugas mulai menyediakan informasi yang diperlukan bagi layanan Batch guna mengonfigurasi simpul baru dan menyiapkannya untuk menerima tugas.

Sebagaimana tugas Azure Batch lainnya, Anda dapat menentukan daftar file sumber pada Azure Storage, selain baris perintah yang akan dijalankan. Pertama-tama, layanan Batch menyalin file sumber ke simpul dari Azure Storage, lalu menjalankan baris perintah. Untuk tugas mulai kumpulan, daftar file biasanya berisi aplikasi tugas dan dependensinya.

Namun, tugas mulai juga dapat menyertakan data referensi yang akan digunakan oleh semua tugas yang berjalan pada simpul komputasi. Contohnya, baris perintah tugas mulai dapat melakukan robocopy operasi untuk menyalin file aplikasi (yang ditentukan sebagai file sumber dan diunduh ke simpul) dari direktori kerja tugas mulai ke folder bersama, lalu menjalankan MSI atau setup.exe.

Biasanya, Anda ingin layanan Batch menunggu tugas mulai selesai sebelum mempertimbangkan node siap untuk diberi tugas. Namun, Anda dapat mengonfigurasi ini secara berbeda sesuai kebutuhan.

Jika tugas mulai gagal pada simpul komputasi, maka status simpul diperbarui untuk menampilkan kegagalan, dan simpul tidak diberi tugas apa pun. Tugas awal dapat gagal jika ada masalah dalam menyalin file sumbernya dari penyimpanan, atau jika proses yang dijalankan oleh baris perintahnya mengembalikan kode keluar bukan nol.

Jika Anda menambahkan atau memperbarui tugas awal untuk kumpulan yang ada, Anda harus mulai ulang simpul komputasinya agar tugas mulai diterapkan pada simpul.

Catatan

Batch membatasi ukuran total tugas mulai, yang mencakup file sumber dan variabel lingkungan. Jika Anda perlu mengurangi ukuran tugas mulai, Anda bisa menggunakan salah satu dari dua pendekatan:

  1. Anda dapat menggunakan paket aplikasi untuk mendistribusikan aplikasi atau data ke setiap simpul di dalam kumpulan Batch Anda. Untuk informasi selengkapnya tentang paket aplikasi, lihat Menyebarkan aplikasi ke simpul komputasi dengan paket aplikasi Batch.

  2. Anda dapat membuat arsip zip secara manual yang berisi file aplikasi Anda. Unggah arsip zip Anda ke Azure Storage sebagai blob. Tentukan arsip zip sebagai file sumber untuk tugas mulai Anda. Sebelum Anda menjalankan baris perintah untuk tugas mulai, buka kompresi arsip dari baris perintah.

    Untuk membuka kompresi arsip, Anda dapat menggunakan alat pengarsipan pilihan Anda. Anda harus menyertakan alat yang Anda gunakan untuk membuka kompresi arsip sebagai file sumber bagi tugas mulai.

Tugas manajer pekerjaan

Anda biasanya menggunakan tugas manajer pekerjaan untuk mengontrol dan/atau memantau eksekusi pekerjaan. Misalnya, tugas manajer pekerjaan sering digunakan untuk membuat dan mengirimkan tugas untuk pekerjaan, menentukan tugas tambahan yang dijalankan, dan menentukan kapan pekerjaan selesai.

Namun, tugas manajer pekerjaan tidak dibatasi untuk kegiatan ini. Tugas manajer pekerjaan adalah tugas lengkap yang dapat melakukan tindakan apa pun yang diperlukan untuk pekerjaan itu. Misalnya, tugas manajer pekerjaan dapat mengunduh file yang ditentukan sebagai parameter, menganalisis konten dari file tersebut, dan mengirimkan tugas tambahan berdasarkan konten tersebut.

Tugas manajer pekerjaan dimulai sebelum semua tugas lainnya. Tugas manajer pekerjaan menyediakan fitur-fitur berikut:

  • Tugas manajer pekerjaan secara otomatis dikirimkan sebagai tugas oleh layanan Batch ketika pekerjaan dibuat.
  • Tugas manajer pekerjaan dijadwalkan untuk dijalankan sebelum tugas-tugas lain dalam pekerjaan.
  • Simpul terkait dengan tugas manajer pekerjaan adalah yang terakhir dihapus dari kumpulan ketika kumpulan sedang dirampingkan.
  • Penghentiannya dapat dikaitkan dengan penghentian semua tugas dalam pekerjaan.
  • Tugas manajer pekerjaan diberikan prioritas tertinggi ketika perlu dihidupkan ulang. Jika simpul menganggur (idle) tidak tersedia, layanan Batch akan menghentikan salah satu tugas lain yang sedang berjalan di dalam kumpulan untuk memberi ruang bagi tugas manajer pekerjaan dijalankan.
  • Tugas manajer pekerjaan dalam satu pekerjaan tidak memiliki prioritas atas tugas pekerjaan lain. Di seluruh pekerjaan, hanya prioritas tingkat pekerjaan yang diamati.

Tugas persiapan dan rilis pekerjaan

Batch menyediakan tugas persiapan kerja untuk pengaturan eksekusi pra-pekerjaan, dan tugas rilis pekerjaan untuk pemeliharaan atau pembersihan pasca-pekerjaan.

Tugas persiapan pekerjaan berjalan pada semua simpul komputasi yang dijadwalkan untuk menjalankan tugas, sebelum tugas pekerjaan lainnya dijalankan. Misalnya, Anda dapat menggunakan tugas persiapan pekerjaan untuk menyalin data yang dibagikan oleh semua tugas, tetapi hanya untuk pekerjaan tersebut.

Setelah pekerjaan selesai, tugas rilis pekerjaan berjalan di setiap simpul pada kumpulan yang menjalankan setidaknya satu tugas. Misalnya, tugas rilis pekerjaan dapat menghapus data yang disalin oleh tugas persiapan pekerjaan, atau dapat memadatkan dan mengunggah data log diagnostik.

Tugas persiapan dan rilis pekerjaan memungkinkan Anda menentukan baris perintah untuk dijalankan saat tugas dipanggil. Tugas persiapan dan rilis pekerjaan menawarkan fitur seperti mengunduh file, eksekusi yang ditinggikan, variabel lingkungan kustom, durasi eksekusi maksimum, jumlah coba lagi, dan waktu penyimpanan file.

Untuk informasi selengkapnya tentang tugas persiapan dan rilis pekerjaan, lihat Menjalankan tugas persiapan dan penyelesaian pekerjaan pada simpul komputasi Azure Batch.

Tugas multi instans

Tugas multi instans adalah tugas yang dikonfigurasi untuk berjalan pada lebih dari satu simpul komputasi secara bersamaan. Dengan tugas multi instans, Anda dapat mengaktifkan skenario komputasi berperforma tinggi yang memerlukan sekelompok simpul komputasi yang dialokasikan bersama untuk memproses satu beban kerja, seperti Antarmuka Penerusan Pesan (Message Passing Interface/MPI).

Untuk diskusi terperinci tentang menjalankan pekerjaan MPI pada Batch dengan menggunakan pustaka Batch .NET, lihat Menggunakan tugas multi instans untuk menjalankan aplikasi Antarmuka Penerusan Pesan (MPI) di Azure Batch.

Tugas dependensi

Tugas dependensi , sesuai namanya, memungkinkan Anda menentukan bahwa tugas bergantung pada penyelesaian tugas lain sebelum dijalankan. Fitur ini memberikan dukungan untuk situasi di mana tugas "hilir" mengonsumsi output tugas "hulu", atau ketika tugas hulu melakukan beberapa inisialisasi yang diperlukan oleh tugas hilir.

Untuk menggunakan fitur ini, Anda harus terlebih dahulu mengaktifkan dependensi tugas pada tugas Batch Anda. Kemudian, untuk setiap tugas yang bergantung pada tugas lain (atau sejumlah tugas lainnya), Anda tentukan tugas mana yang bergantung pada tugas tersebut.

Dengan dependensi tugas, Anda bisa mengonfigurasi skenario seperti berikut ini:

  • taskB tergantung pada taskA (taskB tidak akan memulai eksekusi sampai taskA selesai).
  • taskC bergantung pada taskA dan taskB.
  • taskD tergantung pada rentang tugas, seperti tugas 1 hingga 10, sebelum dijalankan.

Untuk detail selengkapnya, lihat Dependensi tugas di Azure Batch dan sampel kode TaskDependencies di azure-batch-samplesrepositori GitHub.

Pengaturan lingkungan untuk tugas

Setiap tugas yang dijalankan oleh layanan Batch memiliki akses ke variabel lingkungan yang ditetapkannya pada simpul komputasi. Ini termasuk variabel lingkungan yang ditentukan oleh layanan Batch dan variabel lingkungan kustom yang dapat Anda definisikan untuk tugas Anda. Aplikasi dan skrip yang dijalankan tugas Anda memiliki akses ke berbagai variabel lingkungan ini selama eksekusi.

Anda dapat mengatur variabel lingkungan kustom pada tingkat tugas atau pekerjaan dengan mengisi properti pengaturan lingkungan untuk beberapa entitas ini. Untuk detail selengkapnya, lihat operasi Tambahkan tugas ke pekerjaan (Batch REST), atau properti CloudTask.EnvironmentSettings dan CloudJob.CommonEnvironmentSettings di Batch .NET.

Aplikasi atau layanan klien Anda dapat memperoleh variabel lingkungan tugas, baik yang ditentukan layanan maupun kustom, dengan operasi Dapatkan informasi tentang tugas (Batch REST) atau dengan mengakses properti CloudTask.EnvironmentSettings (Batch .NET). Proses yang dijalankan pada simpul komputasi dapat mengakses kedua hal tersebut serta variabel lingkungan lainnya pada simpul, misalnya, dengan menggunakan sintaksis yang familier dengan %VARIABLE_NAME% (Windows) $VARIABLE_NAME atau (Linux).

Anda dapat menemukan daftar semua variabel lingkungan yang ditentukan layanan dalam Variabel lingkungan node komputasi.

Langkah berikutnya