Memecahkan masalah penundaan tugas

Halaman ini mencantumkan penyebab umum penundaan penjadwalan tugas Dataproc, dengan informasi yang dapat membantu Anda menghindarinya.

Ringkasan

Berikut adalah alasan umum mengapa tugas Dataproc tertunda (dibatasi):

  • Terlalu banyak tugas yang sedang berjalan
  • Penggunaan memori sistem yang tinggi
  • Memori kosong 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 sedang berjalan

Pesan penjadwal:

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 di VM master cluster Dataproc). Secara default, Dataproc mencadangkan memori sebesar 3,5 GB untuk aplikasi, dan mengizinkan 1 tugas per GB.

Contoh: Jenis mesin n1-standard-4 memiliki memori 15GB. Dengan 3.5GB yang dialokasikan untuk biaya operasional, 11.5GB tetap tersedia. Dengan membulatkan ke bawah ke bilangan bulat, 11GB tersedia untuk hingga 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 pekerjaan lebih dari yang Anda butuhkan, tetapkan dataproc:dataproc.scheduler.driver-size-mb properti cluster ke kurang dari 1024.

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

Memori sistem tinggi atau memori kosong tidak cukup

Pesan penjadwal:

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 membatasi pengiriman tugas saat penggunaan memori mencapai 90% (0.9). Jika batas ini tercapai, tugas baru tidak dapat dijadwalkan.

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

Solusi:

  1. Saat Anda membuat cluster:

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

Batas frekuensi tugas terlampaui

Pesan penjadwal:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Penyebab:

Agen Dataproc mencapai batas kecepatan 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 dataproc:dataproc.scheduler.job-submission-rate properti cluster.

Melihat status tugas.

Untuk melihat status dan detail tugas, lihat Pemantauan dan pen-debug-an tugas.