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:
Monitora le metriche dei log, come l'utilizzo della CPU e della memoria, per stimare i requisiti dei job.
Quando crei un cluster di job:
Utilizza un tipo di macchina con più memoria per la VM master del cluster.
Se
1GBper lavoro è più di quanto ti serve, imposta ladataproc:dataproc.scheduler.driver-size-mbproprietà cluster su un valore inferiore a1024.Imposta la
dataproc:dataproc.scheduler.max-concurrent-jobsproprietà 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:
Quando crei un cluster:
- Aumenta il valore della
dataproc:dataproc.scheduler.max-memory-usedproprietà del cluster. Ad esempio, impostalo su un valore superiore a quello predefinito di0.90, ovvero0.95. - Aumenta il valore della
dataproc.scheduler.min-free-memory.mbproprietà del cluster. Il valore predefinito è256MB.
- Aumenta il valore della
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:
- 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 ladataproc:dataproc.scheduler.job-submission-rateproprietà del cluster.
Visualizzare lo stato del job
Per visualizzare lo stato e i dettagli del job, vedi Monitoraggio e debug dei job.