Scenario: RpcTimeoutException per il server Thrift Apache Spark in Azure HDInsight
Questo articolo descrive le procedure di risoluzione dei problemi e le possibili soluzioni per i problemi relativi all'uso di componenti Apache Spark nei cluster Azure HDInsight.
Problema
L'applicazione Spark ha esito negativo con un'eccezione org.apache.spark.rpc.RpcTimeoutException
e un messaggio: Futures timed out
, come nell'esempio seguente:
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [120 seconds]. This timeout is controlled by spark.rpc.askTimeout
at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48)
Gli errori OutOfMemoryError
e overhead limit exceeded
possono essere visualizzati anche in sparkthriftdriver.log
come nell'esempio seguente:
WARN [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded
Causa
Questi errori sono causati dalla mancanza di risorse di memoria durante l'elaborazione dei dati. Se viene avviato il processo di Garbage Collection Java, l'applicazione Spark potrebbe interrompere la risposta. Le query inizieranno a scadere e interromperanno l'elaborazione. L'errore Futures timed out
indica un cluster sotto stress grave.
Risoluzione
Aumentare le dimensioni del cluster aggiungendo più nodi di lavoro o aumentando la capacità di memoria dei cluster di nodi esistenti. È anche possibile modificare la pipeline di dati per ridurre la quantità di dati elaborati contemporaneamente.
spark.network.timeout
controlla il timeout per tutte le connessioni di rete. L'aumento del timeout di rete potrebbe richiedere più tempo per il completamento di alcune operazioni critiche, ma questo non risolverà completamente il problema.
Passaggi successivi
Se il problema riscontrato non è presente in questo elenco o se non si riesce a risolverlo, visitare uno dei canali seguenti per ottenere ulteriore assistenza:
Ricevere risposte dagli esperti di Azure tramite la pagina Supporto della community per Azure.
Connettersi con @AzureSupport, l'account ufficiale Microsoft Azure per migliorare l'esperienza del cliente. Mette in contatto la community di Azure con le risorse giuste: risposte, supporto ed esperti.
Se serve ulteriore assistenza, è possibile inviare una richiesta di supporto dal portale di Azure. Selezionare Supporto nella barra dei menu o aprire l'hub Guida e supporto. Per informazioni più dettagliate, vedere Come creare una richiesta di supporto in Azure. L'accesso al supporto per la gestione delle sottoscrizioni e la fatturazione è incluso nella sottoscrizione di Microsoft Azure e il supporto tecnico viene fornito tramite uno dei piani di supporto di Azure.