Risolvere i ritardi nei job

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

Panoramica

Di seguito sono riportati i motivi comuni per cui un job di Dataproc subisce un ritardo (limitato):

  • Troppi job in esecuzione
  • Memoria di sistema utilizzata elevata
  • Memoria libera insufficiente
  • Limite di frequenza superato

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

Awaiting execution [SCHEDULER_MESSAGE]"

Le seguenti sezioni descrivono le possibili cause e le 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:

Viene superato il numero massimo di job simultanei in base alla memoria della VM master (il driver del job viene eseguito sulla VM master del cluster Dataproc). Per impostazione predefinita, Dataproc prenota 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 all'overhead, 11.5GB rimane. Arrotondando per difetto a un numero intero, 11GB è disponibile per un massimo di 11 job simultanei.

Soluzioni:

  1. Monitorare le metriche dei log, come 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 con memoria più grande per la VM master del cluster.

    2. Se il valore di 1GB per job è superiore al necessario, imposta la proprietà cluster dataproc:dataproc.scheduler.driver-size-mb su un valore inferiore a 1024.

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

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

Limite di frequenza job superato

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 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 lavoro.

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