Menjadwalkan tugas dependen

Dokumen ini menjelaskan cara membuat dan menjalankan tugas yang tidak dijadwalkan hingga tugas tertentu berhasil atau gagal. Untuk mempelajari lebih lanjut status tugas, lihat Ringkasan pembuatan dan eksekusi tugas.

Jika Anda memiliki workload dengan persyaratan resource yang bervariasi, pertimbangkan untuk menggunakan tugas dependen untuk membuat rangkaian tugas otomatis yang masing-masing menggunakan VM terpisah. Misalnya, pisahkan jenis VM yang digunakan untuk operasi dengan permintaan rendah (seperti penyiapan data) dan operasi yang intensif komputasi (seperti pemrosesan data). Dengan menggunakan tugas dependen untuk membantu mengoptimalkan konsumsi resource, Anda dapat mengurangi biaya dan penggunaan kuota.

Sebelum memulai

  1. Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
  2. Untuk mendapatkan izin yang Anda perlukan untuk membuat tugas, minta administrator Anda untuk memberi Anda peran IAM berikut:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Pembatasan

Tugas dependen memiliki batasan berikut:

  • Tugas dependen dapat memiliki hingga empat dependensi. Setiap dependensi harus berisi nama tugas unik dan salah satu status wajib berikut:

    • SUCCEEDED: berhasil
    • FAILED: gagal
    • FINISHED: berhasil atau gagal
  • Saat Anda membuat tugas dependen, semua tugas dependensinya harus ada.

  • Tugas dependen tidak dapat memasuki status terjadwal (SCHEDULED) hingga setiap tugas dependensi memasuki status yang diperlukan. Jika tugas dependensi tidak dapat memasuki status yang diperlukan, tugas dependen akan langsung gagal tanpa dijadwalkan.

  • Seperti semua tugas, tugas dependen tidak dapat memasuki status terjadwal (SCHEDULED) jika tugas melebihi waktu tunggu maksimum dalam antrean. Batch menerapkan batas ini untuk mencegah tugas Anda menjadi tidak valid. Oleh karena itu, jika Anda memperkirakan waktu yang tersisa yang diperlukan untuk menyelesaikan tugas dependensi mungkin melebihi batas ini, pertimbangkan untuk melakukan salah satu atau beberapa hal berikut:

    • Jika Anda belum membuat tugas dependensi, coba kurangi perkiraan waktu proses tugas dependensi. Misalnya, Anda dapat meningkatkan paralelisme beban kerja atau membatasi waktu proses tugas dan runnable yang tidak perlu berhasil.
    • Tunggu hingga waktu berjalan yang diharapkan dari tugas dependensi lebih rendah dari batas sebelum membuat tugas dependen.

Membuat tugas dependen

Anda dapat membuat tugas yang bersifat dependen menggunakan metode berikut:

Untuk menentukan bahwa tugas bersifat dependen, sertakan kolom dependencies[].items, yang mendukung satu atau beberapa dependensi yang ditentukan sebagai key-value pair, dalam isi utama di file JSON:

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

Ganti kode berikut:

  • DEPENDENCY_JOB_NAME: nama tugas dependensi, yang harus mencapai status yang diperlukan sebelum tugas dependen ini diizinkan untuk dijadwalkan.

  • REQUIRED_STATE: status yang diperlukan untuk tugas dependensi yang sesuai, yang harus berupa SUCCEEDED, FAILED, atau FINISHED.

Misalnya, tugas dependen dengan tiga dependensi dapat memiliki file konfigurasi JSON yang mirip dengan berikut ini:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

Langkah berikutnya