Gunakan opsi layanan pause-on-failure untuk mempertahankan status tugas batch Dataflow Anda. Fitur ini memungkinkan Anda menjeda eksekusi tugas, mengatasi masalah yang berada di luar pipeline, dan melanjutkan pemrosesan tanpa kehilangan pekerjaan yang telah selesai. Saat tugas dijeda menggunakan fitur ini, Anda tidak dapat mengubah kode pipeline atau konfigurasi VM pekerja, seperti jenis mesin.
Dengan mengaktifkan kemampuan ini, Anda dapat mengelola biaya resource dengan lebih baik dan meningkatkan keandalan tugas selama gangguan sementara atau batasan kuota. Anda dapat mempertahankan kontrol atas siklus proses pipeline dengan mengonfigurasi durasi jeda maksimum saat mengaktifkan pause-on-failure. Anda juga dapat menjeda atau melanjutkan pipeline yang mengaktifkan flag pause-on-failure secara manual.
Manfaat pause-on-failure
Opsi layanan pause-on-failure memungkinkan Anda mempertahankan progres tugas batch selama gangguan, sehingga mengurangi total waktu komputasi dan pengeluaran resource.
- Retensi checkpoint: Jika tugas gagal, Anda dapat melanjutkannya dari checkpoint terakhir yang direkam, bukan memulai ulang dari awal. Hal ini menghindari kebutuhan untuk memproses ulang blok data yang telah selesai, yang berarti Anda tidak perlu membayar untuk mengulang pekerjaan yang telah berhasil diselesaikan.
- Mengurangi dependensi eksternal: Lindungi pipeline Anda dari masalah sementara, seperti gangguan sementara atau batas frekuensi di layanan eksternal. Menjeda tugas memberi Anda kesempatan untuk mengatasi penyebab utama sebelum melanjutkan eksekusi tanpa kehilangan pekerjaan yang telah selesai.
- Menangani kegagalan non-deterministik: Untuk workload yang rentan terhadap kegagalan intermiten atau non-deterministik, opsi ini memungkinkan Anda mengamankan progres inkremental pada setiap percobaan berurutan, sehingga mencegah kegagalan tugas total.
- Mengelola resource dan kuota: Jeda tugas batch berprioritas rendah untuk mengosongkan kuota sementara atau mengalokasikan ulang resource bernilai tinggi, seperti GPU atau TPU, ke workload mendesak seperti pelatihan model machine learning atau inferensi tanpa kehilangan progres dasarnya.
Dukungan dan batasan
Menjeda tugas (secara manual atau saat terjadi kegagalan) memiliki persyaratan dan batasan berikut:
- Tugas Dataflow harus berupa tugas batch.
- Tugas harus menggunakan Dataflow shuffle.
- Anda harus menentukan opsi layanan
pause_on_failuresaat menjalankan tugas. - Tugas tidak boleh gagal dijeda sebelumnya.
- Konten direktori sementara tugas tidak boleh dihapus saat tugas dijeda.
Perilaku tugas pause-on-failure
Saat Anda mengaktifkan fitur pause-on-failure, tugas Anda akan otomatis dijeda setelah item kerja gagal empat kali. Kegagalan ini diidentifikasi dalam log Anda
sebagai pesan tugas yang berisi Error message from worker dan pesan pekerja
yang berisi Completed work item ITEM_NUMBER
UNSUCCESSFULLY. Jenis kegagalan lainnya, seperti kehabisan stok dan error kuota, tidak memicu jeda otomatis. Sebaliknya, kegagalan ini menyebabkan tugas gagal seperti biasa. Mengaktifkan pause-on-failure juga memungkinkan Anda menjeda tugas secara manual.
Transisi status tugas
Saat tugas Dataflow dijeda, tugas tersebut akan berpindah melalui status berikut:
- Menjeda: Status perantara saat tugas menghentikan pemrosesan, menghapus VM pekerja Anda, dan mengarsipkan status backend. Anda masih ditagih untuk VM hingga layanan selesai menghapusnya.
- Dijeda: Tugas sepenuhnya dihentikan. Pada tahap ini, Anda hanya ditagih untuk data Shuffle yang diarsipkan.
Perilaku luar biasa
Pause-on-failure mungkin berperilaku tidak terduga dalam skenario berikut:
- Jika Anda menjeda tugas yang hampir selesai secara manual, tugas mungkin akan selesai, bukan dijeda.
- Dalam kasus yang jarang terjadi, tugas mungkin gagal dijeda. Dalam kasus ini, tugas akan kembali ke status berjalan jika Anda menjedanya secara manual, atau tugas akan memasuki status gagal jika tugas dijeda karena error.
Melanjutkan pemrosesan
Saat tugas dilanjutkan, layanan akan menangani item kerja sebagai berikut:
- Pekerjaan yang telah selesai: Layanan tidak memproses ulang tahap atau item kerja yang telah selesai sepenuhnya saat tugas dijeda.
- Pekerjaan yang sedang berlangsung: Item kerja yang sedang berlangsung saat tugas dijeda akan diproses ulang dari awal.
- Jumlah kegagalan: Semua jumlah kegagalan item kerja direset ke nol, yang berarti tugas Anda tidak akan otomatis dijeda lagi hingga item kerja gagal empat kali lagi.
Mengaktifkan pause-on-failure
Untuk mengaktifkan pause-on-failure untuk tugas Anda, gunakan opsi layanan Dataflow pause_on_failure saat Anda menjalankan tugas.
Java
--dataflowServiceOptions=pause_on_failure
Python
--dataflow_service_options=pause_on_failure
Go
--dataflow_service_options=pause_on_failure
Menentukan durasi jeda maksimum
Secara default, tugas Anda akan tetap dijeda hingga 7 hari (7d). Anda dapat mengonfigurasi durasi jeda maksimum ini secara manual antara 1 jam (1h) dan 7 hari (7d).
Hanya d (hari) dan h (jam) yang didukung. Satu hari didefinisikan sebagai 24 jam.
Hal ini mungkin tidak sesuai dengan panjang hari kalender karena faktor-faktor seperti waktu musim panas.
Jika durasi jeda maksimum terlampaui, tugas Anda akan dibatalkan dalam satu jam berikutnya. Setelah tugas dibatalkan, Anda tidak dapat melanjutkannya.
Misalnya, contoh berikut menetapkan durasi jeda maksimum menjadi 1 hari:
Java
--dataflowServiceOptions=pause_on_failure=pause_duration:1d
Python
--dataflow_service_options=pause_on_failure=pause_duration:1d
Go
--dataflow_service_options=pause_on_failure=pause_duration:1d
Menjeda tugas Dataflow secara manual
Untuk menjeda tugas secara manual, lakukan langkah-langkah berikut.
Konsol
Buka halaman Tugas Dataflow.
Klik tugas yang ingin Anda jeda.
Untuk menjeda tugas, status tugas harus berjalan.
Di halaman detail tugas, klik Jeda.
Jika Anda tidak melihat tombol Jeda, tugas Anda tidak dapat dijeda karena batasan pause-on-failure.
gcloud
Untuk menjeda tugas Dataflow, Anda dapat menggunakan perintah gcloud dataflow
jobs di
Cloud Shell atau terminal lokal yang diinstal dengan
gcloud CLI.
Buka shell Anda.
Buat daftar ID tugas untuk tugas Dataflow yang sedang berjalan, lalu catat ID tugas untuk tugas yang ingin Anda jeda:
gcloud dataflow jobs listJika Anda tidak menetapkan flag
--region, tugas Dataflow dari semua region yang tersedia akan ditampilkan.Jalankan perintah berikut:
gcloud dataflow jobs pause JOB_ID --region=REGIONGanti JOB_ID dengan ID tugas yang Anda catat dan REGION dengan region tugas.
API
Untuk menjeda tugas menggunakan Dataflow REST
API, gunakan
projects.locations.jobs.update
endpoint, dan teruskan isi permintaan berikut:
{
"requestedState": "JOB_STATE_PAUSING"
}
Penting: Jangan meneruskan
JOB_STATE_PAUSED secara tidak sengaja sebagai requestedState.
Membatalkan tugas Dataflow yang sedang dijeda atau dijeda
Anda dapat membatalkan tugas Dataflow yang sedang dijeda atau dijeda seperti biasa. Setelah Anda membatalkan tugas, Anda tidak akan lagi ditagih untuk tugas tersebut, tetapi tugas tidak dapat dilanjutkan lagi.
Tugas yang dijeda akan otomatis dibatalkan setelah durasi jeda maksimumnya berakhir.
Melanjutkan tugas Dataflow
Untuk melanjutkan tugas yang dijeda secara manual, ikuti langkah-langkah berikut:
Konsol
Buka halaman Tugas Dataflow.
Klik tugas yang ingin Anda lanjutkan.
Untuk melanjutkan tugas, status tugas harus dijeda (bukan menjeda).
Di halaman detail tugas, klik Lanjutkan.
gcloud
Untuk melanjutkan tugas Dataflow, Anda dapat menggunakan perintah gcloud dataflow
jobs di
Cloud Shell atau terminal lokal yang diinstal dengan
gcloud CLI.
Buka shell Anda.
Buat daftar ID tugas untuk tugas Dataflow yang dijeda, lalu catat ID tugas untuk tugas yang ingin Anda lanjutkan:
gcloud dataflow jobs listJika Anda tidak menetapkan flag
--region, tugas Dataflow dari semua region yang tersedia akan ditampilkan.Jalankan perintah berikut:
gcloud dataflow jobs resume JOB_ID --region=REGIONGanti JOB_ID dengan ID tugas dan REGION dengan region tugas.
API
Untuk melanjutkan tugas menggunakan Dataflow REST
API, gunakan
projects.locations.jobs.update
endpoint, dan teruskan isi permintaan berikut:
{
"requestedState": "JOB_STATE_RUNNING"
}
Langkah berikutnya
- Pelajari cara menghentikan pipeline yang sedang berjalan.
- Pahami Dataflow Shuffle untuk tugas batch jobs, yang diperlukan untuk menggunakan fitur ini.
- Lihat pandahan Memecahkan masalah pipeline untuk mengatasi error.
- Pelajari cara memecahkan masalah tugas batch yang lambat atau macet.