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 comuni per cui un job Dataproc è in ritardo (limitato):

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

In genere, il messaggio relativo al 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:

Il numero massimo di job simultanei in base alla memoria della VM principale è 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 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 dei log, come l'utilizzo della CPU e della memoria, per stimare i requisiti del 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 job è 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à cluster su un valore adatto ai 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, impostalo su 0.95 sopra il valore predefinito 0.90.
    2. Aumenta il valore della 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 dei job.

Soluzioni:

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

Visualizza lo stato del job.

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