2016-08-31 3 views
1

Я бег на работе Спарка (от искрового ноутбука) с использованием динамического распределения с параметрамиСпарк исключения после повторной отправки остановлено приложение

"spark.master": "yarn-client", 
"spark.shuffle.service.enabled": "true", 
"spark.dynamicAllocation.enabled": "true", 
"spark.dynamicAllocation.executorIdleTimeout": "30s", 
"spark.dynamicAllocation.cachedExecutorIdleTimeout": "1h", 
"spark.dynamicAllocation.minExecutors": "0", 
"spark.dynamicAllocation.maxExecutors": "20", 
"spark.executor.cores": 2 

(Примечания: Я еще не уверен, является ли вопрос вызванное динамическим расположением или нет)

Я использую Spark версию 1.6.1.

Если я отменил текущую работу/приложение (либо нажав кнопку отмены на ячейке в ноутбуке, либо отрубив сервер ноутбука и, следовательно, приложение), и за короткое время перезапустите одно и то же приложение (несколько минут) после Я часто получаю следующее excpetion:

org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 2.0 failed 4 times, most recent failure: Lost task 1.3 in stage 2.0 (TID 38, i89810.sbb.ch): java.io.IOException: org.apache.spark.SparkException: Failed to get broadcast_3_piece0 of broadcast_3 
     at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1222) 
     at org.apache.spark.broadcast.TorrentBroadcast.readBroadcastBlock(TorrentBroadcast.scala:165) 
     at org.apache.spark.broadcast.TorrentBroadcast._value$lzycompute(TorrentBroadcast.scala:64) 
     at org.apache.spark.broadcast.TorrentBroadcast._value(TorrentBroadcast.scala:64) 
     at org.apache.spark.broadcast.TorrentBroadcast.getValue(TorrentBroadcast.scala:88) 
     at org.apache.spark.broadcast.Broadcast.value(Broadcast.scala:70) 
     at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:62) 
     at org.apache.spark.scheduler.Task.run(Task.scala:89) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.spark.SparkException: Failed to get broadcast_3_piece0 of broadcast_3 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1$$anonfun$2.apply(TorrentBroadcast.scala:138) 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1$$anonfun$2.apply(TorrentBroadcast.scala:138) 
     at scala.Option.getOrElse(Option.scala:120) 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply$mcVI$sp(TorrentBroadcast.scala:137) 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply(TorrentBroadcast.scala:120) 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$org$apache$spark$broadcast$TorrentBroadcast$$readBlocks$1.apply(TorrentBroadcast.scala:120) 
     at scala.collection.immutable.List.foreach(List.scala:318) 
     at org.apache.spark.broadcast.TorrentBroadcast.org$apache$spark$broadcast$TorrentBroadcast$$readBlocks(TorrentBroadcast.scala:120) 
     at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$readBroadcastBlock$1.apply(TorrentBroadcast.scala:175) 
     at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1219) 
     ... 11 more 

Использование пряжи ResourceManager, я проверил, что старая работа не работает больше, прежде чем вновь посылающий задание. Тем не менее я полагаю, что проблема возникает из-за того, что убитая работа еще не полностью очищена и мешает вновь запущенной работе?

Кто-то столкнулся с той же проблемой и знает, как это решить?

+0

ли вы использовать переменные вещания в коде? Вы включили 'YarnShuffleService' в' yarn-site.xml'? См. Https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/yarn/spark-yarn-YarnShuffleService.html –

+0

@JacekLaskowski Нет, я не передаю какие-либо переменные в моем коде. И нет, у меня нет YarnShuffleService, настроенного в файле yarn-site.xml, поэтому я полагаю, что его отключили? –

+0

Если вы не настроили YarnShuffleService, я предполагаю, что ваше динамическое распределение может работать или не работать. –

ответ

0

При динамическом распределении необходимо настроить внешнюю службу тасования. В противном случае файлы в случайном порядке удаляются при удалении исполнителей. Вот почему выбрано исключение Failed to get broadcast_3_piece0 of broadcast_3.

Для получения дополнительной информации об этом см официальной искры документация

Смежные вопросы