Risolvere i problemi relativi ai ritardi dei job

Questa pagina elenca le cause comuni dei ritardi nella pianificazione dei job Dataproc, con informazioni che possono aiutarti a evitarli.

Panoramica

Di seguito sono riportati i motivi più comuni per cui un job Dataproc viene ritardato (limitato):

  • 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 strumento di pianificazione:

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

Cause:

Il numero massimo di job simultanei in base alla memoria della VM master è stato superato (il driver del 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 riservati alle spese generali, rimangono 11.5GB. Arrotondando per difetto a un numero intero, 11GB è disponibile per un massimo di 11 job simultanei.

Soluzioni:

  1. Monitora le metriche dei log, come l'utilizzo della CPU e della memoria, per stimare i requisiti dei job.

  2. Quando crei un cluster di job:

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

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

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

Memoria di sistema elevata o memoria libera insufficiente

Messaggio dello strumento di pianificazione:

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 limita l'invio dei job quando l'utilizzo della memoria raggiunge il 90% (0.9)). Quando viene raggiunto questo limite, non è possibile pianificare nuovi job.

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

Soluzione:

  1. Quando crei un cluster:

    1. Aumenta il valore della dataproc:dataproc.scheduler.max-memory-used proprietà del cluster. Ad esempio, impostalo su un valore superiore a quello predefinito di 0.90, ovvero 0.95.
    2. Aumenta il valore della dataproc.scheduler.min-free-memory.mb proprietà del cluster. Il valore predefinito è 256 MB.

Limite di frequenza dei job superato

Messaggio dello strumento di pianificazione:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Cause:

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

Soluzioni:

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

Visualizzare lo stato del job

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