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 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 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 dicadangkan untuk overhead, 11.5GB tetap ada. Dengan pembulatan ke bawah ke bilangan bulat, 11GB tersedia untuk maksimal 11 tugas serentak.

Solusi:

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

  2. Saat Anda membuat cluster tugas:

    1. Gunakan jenis mesin 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 kosong tidak memadai

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 memadai.

Solusi:

  1. Saat Anda membuat cluster:

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

Batas kapasitas tugas terlampaui

Pesan penjadwal:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Penyebab:

Agen Dataproc mencapai batas kapasitas pengiriman tugas.

Solusi:

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

Melihat status tugas.

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