假设我有NewHadoopRDD
,其中一个分裂在计算过程中失败。有了本地选手,我很容易看到这个过程的所有阶段。
我看到任务失败,但调度程序启动了下一个任务,并且只有在此通知任务失败后才会启动。
15/02/19 20:58:58 INFO scheduler.TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, localhost, PROCESS_LOCAL, 1347 bytes)
15/02/19 20:58:58 INFO executor.Executor: Running task 1.0 in stage 0.0 (TID 1)
15/02/19 20:58:58 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.RuntimeException: java.sql.SQLException:
...
15/02/19 20:58:58 ERROR scheduler.TaskSetManager: Task 0 in stage 0.0 failed 1 times; aborting job
现在正在取消阶段
15/02/19 20:58:58 ERROR scheduler.TaskSetManager: Task 0 in stage 0.0 failed 1 times; aborting job
15/02/19 20:58:58 INFO scheduler.TaskSchedulerImpl: Cancelling stage 0
15/02/19 20:58:58 INFO executor.Executor: Executor is trying to kill task 1.0 in stage 0.0 (TID 1)
15/02/19 20:58:58 INFO scheduler.TaskSchedulerImpl: Stage 0 was cancelled
控制甚至传递到上下文关闭...
15/02/19 20:58:58 INFO ui.SparkUI: Stopped Spark web UI at http://node4.hbase.vitech.com.ua:4040
但后来我看到了下一阶段任务的日志输出。
15/02/19 20:58:58 INFO rdd.NewHadoopRDD: Input split: 0+0 ...
只有在调度程序停止时我才会看到任务被终止(在statusUpdate上!)。
15/02/19 20:58:58 INFO scheduler.DAGScheduler: Stopping DAGScheduler
15/02/19 20:58:58 INFO executor.Executor: Executor killed task 1.0 in stage 0.0 (TID 1)
15/02/19 20:58:58 ERROR scheduler.TaskSchedulerImpl: Exception in statusUpdate
我可以更快地清理所有RDD资源吗? unpersist()
在这里没有帮助。在上下文停止记录之前我看到它是日志。但无论如何,我看到了下一个任务日志。
答案 0 :(得分:2)
无法恢复得更快。一旦任务启动,它将自行完成或失败。阶段失败或取消不会中断正在进行的任务。
我认为原因基本上是threads cannot be forcefully killed in Java。如果这是一个问题,您可以寻求更多分区。较小的任务完成得更快。