2017-07-24 1 views
0

Erhalte den folgenden Fehler beim Ausführen des Funke-Jobs auf Spark 2.0. Der Fehler ist zufälliger Natur & tritt nicht die ganze Zeit auf. Sobald die Aufgaben erstellt werden die meisten von ihnen ordnungsgemäß abgeschlossen sind, während einige hängen & löst den folgenden Fehler nach einer Weile.Zufällige Ausnahme: Zeitüberschreitungen nach Ausnahme in Spark-Jobs

Ich habe versucht, die folgenden Eigenschaften spark.executor.heartbeatInterval & spark.network.timeout zu erhöhen, aber von keinem Nutzen.

17/07/23 20:46:35 WARN NettyRpcEndpointRef: Error sending message [message = Heartbeat(driver,[Lscala.Tuple2;@597e9d16,BlockManagerId(driver, 128.164.190.35, 38337))] in 1 attempts 
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [120 seconds]. This timeout is controlled by spark.executor.heartbeatInterval 
    at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:63) 
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59) 
    at scala.PartialFunction$OrElse.apply(PartialFunction.scala:167) 
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:83) 
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:102) 
    at org.apache.spark.executor.Executor.org$apache$spark$executor$Executor$$reportHeartBeat(Executor.scala:518) 
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply$mcV$sp(Executor.scala:547) 
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply(Executor.scala:547) 
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply(Executor.scala:547) 
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1857) 
    at org.apache.spark.executor.Executor$$anon$1.run(Executor.scala:547) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [120 seconds] 
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) 
    at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) 
    at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) 
    at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) 
    at scala.concurrent.Await$.result(package.scala:190) 
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:81) 
    ... 14 more 
+0

Kasse gc Ihre Aufgabe Hinrichtung. Vielleicht sind einige der Executoren bei gcs STW-Pause stecken geblieben und können keinen Heartbeat senden. – pls

+0

Ja, das Problem ist in der Tat auf GC zurückzuführen, wie es verwendet wurde, um die Aufgaben zu pausieren, die Änderung der Standard-GC auf G1GC reduziert das Problem. Vielen Dank –

Antwort