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:
Monitora le metriche dei log, come l'utilizzo della CPU e della memoria, per stimare i requisiti del job.
Quando crei un cluster di job:
Utilizza un tipo di macchina con più memoria per la VM master del cluster.
Se
1GB
per job è più di quanto ti serve, imposta ladataproc:dataproc.scheduler.driver-size-mb
proprietà cluster su un valore inferiore a1024
.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:
Quando crei un cluster:
- Aumenta il valore della
dataproc:dataproc.scheduler.max-memory-used
proprietà cluster. Ad esempio, impostalo su0.95
sopra il valore predefinito0.90
. - Aumenta il valore della
dataproc.scheduler.min-free-memory.mb
proprietà cluster. Il valore predefinito è256
MB.
- Aumenta il valore della
È 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:
- 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à clusterdataproc: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.