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

Ume*_*cha 7 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 
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误,但我看到上面的警告,因为它执行器被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
Run Code Online (Sandbox Code Playgroud)

Bac*_*con 7

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

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]
Run Code Online (Sandbox Code Playgroud)

您可能会在worker的日志目录中找到一些详细的java错误,也许这类文件:work/app-id/executor-id/hs_err_pid11865.log.

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

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