即使在设置了很长时间的值1000秒后,Spark执行器也因为超时而丢失

时间:2015-08-16 18:11:58

标签: apache-spark

您好我写了Spark工作,似乎工作了差不多一个小时,然后执行器开始因为超时而丢失我在日志声明中看到以下内容

15/08/16 12:26:46 WARN spark.HeartbeatReceiver: Removing executor 10 with no recent heartbeats: 1051638 ms exceeds timeout 1000000 ms 

我没有看到任何错误,但我看到上面的警告,因为它执行者被YARN删除,我看到Rpc客户端解除了错误,IOException连接被拒绝,FetchFailedException

执行程序被删除后,我看到它再次被添加并开始工作,其他一些执行程序再次失败。我的问题是遗嘱执行人丢失是正常的吗?失去执行者的任务正在发生什么?我的Spark工作继续运行,因为它长了大约4-5个小时我拥有非常好的集群,具有1.2 TB内存和良好的CPU内核。为了解决上述超时问题,我试图将时间spark.akka.timeout增加到1000秒,但没有运气。我使用以下命令来运行我的Spark工作请指导我是Spark的新手。我正在使用Spark 1.4.1。提前谢谢。

./spark-submit --class com.xyz.abc.MySparkJob  --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 4g --master yarn-client --executor-memory 25G --executor-cores 8 --num-executors 5 --jars /path/to/spark-job.jar

1 个答案:

答案 0 :(得分:7)

由于内存问题,可能会发生的是奴隶无法再启动执行程序。在主日志中查找以下消息:

@utils.Format.dateFormatter.print(myDate)

您可能会在worker的日志目录中找到一些详细的java错误,也许是这种类型的文件:15/07/13 13:46:50 INFO Master: Removing executor app-20150713133347-0000/5 because it is EXITED 15/07/13 13:46:50 INFO Master: Launching executor app-20150713133347-0000/9 on worker worker-20150713153302-192.168.122.229-59013 15/07/13 13:46:50 DEBUG Master: [actor] handled message (2.247517 ms) ExecutorStateChanged(app-20150713133347-0000,5,EXITED,Some(Command exited with code 1),Some(1)) from Actor[akka.tcp://sparkWorker@192.168.122.229:59013/user/Worker#-83763597]

请参阅http://pastebin.com/B4FbXvHR

此问题可能由您的RDD应用程序管理解决,而不是通过增加jvm堆的大小。