Risolvere i problemi relativi ai ritardi dei job

In questa pagina sono elencate le cause comuni dei ritardi nella pianificazione dei job Dataproc. fornendo informazioni che possono aiutarti a evitarli.

Panoramica

Di seguito sono riportati i motivi più comuni per cui un job Dataproc subisce un ritardo (limitata):

  • Troppi job in esecuzione
  • Utilizzo elevato della memoria di sistema
  • Memoria libera insufficiente
  • Limite di frequenza superato

In genere, il messaggio di ritardo del job viene emesso nel seguente formato:

Awaiting execution [SCHEDULER_MESSAGE]"

Le sezioni seguenti forniscono possibili cause e soluzioni per scenari specifici di ritardo dei job.

Troppi job in esecuzione

Messaggio dello scheduler:

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

Cause:

È stato superato il numero massimo di job simultanei basati sulla memoria della VM master (il valore il driver di job viene eseguito sulla VM master del cluster Dataproc). Per impostazione predefinita, Dataproc riserva 3,5 GB di memoria per le applicazioni, e consente 1 job per GB.

Esempio: il tipo di macchina n1-standard-4 ha 15GB di memoria. Con 3.5GB riservato per i costi generali, rimane 11.5GB. Arrotondando per difetto a un numero intero, 11GB è disponibile per un massimo di 11 job simultanei.

Soluzioni:

  1. Monitora le metriche di log, come utilizzo di CPU e memoria, per stimare i requisiti del job.

  2. Quando crei un cluster di job:

    1. Usa un tipo di macchina con memoria più grande per la VM master del cluster.

    2. Se 1GB per job è più di quanto ti serve, imposta la dataproc:dataproc.scheduler.driver-size-mb proprietà cluster su un valore inferiore a 1024.

    3. Imposta dataproc:dataproc.scheduler.max-concurrent-jobs proprietà cluster con un valore adatto ai tuoi requisiti del job.

Memoria di sistema elevata o memoria libera insufficiente

Messaggio dello 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)

Cause:

Per impostazione predefinita, l'agente Dataproc riduce la velocità di invio dei job quando l'utilizzo della memoria raggiunge il 90% (0.9)). Quando viene raggiunto questo limite, i nuovi job non possono essere pianificati.

La quantità di memoria libera necessaria per pianificare un altro job nel cluster non è sufficiente.

Soluzione:

  1. Quando crei un cluster:

    1. Aumenta il valore della dataproc:dataproc.scheduler.max-memory-used proprietà cluster. Ad esempio, imposta il valore 0.95 sopra il valore predefinito di 0.90.
    2. Aumenta il valore del parametro dataproc.scheduler.min-free-memory.mb proprietà cluster. Il valore predefinito è 256 MB.

È stato superato il limite di frequenza dei job

Messaggio dello scheduler:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Cause:

L'agente Dataproc ha raggiunto il limite di frequenza di invio del job.

Soluzioni:

  1. Per impostazione predefinita, l'invio del job dell'agente Dataproc è limitato 1.0 QPS, che puoi impostare su un valore diverso quando crei un cluster con dataproc:dataproc.scheduler.job-submission-rate proprietà cluster.

Visualizza lo stato del job.

Per visualizzare lo stato e i dettagli del job, consulta Monitoraggio e debug dei job.