Bagikan melalui


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. Ini mengendalikan bagaimana komputasi dilakukan oleh tugas-tugasnya pada simpul komputasi dalam suatu kelompok.

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) 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. Mengulangi pekerjaan berarti jika pekerjaan gagal, pekerjaan akan dijadwalkan ulang.

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 yang tidak memiliki tugas sebagai 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. Itu 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 dicatat bahwa baris perintah tidak dijalankan dalam shell. Oleh karena itu, tidak dapat dengan sendirinya memanfaatkan fitur-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. File-file ini secara otomatis disalin ke simpul dari penyimpanan Blob di akun Azure Storage sebelum baris perintah tugas dieksekusi. 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 node komputasi tempat tugas dijadwalkan untuk dijalankan. Paket aplikasi menyediakan penerapan dan pengelolaan versi aplikasi yang disederhanakan untuk tugas Anda jalankan. 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 serta pengaturan tambahan untuk membuat kontainer Docker tempat tugas dijalankan pada node. Anda hanya perlu menentukan informasi ini jika kumpulan tersebut sudah diatur 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:

Mulai tugas

Jika Anda menghubungkan tugas awal dengan kumpulan, Anda dapat menyiapkan lingkungan operasi dari simpul-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 simpul tetap dalam kumpulan. Ini termasuk saat node pertama kali ditambahkan ke dalam pool dan saat di-restart atau di-image 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 awal kumpulan, daftar file biasanya berisi aplikasi tugas dan ketergantungannya.

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

Biasanya, Anda ingin layanan Batch menunggu hingga tugas awal selesai sebelum menganggap node siap untuk menerima 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 mulai untuk sebuah kumpulan yang ada, Anda harus me-reboot simpul komputasinya agar tugas mulai tersebut 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, ekstrak arsip dari baris perintah.

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

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. Ini adalah tugas yang sepenuhnya mampu melakukan tindakan apa pun yang diperlukan untuk pekerjaan tersebut. 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. Firewall Manager menyediakan fitur-fitur berikut:

  • Tugas otomatis dikirimkan oleh layanan Batch ketika pekerjaan dibuat.
  • Tugas ini dijadwalkan untuk dijalankan sebelum tugas-tugas lain dalam sebuah pekerjaan.
  • Simpul yang terkait 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 yang menganggur tidak tersedia, layanan Batch mungkin akan menghentikan salah satu tugas lain yang sedang berjalan dalam kumpulan untuk memberi ruang bagi tugas manajer pekerjaan agar dapat dijalankan.
  • Tugas manajer pekerjaan dalam satu pekerjaan tidak memiliki prioritas atas tugas pekerjaan lain. Dalam berbagai pekerjaan, hanya prioritas tingkat pekerjaan yang diamati.

Tugas persiapan dan pelepasan pekerjaan

Batch menyediakan tugas persiapan kerja untuk persiapan eksekusi pra-pekerjaan, dan tugas penyelesaian pekerjaan untuk pemeliharaan atau pembersihan setelah 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 unik untuk pekerjaan tersebut.

Setelah pekerjaan selesai, tugas pelepasan pekerjaan berjalan di setiap simpul pada pool 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. Mereka menawarkan fitur seperti mengunduh file, eksekusi elevated, variabel lingkungan kustom, durasi eksekusi maksimum, jumlah percobaan ulang, 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 dengan beberapa instance

Tugas multi-instans adalah tugas yang dikonfigurasi untuk berjalan pada lebih dari satu node komputasi pada waktu yang 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.

Dependensi tugas

Ketergantungan tugas, sesuai namanya, memungkinkan Anda menentukan bahwa suatu tugas bergantung pada penyelesaian tugas lain sebelum dapat 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 informasi selengkapnya, lihat Dependensi tugas di Azure Batch dan sampel kode TaskDependencies di repositori GitHub azure-batch-samples .

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 informasi selengkapnya, lihat properti Tambahkan tugas ke operasi 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