5

Ho un'applicazione Spark Streaming basata su Spark Streaming che viene eseguita ogni 5 minuti. Guardando le statistiche dopo 5 giorni di corsa, ci sono alcune osservazioni:Streaming Spark: sicurezza dell'applicazione

  1. Il Processing time aumenta gradualmente da 30 secondi a 50 secondi. L'istantanea è mostrato di seguito, che mette in evidenza la tabella di tempo di elaborazione: Snapshot

  2. Un buon numero di Garbage collection tronchi stanno comparendo come illustrato di seguito: Snapshot

Domande:

  1. C'è una buona spiegazione del perché lo Processing Time è aumentato notevolmente, anche quando il numero di e le bocchette sono più o meno uguali (durante l'ultima depressione)?
  2. Ho quasi 70 GC logs alla fine di ogni ciclo di elaborazione. È normale?
  3. È la strategia migliore per garantire che processing time rimanga con ritardi accettabili?

risposta

1

Dipende davvero dall'applicazione. Il modo in cui mi avvicinerei al debug di questo problema è il seguente:

  1. Nella scheda Archiviazione verificare se i formati memorizzati non aumentano. Se c'è una crescita questo può indicare una qualche perdita di risorse nella cache. Controlla qual è il valore di spark.cleaner.ttl, ma assicurati di rimuovere tutte le risorse quando non sono più necessarie.
  2. Ispeziona la visualizzazione DAG dei lavori in esecuzione e verifica se il lignaggio non cresce. In tal caso, assicurarsi di eseguire checkpointing per tagliare il lignaggio.
  3. Ridurre il numero di lotti trattenuti nell'interfaccia utente (parametro spark.streaming.ui.retainedBatches).
  4. Anche il numero di eventi è uguale, verificare se la quantità di dati elaborati dalle attività non aumenta con il tempo (scheda Fasi -> colonna di input). Questo potrebbe indicare un problema a livello di applicazione.

Ho avuto applicazioni Spark Streaming relativamente complesse (Spark v1.6, v2.1.1, v2.2.0) in esecuzione per giorni senza alcun degrado delle prestazioni, quindi ci deve essere qualche problema risolvibile.

+1

Per me il colpevole era: 'Ridurre il numero di batch conservati nell'interfaccia utente (parametro spark.streaming.ui.retainedBatches)' – Mohitt