Risolvere i problemi relativi ai ritardi nei job

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Panoramica

Di seguito sono riportati i motivi 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 le possibili cause e soluzioni per scenari specifici di ritardo nel job.

Troppi job in esecuzione

Messaggio 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 master viene 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 il sovraccarico, 11.5GB rimane. Arrotondando per difetto a un numero intero, 11GB è disponibile per un massimo di 11 job simultanei.

Soluzioni:

  1. Monitora le metriche del log, ad esempio l'utilizzo della CPU e la memoria, per stimare i requisiti del job.

  2. Quando crei un cluster di job:

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

    2. Se 1GB per job è superiore al necessario, imposta ladataproc:dataproc.scheduler.driver-size-mb proprietà del cluster minore di 1024.

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

Memoria di sistema elevata o memoria libera insufficiente

Messaggio 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 limita l'invio del job quando l'utilizzo della memoria raggiunge il 90% (0.9)). Quando questo limite viene raggiunto, 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à del cluster. Ad esempio, impostalo su 0.95 sopra il valore predefinito di 0.90.
    2. Aumenta il valore della dataproc.scheduler.min-free-memory.mb proprietà del cluster. Il valore predefinito è 256 MB.

Limite di frequenza del job superato

Messaggio 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 di un 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, vedi Monitoraggio e debug del job.