Spark: Executor Lost Failure (после добавления groupBy job)

Я пытаюсь запустить задание Spark на клиенте Yarn. У меня два узла, и каждый узел имеет следующие конфигурации. введите здесь описание изображения

Я получаю сообщение «ExecutorLostFailure (исполнитель 1 потерян)».

Я испробовал большую часть конфигурации настройки Spark. Я сократил до одного потерянного исполнителя, потому что изначально у меня было около 6 сбоев исполнителя.

Это моя конфигурация (моя искра-отправка):

HADOOP_USER_NAME = hdfs spark-submit --class genkvs.CreateFieldMappings --master yarn-client --driver-memory 11g --executor-memory 11G --total-executor-cores 16 --num-executors 15 --conf "spark. executeor.extraJavaOptions = -XX: + UseCompressedOops -XX: + PrintGCDetails -XX: + PrintGCTimeStamps "--conf spark.akka.frameSize = 1000 --conf spark.shuffle.memoryFraction = 1 --conf spark.rdd.compress = true --conf spark.core.connection.ack.wait.timeout = 800 my-data / lookup_cache_spark-assembly-1.0-SNAPSHOT.jar -h hdfs: //hdp-node-1.zone24x7.lk: 8020 -p 800

Размер моих данных составляет 6 ГБ, и я работаю в группе по работе.

def process(in: RDD[(String, String, Int, String)]) = {
    in.groupBy(_._4)
}

Я новичок в Spark, пожалуйста, помогите мне найти мою ошибку. Я борюсь как минимум неделю.

Заранее большое спасибо.


person Renien    schedule 11.11.2015    source источник


Ответы (1)


Выскакивают две проблемы:

  • для spark.shuffle.memoryFraction установлено значение 1. Почему вы выбрали его вместо значения по умолчанию 0,2? Это может помешать другим операциям без перемешивания

  • У вас есть только 11G для 16 ядер. Имея только 11G, я бы установил количество рабочих в вашей работе не более 3 - и сначала (чтобы решить проблему с потерянными исполнителями) просто попробуйте 1. С 16 исполнителями каждый получает около 700 МБ - что неудивительно, что они получают ООМЭ / исполнитель проиграл.

person WestCoastProjects    schedule 11.11.2015
comment
Первоначально я получил следующую ошибку: Отсутствует выходное место для перемешивания 0. Итак, я узнал, что мне нужно увеличить долю памяти для перемешивания. Хорошо, спасибо за ваши предложения. Я постараюсь вернуться к вам. - person Renien; 11.11.2015
comment
все еще не удается - Spark: Executor Lost Failure - person Renien; 11.11.2015
comment
когда я просматриваю стек, он показывает: spark java.lang.OutOfMemoryError: исключение пространства кучи Java. Думаю, по этой причине теряет исполнителей. Какие-либо предложения ? - person Renien; 11.11.2015
comment
Я упомянул в ответе, что нужно попробовать одиночный исполнитель. У вас недостаточно памяти для кластера в целом. - person WestCoastProjects; 11.11.2015
comment
Да, пробовал. Даже с одним исполнителем такая же проблема. - person Renien; 11.11.2015
comment
хорошо, пожалуйста, проверьте графический интерфейс искры, чтобы убедиться, что исполнитель получил все 11 ГБ - person WestCoastProjects; 11.11.2015
comment
Я немного запутался. В моей истории искр используется память как 0. Пожалуйста, проверьте эти изображения и помогите мне разобраться в этой проблеме. Ссылка: drive.google.com/ - person Renien; 12.11.2015
comment
Причина сбоя: Не удалось открыть FileSegmentManagedBuffer. Это похоже на совершенно другую проблему: либо разрешения hdfs, либо разрешения локальной файловой системы. - person WestCoastProjects; 12.11.2015
comment
да. Это была проблема безопасности. Большое спасибо :). Теперь исполнитель не работает из-за тайм-аута akka. Я дал spark.akka.frameSize = 1000. Но все же это не удается. Есть мысли по этому поводу? - person Renien; 13.11.2015
comment
Вы пробовали это: spark.akka.timeout - person WestCoastProjects; 13.11.2015
comment
Да, на самом деле я пробовал все эти conf: --conf spark.worker.timeout = 30000 --conf spark.akka.timeout = 30000 --conf spark.storage.blockManagerHeartBeatMs = 30000 --conf spark.akka.retry.wait = 30000 --conf spark.akka.frameSize = 2047 - person Renien; 13.11.2015
comment
Извините, в данный момент нет других идей. - person WestCoastProjects; 13.11.2015
comment
Спасибо за поддержку. Очень признателен за вашу помощь. Я попросил увеличить оперативную память моего сервера до 32 ГБ. Надеюсь, это поможет выполнить мою работу. - person Renien; 13.11.2015
comment
Я изменил свой код на «reduceByKey», и он сработал. Просто хотел поделиться с вами @javadba. После прочтения этого блога: blog.cloudera.com/blog/2015/03/. Я модифицировал и пробовал. - person Renien; 14.11.2015
comment
Хорошо, спасибо за то, что отправили это обратно. Я знаю о reduceByKey vs groupByKey, но это указывает на нехватку памяти. Вы изменили характер проблемы, оптимизировав ее таким образом, чтобы она требовала меньше ресурсов. - person WestCoastProjects; 14.11.2015