Dela via


Scenario: RpcTimeoutException för Apache Spark thrift-server i Azure HDInsight

Den här artikeln beskriver felsökningssteg och möjliga lösningar på problem när du använder Apache Spark-komponenter i Azure HDInsight-kluster.

Problem

Spark-programmet misslyckas med ett org.apache.spark.rpc.RpcTimeoutException undantag och ett meddelande: Futures timed out, som i följande exempel:

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 och overhead limit exceeded fel kan också visas i som sparkthriftdriver.log i följande exempel:

WARN  [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded

Orsak

Dessa fel orsakas av brist på minnesresurser under databearbetningen. Om Java-skräpinsamlingsprocessen startar kan det leda till att Spark-programmet slutar svara. Frågor börjar överskrida tidsgränsen och sluta bearbetas. Felet Futures timed out anger ett kluster under allvarlig stress.

Åtgärd

Öka klusterstorleken genom att lägga till fler arbetsnoder eller öka minneskapaciteten för befintliga klusternoder. Du kan också justera datapipelinen för att minska mängden data som bearbetas samtidigt.

Styr spark.network.timeout tidsgränsen för alla nätverksanslutningar. Om du ökar tidsgränsen för nätverket kan det ta längre tid för vissa kritiska åtgärder att slutföras, men det löser inte problemet helt.

Nästa steg

Om du inte ser problemet eller inte kan lösa problemet går du till någon av följande kanaler för mer support:

  • Få svar från Azure-experter via Azure Community Support.

  • Anslut med @AzureSupport – det officiella Microsoft Azure-kontot för att förbättra kundupplevelsen. Ansluta Azure-communityn till rätt resurser: svar, support och experter.

  • Om du behöver mer hjälp kan du skicka en supportbegäran från Azure Portal. Välj Support i menyraden eller öppna hubben Hjälp + support . Mer detaljerad information finns i Skapa en Azure Support begäran. Tillgång till support för prenumerationshantering och fakturering ingår i din Microsoft Azure-prenumeration och teknisk support ges via ett supportavtal för Azure.