Как отменить вычисление Spark Hadoop RDD

1

Пусть говорят, что у меня есть 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() здесь не помогает. Я вижу, что он записывается до завершения регистрации контекста. Но в любом случае я вижу следующие журналы задач.

Теги:
apache-spark
hadoop
cluster-computing

1 ответ

2
Лучший ответ

Невозможно быстрее восстановиться. Как только задача будет запущена, она либо закончит, либо завершит свою работу самостоятельно. Сбой или отмена этапа не прервет выполнение задачи.

Я думаю, причина в том, что в основном потоки не могут быть насильственно убиты на Java. Если это проблема, вы можете пойти на большее количество разделов. Меньшие задачи заканчиваются быстрее.

  • 1
    Грустно, но верно. Я пришел к тому же ответу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню