Scenario: RpcTimeoutException voor Apache Spark thrift-server in Azure HDInsight
In dit artikel worden stappen beschreven voor probleemoplossing en mogelijke oplossingen voor problemen bij het gebruik van Apache Spark-onderdelen in Azure HDInsight-clusters.
Probleem
Spark-toepassing mislukt met een org.apache.spark.rpc.RpcTimeoutException
uitzondering en een bericht: Futures timed out
, zoals in het volgende voorbeeld:
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)
OutOfMemoryError
en overhead limit exceeded
fouten kunnen ook worden weergegeven in de sparkthriftdriver.log
zoals in het volgende voorbeeld:
WARN [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded
Oorzaak
Deze fouten worden veroorzaakt door een gebrek aan geheugenbronnen tijdens de gegevensverwerking. Als het Java-proces voor garbagecollection wordt gestart, kan dit ertoe leiden dat de Spark-toepassing niet meer reageert. Er treedt een time-out op voor query's en de verwerking wordt gestopt. De Futures timed out
fout geeft aan dat een cluster onder zware stress staat.
Oplossing
Vergroot de clustergrootte door meer werkknooppunten toe te voegen of de geheugencapaciteit van de bestaande clusterknooppunten te vergroten. U kunt de gegevenspijplijn ook aanpassen om de hoeveelheid gegevens die in één keer wordt verwerkt te verminderen.
De spark.network.timeout
bepaalt de time-out voor alle netwerkverbindingen. Het verhogen van de netwerktime-out kan meer tijd in rekening laten voor het voltooien van bepaalde kritieke bewerkingen, maar hiermee wordt het probleem niet volledig opgelost.
Volgende stappen
Als u het probleem niet ziet of als u het probleem niet kunt oplossen, gaat u naar een van de volgende kanalen voor meer ondersteuning:
Krijg antwoorden van Azure-experts via Ondersteuning voor de Azure-community.
Maak verbinding met @AzureSupport : het officiële Microsoft Azure-account voor het verbeteren van de klantervaring. De Azure-community verbinden met de juiste resources: antwoorden, ondersteuning en experts.
Als u meer hulp nodig hebt, kunt u een ondersteuningsaanvraag indienen vanuit de Azure Portal. Selecteer Ondersteuning in de menubalk of open de Help en ondersteuningshub . Zie How to create an ondersteuning voor Azure request (Een ondersteuning voor Azure-aanvraag maken) voor meer gedetailleerde informatie. Toegang tot abonnementsbeheer en factureringsondersteuning is inbegrepen in uw Microsoft Azure-abonnement en technische ondersteuning wordt geboden via een van de Azure-ondersteuningsplannen.