Straggler adalah item pekerjaan yang memperlambat tugas Dataflow Anda dengan mencegah pekerjaan dilakukan secara paralel.
Untuk pipeline batch, straggler didefinisikan sebagai item pekerjaan dengan karakteristik berikut:
- Item pekerjaan ini memerlukan waktu yang jauh lebih lama untuk diselesaikan daripada item pekerjaan lain dalam tahap yang sama.
- Hal ini mengurangi paralelisme dalam tahap.
- Tindakan ini akan memblokir pekerjaan baru agar tidak dimulai.
Dalam kasus terburuk, straggler akan memblokir penyelesaian tahap karena sebagian kecil pekerjaan sedang berlangsung, sehingga menyebabkan penundaan keseluruhan tugas.
Dataflow mendeteksi straggler yang terjadi selama tugas batch. Jika mendeteksi straggler, Dataflow juga akan mencoba menentukan penyebab straggler.
Melihat straggler di konsol Google Cloud
Setelah memulai tugas Dataflow, Anda dapat menggunakan konsol Google Cloud untuk melihat straggler yang terdeteksi.
Anda dapat melihat straggler menurut tahap atau pekerja. Gunakan tampilan ini untuk menemukan tahap mana yang memiliki straggler, lalu tentukan pekerja tempat straggler terjadi dalam setiap tahap.
Melihat straggler menurut tahap
Untuk melihat straggler menurut tahap:
Di konsol Google Cloud, buka halaman Jobs Dataflow.
Buka Tugas
Klik nama tugas.
Di halaman detail tugas, klik tab Execution details.
Dalam daftar Tampilan grafik, pilih Progres tahap. Grafik progres menampilkan jumlah gabungan dari semua straggler yang terdeteksi dalam setiap tahap.
Untuk melihat detail tahap, arahkan kursor ke batang untuk tahap. Untuk melihat pekerja untuk tahap tersebut, klik Lihat pekerja di panel detail.
Melihat pekerja yang tertinggal
Untuk melihat straggler menurut pekerja:
Di konsol Google Cloud, buka halaman Jobs Dataflow.
Buka Tugas
Klik nama tugas.
Di halaman detail tugas, klik tab Execution details.
Dalam daftar Tampilan grafik, pilih Progres pekerja.
Di daftar Filter pekerja menurut tahap, pilih tahap. Grafik progres menampilkan straggler yang terdeteksi untuk tahap tersebut. Panel memiliki bayangan yang lebih gelap pada titik saat straggler pertama kali terdeteksi.
Untuk melihat detail pekerja, tahan kursor ke batang untuk pekerja tersebut.
Di panel Stage info, bagian Straggler details mencantumkan pekerja lambat untuk semua pekerja yang ditampilkan di halaman, dengan informasi berikut:
- Waktu mulai saat straggler terdeteksi.
- Pekerja yang mengalami straggler.
- Penyebabnya, jika diketahui.
Memecahkan masalah straggler batch
Dataflow mendeteksi penyebab straggler berikut dalam pipeline batch:
Tombol pintasan. Tombol pintasan adalah tombol yang mewakili lebih banyak elemen daripada tombol lain dalam
PCollection
yang sama. Untuk informasi selengkapnya, lihat Memecahkan masalah straggler yang disebabkan oleh tombol pintasan dalam dokumen ini.Pekerja Lambat. Pada pekerja lambat, item pekerjaan berjalan lebih lambat dari biasanya. Sering kali, kecepatan pemrosesan pekerja lambat lebih lambat daripada kecepatan pemrosesan pekerja yang melakukan pekerjaan serupa pada tahap yang sama. Banyak faktor yang dapat menyebabkan pekerja lambat, termasuk kekurangan CPU, thrashing, arsitektur mesin, dan proses pekerja yang macet. Jika terjadi kelambatan, Dataflow akan mencoba memitigasi masalah tersebut secara otomatis. Untuk informasi selengkapnya, lihat Memitigasi straggler secara otomatis yang disebabkan oleh pekerja lambat dalam dokumen ini.
Penyebab tidak dapat ditentukan. Untuk tugas yang lambat dengan penyebab yang tidak ditentukan, lihat langkah-langkah pemecahan masalah umum untuk tugas batch lambat di "Memecahkan masalah tugas yang lambat atau macet".
Memecahkan masalah straggler yang disebabkan oleh tombol pintasan
Berbagai faktor dapat menyebabkan straggler, tetapi salah satu penyebab umum adalah adanya
hot key. Hot key adalah kunci yang mewakili lebih banyak elemen secara signifikan daripada
kunci lain dalam PCollection
yang sama. Tombol pintasan dapat membuat straggler karena
membatasi kemampuan Dataflow untuk memproses elemen secara paralel.
Jika Dataflow mendeteksi straggler yang disebabkan oleh tombol pintasan, panel
Straggler Details akan mencantumkan Hot Key
sebagai penyebabnya.
Secara default, Dataflow tidak menampilkan nilai kunci
tombol pintasan. Untuk menampilkan nilai kunci, tetapkan opsi pipeline hotKeyLoggingEnabled
ke true
saat Anda menjalankan tugas.
Untuk mengatasi masalah ini, pastikan data Anda didistribusikan secara merata. Jika kunci memiliki nilai yang tidak proporsional, pertimbangkan tindakan berikut:
- Mengganti kunci enkripsi data Anda. Terapkan transformasi
ParDo
untuk menghasilkan key-value pair baru. - Untuk tugas Java, gunakan transformasi
Combine.PerKey.withHotKeyFanout
. - Untuk tugas Python, gunakan transformasi
CombinePerKey.with_hot_key_fanout
. - Aktifkan Dataflow Shuffle.
Misalnya, jika pipeline melakukan operasi JOIN
sebagai bagian dari transformasi SQL, kunci tertentu kemungkinan akan berisi jumlah data yang tidak proporsional saat dimasukkan ke dalam GroupByKey
yang dilakukan sebagai bagian dari operasi JOIN
yang diperluas.
Untuk informasi selengkapnya, lihat permintaan fitur berikut: beam-issue/28186.
Secara otomatis mengurangi straggler yang disebabkan oleh pekerja lambat
Pekerja lambat jarang terjadi di Dataflow, tetapi dapat memengaruhi performa tugas. Untuk mencegah masalah performa, saat mendeteksi pekerja yang lambat, Dataflow akan mencoba memitigasi masalah sebelum pekerja menyebabkan pekerja lambat.
Mitigasi otomatis menyimulasikan peristiwa pemeliharaan host. Peristiwa ini adalah mekanisme pemeliharaan Compute Engine yang terjadi secara rutin. Bergantung pada kebijakan pemeliharaan host pekerja, pekerja akan dimigrasikan secara langsung atau dimulai ulang. Jika migrasi langsung terjadi, beban kerja tidak akan terganggu. Jika pekerja dimulai ulang, pekerjaan yang sedang berlangsung dari pekerja lambat akan hilang, dan pemrosesan dimulai ulang.
Jika pekerja lambat terdeteksi dan berhasil dimitigasi, pesan berikut akan ditampilkan di log job-message:
Slow worker ... detected and automatically remediated ...
Karena pekerja lambat bukan pekerja yang tertinggal, Anda tidak perlu melakukan tindakan lebih lanjut.
Jika mitigasi tidak berhasil, pekerja lambat akan menyebabkan straggler yang ditampilkan di antarmuka pemantauan Dataflow.
Mitigasi otomatis mungkin gagal jika project Anda kehabisan kuota untuk permintaan simulasi peristiwa pemeliharaan instance. Untuk informasi selengkapnya tentang kuota default, lihat Batas kapasitas API untuk metrik regional di "Kuota penggunaan resource dan pengelolaan izin". Untuk meminta batas kuota yang lebih tinggi, lihat Meminta batas kuota yang lebih tinggi di "Melihat dan mengelola kuota".
Langkah selanjutnya
- Pelajari cara menggunakan antarmuka pemantauan Dataflow.
- Pahami tab Execution details di antarmuka pemantauan.