如何取消Spark Hadoop RDD计算

时间:2015-02-19 20:02:42

标签: java scala hadoop apache-spark cluster-computing

假设我有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()在这里没有帮助。在上下文停止记录之前我看到它是日志。但无论如何,我看到了下一个任务日志。

1 个答案:

答案 0 :(得分:2)

无法恢复得更快。一旦任务启动,它将自行完成或失败。阶段失败或取消不会中断正在进行的任务。

我认为原因基本上是threads cannot be forcefully killed in Java。如果这是一个问题,您可以寻求更多分区。较小的任务完成得更快。