Memecahkan masalah penundaan tugas

Halaman ini mencantumkan penyebab umum penundaan penjadwalan tugas Managed Service untuk Apache Spark, dengan informasi yang dapat membantu Anda menghindarinya.

Ringkasan

Berikut adalah alasan umum mengapa tugas Managed Service untuk Apache Spark ditunda (dibatasi):

  • Terlalu banyak tugas yang 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 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 Managed Service untuk Apache Spark). Secara default, Managed Service untuk Apache Spark mencadangkan memori 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. Pembulatan ke bawah 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 memori yang lebih besar untuk VM master cluster.

    2. Jika 1GB per tugas lebih dari yang Anda butuhkan, tetapkan dataproc:dataproc.scheduler.driver-size-mb properti cluster 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 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 Managed Service untuk Apache Spark 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 mencukupi.

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 Managed Service untuk Apache Spark mencapai batas kapasitas pengiriman tugas.

Solusi:

  1. Secara default, pengiriman tugas agen Managed Service untuk Apache Spark 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 tugas

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