Sto eseguendo un'applicazione Spark Streaming su YARN in modalità cluster e sto cercando di implementare un arresto regolare in modo che, quando l'applicazione viene uccisa, finisca l'esecuzione del micro batch corrente prima di fermarsi.Come interrompere con garbo un'applicazione Spark Streaming su YARN?
Dopo alcuni tutorial Ho configurato spark.streaming.stopGracefullyOnShutdown
a true
e ho aggiunto il seguente codice per la mia domanda:
sys.ShutdownHookThread {
log.info("Gracefully stopping Spark Streaming Application")
ssc.stop(true, true)
log.info("Application stopped")
}
Tuttavia quando uccido l'applicazione con
yarn application -kill application_1454432703118_3558
micro il batch eseguito in quel momento non è completato.
Nel driver Vedo la prima riga del registro stampata ("Interruzione graduale dell'applicazione Spark Streaming") ma non l'ultima ("Applicazione interrotta").
ERROR yarn.ApplicationMaster: RECEIVED SIGNAL 15: SIGTERM
INFO streaming.MySparkJob: Gracefully stopping Spark Streaming Application
INFO scheduler.JobGenerator: Stopping JobGenerator gracefully
INFO scheduler.JobGenerator: Waiting for all received blocks to be consumed for job generation
INFO scheduler.JobGenerator: Waited for all received blocks to be consumed for job generation
INFO streaming.StreamingContext: Invoking stop(stopGracefully=true) from shutdown hook
Negli esecutori registro vedo il seguente errore:
ERROR executor.CoarseGrainedExecutorBackend: Driver 192.168.6.21:49767 disassociated! Shutting down.
INFO storage.DiskBlockManager: Shutdown hook called
WARN remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://[email protected]:49767] has failed, address is now gated for [5000] ms. Reason: [Disassociated]
INFO util.ShutdownHookManager: Shutdown hook called
Credo che il problema è legato al modo in FILATO inviare il segnale kill l'applicazione. Qualche idea su come posso far fermare l'applicazione con garbo?
sei riuscito a risolverlo? –
No, sfortunatamente no. – nicola