3

我正在使用 spark jobserver 运行作业(需要 +-10 分钟)。作业在执行过程中随机崩溃(大约 2 次 1 次),执行程序出现以下异常:

错误 2016-10-13 19:22:58,617 Logging.scala:95 - org.apache.spark.executor.Executor:阶段 1.0 中的任务 24.0 异常(TID 25)
org.apache.spark.TaskKilledException:空
    在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:217) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
    在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
错误 2016-10-13 19:22:58,617 Logging.scala:95 - org.apache.spark.storage.DiskBlockObjectWriter:将部分写入还原到文件 /var/lib/spark/rdd/spark-4e4b3899-3ba4- 时未捕获异常47ad-b3af-5a4431321c5a/executor-0e09bdd5-44ef-4cb1-9c18-7659de428f6b/blockmgr-cce06e16-035b-4536-b8be-99c14e89757e/23/temp_shuffle_3c6ba81d-f8-cbd-4479-986a
java.nio.channels.ClosedByInterruptException: null
    在 java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) ~[na:1.8.0_101]
    在 sun.nio.ch.FileChannelImpl.truncate(FileChannelImpl.java:372) ~[na:1.8.0_101]
    在 org.apache.spark.storage.DiskBlockObjectWriter.revertPartialWritesAndClose(DiskBlockObjectWriter.scala:164) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.stop(BypassMergeSortShuffleWriter.java:226) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]ERROR 2016-10-13 19:22:58,617 Logging.scala :95 - org.apache.spark.storage.DiskBlockObjectWriter:恢复部分写入文件时未捕获的异常 /var/lib/spark/rdd/spark-4e4b3899-3ba4-47ad-b3af-5a4431321c5a/executor-0e09bdd5-44ef-4cb1- 9c18-7659de428f6b/blockmgr-cce06e16-035b-4536-b8be-99c14e89757e/2b/temp_shuffle_ba04b671-f5a3-49c4-901e-879ead59f48a
java.nio.channels.ClosedByInterruptException: null
    在 java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) ~[na:1.8.0_101]
    在 sun.nio.ch.FileChannelImpl.truncate(FileChannelImpl.java:372) ~[na:1.8.0_101]
    在 org.apache.spark.storage.DiskBlockObjectWriter.revertPartialWritesAndClose(DiskBlockObjectWriter.scala:164) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.stop(BypassMergeSortShuffleWriter.java:226) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.Task.run(Task.scala:89) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
    在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
    在 org.apache.spark.scheduler.Task.run(Task.scala:89) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
    在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
错误 2016-10-13 19:22:58,617 Logging.scala:95 - org.apache.spark.storage.DiskBlockObjectWriter:将部分写入还原到文件 /var/lib/spark/rdd/spark-4e4b3899-3ba4- 时未捕获异常47ad-b3af-5a4431321c5a/executor-0e09bdd5-44ef-4cb1-9c18-7659de428f6b/blockmgr-cce06e16-035b-4536-b8be-99c14e89757e/2b/temp_shuffle_ba04b671-f5a3-49c4-940e
java.nio.channels.ClosedByInterruptException: null
    在 java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) ~[na:1.8.0_101]
    在 sun.nio.ch.FileChannelImpl.truncate(FileChannelImpl.java:372) ~[na:1.8.0_101]
    在 org.apache.spark.storage.DiskBlockObjectWriter.revertPartialWritesAndClose(DiskBlockObjectWriter.scala:164) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.stop(BypassMergeSortShuffleWriter.java:226) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.Task.run(Task.scala:89) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227) [spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
    在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
……

驱动日志:

[2016-10-14 10:07:22,701] 信息 oassDAGScheduler [1efb38e8-eaa4-4bdc-8df7-b5047f713c02] [akka://JobServer/user/context-supervisor/9027f2fd-com.my.sparkJob] - 作业 0 失败:在 RDDFunctions.scala:37 处运行作业,耗时 94.010942 秒
[2016-10-14 10:07:22,704] 信息 sjJobStatusActor [] [akka://JobServer/user/context-supervisor/9027f2fd-com.my.sparkJob/status-actor] - 工作 1efb38e8-eaa4-4bdc-8df7 -b5047f713c02 以错误结束
[2016-10-14 10:07:22,705] 信息 aaDeadLetterActorRef [] [akka://JobServer/deadLetters] - 来自 Actor[akka://JobServer/user/context-supervisor 的消息 [spark.jobserver.CommonMessages$JobErroredOut] /9027f2fd-com.my.sparkJob/status-actor#-2093845382] 到 Actor[akka://JobServer/deadLetters] 未交付。[10] 遇到死信,不再记录死信。可以使用配置设置“akka.log-dead-letters”和“akka.log-dead-letters-during-shutdown”关闭或调整此日志记录。
[2016-10-14 10:07:22,705] WARN sjJobManagerActor [] [akka://JobServer/user/context-supervisor/9027f2fd-com.my.sparkJob] - 作业 1efb38e8-eaa4-4bdc-8df7-b5047f713c02 的异常:
org.apache.spark.SparkException:作业因阶段失败而中止:获取任务结果时出现异常:java.lang.NullPointerException
    在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1431) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1419) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1418) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) ~[scala-library-2.10.6.jar:na]
    在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) ~[scala-library-2.10.6.jar:na]
    在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1418) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 scala.Option.foreach(Option.scala:236) ~[scala-library-2.10.6.jar:na]
    在 org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:799) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1640) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1599) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1588) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:620) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1832) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1845) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1922) ~[spark-core_2.10-1.6.2.1.jar:1.6.2.1]
    在 com.datastax.spark.connector.RDDFunctions.saveToCassandra(RDDFunctions.scala:37) ~[spark-cassandra-connector_2.10-1.6.0.jar:1.6.0]
    在 com.my.sparkJob.init(sparkJob.scala:228) ~[csm-spark-2016-10-14T10_04_36.212+02_00.jar:na]
    在 com.my.sparkJob$.runJob(sparkJob.scala:166) ~[csm-spark-2016-10-14T10_04_36.212+02_00.jar:na]
    在 com.my.sparkJob$.runJob(sparkJob.scala:122) ~[csm-spark-2016-10-14T10_04_36.212+02_00.jar:na]
    在 com.my.sparkJob$.runJob(sparkJob.scala:119) ~[csm-spark-2016-10-14T10_04_36.212+02_00.jar:na]
    在 spark.jobserver.JobManagerActor$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:235) ~[spark-job-server.jar:0.5.2.501]
    在 scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.10.6.jar:na]
    在 scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.10.6.jar:na]
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
    在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
[2016-10-14 10:07:22,708] INFO sjLocalContextSupervisorActor [] [akka://JobServer/user/context-supervisor] - 关闭上下文 9027f2fd-com.my.sparkJob

使用 spark-submit 启动工作没有任何问题。使用作业服务器(0.6.2 和 DSE)在执行程序上以相同数量的内存/核心启动作业。

有什么建议吗?

4

0 回答 0