Memecahkan masalah keterlambatan tugas

Halaman ini berisi daftar penyebab umum keterlambatan penjadwalan tugas Dataproc, beserta informasi yang dapat membantu Anda menghindarinya.

Ringkasan

Berikut adalah alasan umum tugas Dataproc tertunda (di-throttle):

  • Terlalu banyak tugas yang berjalan
  • Penggunaan memori sistem yang tinggi
  • Memori bebas tidak cukup
  • Batas kapasitas terlampaui

Biasanya, pesan penundaan tugas akan dikeluarkan dalam format berikut:

Awaiting execution [SCHEDULER_MESSAGE]"

Bagian berikut memberikan kemungkinan penyebab dan solusi untuk skenario penundaan tugas tertentu.

Terlalu banyak tugas yang berjalan

Pesan Scheduler:

Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)

Penyebab:

Jumlah maksimum tugas serentak berdasarkan memori VM master terlampaui (driver tugas berjalan pada VM master cluster Dataproc). Secara default, Dataproc mencadangkan memori 3,5 GB untuk aplikasi, dan memungkinkan 1 tugas per GB.

Contoh: Jenis mesin n1-standard-4 memiliki memori 15GB. Dengan 3.5GB yang dicadangkan untuk overhead, 11.5GB akan tetap ada. Membulatkan ke bilangan bulat, 11GB tersedia untuk maksimal 11 tugas serentak.

Solusi:

  1. Pantau metrik log, seperti penggunaan CPU dan memori, untuk memperkirakan persyaratan tugas.

  2. Saat Anda membuat cluster tugas:

    1. Gunakan jenis mesin dengan memori yang lebih besar untuk VM master cluster.

    2. Jika 1GB per tugas lebih dari yang Anda butuhkan, tetapkan properti cluster dataproc:dataproc.scheduler.driver-size-mb ke kurang dari 1024.

    3. Tetapkan properti cluster dataproc:dataproc.scheduler.max-concurrent-jobs ke nilai yang sesuai dengan persyaratan tugas Anda.

Memori sistem tinggi atau memori bebas tidak cukup

Pesan Scheduler:

Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)

Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)

Penyebab:

Secara default, agen Dataproc memperlambat pengiriman tugas saat penggunaan memori mencapai 90% (0.9). Jika batas ini tercapai, tugas baru tidak dapat dijadwalkan.

Jumlah memori bebas yang diperlukan untuk menjadwalkan tugas lain di cluster tidak cukup.

Solusi:

  1. Saat membuat cluster:

    1. Tingkatkan nilai properti cluster dataproc:dataproc.scheduler.max-memory-used. Misalnya, tetapkan di atas 0.90 default ke 0.95.
    2. Tingkatkan nilai properti cluster dataproc.scheduler.min-free-memory.mb. Nilai defaultnya adalah 256 MB.

Batas rasio pekerjaan terlampaui

Pesan Scheduler:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Penyebab:

Agen Dataproc telah mencapai batas kapasitas pengiriman tugas.

Solusi:

  1. Secara default, pengiriman tugas agen Dataproc dibatasi pada 1.0 QPS, yang dapat Anda tetapkan ke nilai yang berbeda saat membuat cluster dengan properti cluster dataproc:dataproc.scheduler.job-submission-rate.

Melihat status pekerjaan.

Untuk melihat status dan detail tugas, lihat Pemantauan dan proses debug tugas.