Risolvere i problemi relativi ai ritardi dei job

Questa pagina elenca le cause comuni dei ritardi nella pianificazione dei job Managed Service for Apache Spark, con informazioni che possono aiutarti a evitarli.

Panoramica

Di seguito sono riportati i motivi comuni per cui un job Managed Service for Apache Spark 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:

È stato 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 Managed Service for Apache Spark). Per impostazione predefinita, Managed Service for Apache Spark 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:

  1. Monitora le metriche dei log, come l'utilizzo della CPU e della memoria, per stimare i requisiti dei 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 lavoro è 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à del cluster su un valore adatto ai requisiti del 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 Managed Service for Apache Spark 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:

  1. Quando crei un cluster:

    1. Aumenta il valore della dataproc:dataproc.scheduler.max-memory-used proprietà del cluster. Ad esempio, impostalo su un valore superiore a quello predefinito di 0.90, ovvero 0.95.
    2. Aumenta il valore della dataproc.scheduler.min-free-memory.mb proprietà del cluster. Il valore predefinito è 256 MB.

Limite di frequenza dei job superato

Messaggio dello strumento di pianificazione:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Cause:

L'agente Managed Service for Apache Spark ha raggiunto il limite di frequenza di invio dei job.

Soluzioni:

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

Visualizzare lo stato del job

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