Ошибка пространства кучи Java при выполнении задания сходства элементов mahout в Amazon EMR

Я пытаюсь запустить задание сходства элементов mahout на входе, состоящем из ~ 250 миллионов пар (строк) в кластере Amazon EMR (m3.2xLarge, 10 основных узлов). Я столкнулся с ошибкой размера кучи Java при выполнении задания на подобие.

Что я пытался решить эту проблему.

  1. Увеличьте размер кучи именных узлов, определив их в действии начальной загрузки. Примерно так -
    --bootstrap-action s3: // elasticmapreduce / bootstrap-actions / configure-daemons --args --namenode-heap- size = 8192

  2. Используйте загрузочную программу с интенсивным использованием памяти, рекомендованную AWS (s3: // elasticmapreduce / bootstrap-actions / configurations / latest / memory-loaded)

  3. Установите MAHOUT_HEAPSIZE вручную.

Проблема не решена, есть ли способ ее решить?


person Shihab Rahman    schedule 06.01.2015    source источник
comment
Есть ли у вас какой-либо способ предоставить 250M входов в разные сегменты? Получаете ли вы ошибку кучи сразу после передачи входных данных или она возникает после определенного периода времени?   -  person Payam    schedule 06.01.2015
comment
Не совсем. Он работает в течение некоторого периода времени, а затем выдает ошибку места в куче.   -  person Shihab Rahman    schedule 06.01.2015
comment
Хорошо, проблема в том, что у вас действительно недостаточно памяти для работы с этим огромным объемом данных (это означает, что вам нужно найти лучший компьютер) ИЛИ у вас есть утечка памяти. Вы используете IDE для этого? Если да, просто profile свое java-приложение, и вы сможете увидеть поведение своей кучи. Он либо становится все больше и больше, пока не достигнет предела (вариант 1), либо странным образом меняется в приложении (сборщик мусора не работает должным образом).   -  person Payam    schedule 06.01.2015
comment
Netbeans Profiler, Eclipse Profiler, Jprofiler - это инструменты, которые могут помочь вам справиться с проблемами кучи.   -  person Payam    schedule 06.01.2015
comment
Я использую это в кластере Amazon EMR, поэтому не понимаю, как может помочь профилировщик IDE.   -  person Shihab Rahman    schedule 06.01.2015


Ответы (1)


Редко требуется изменить размер кучи демона namenode по умолчанию в EMR и, скорее всего, jvm контейнера / задачи, который требует настройки (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html).

Прежде чем вносить дальнейшие изменения, вам нужно будет определить, какой процесс на самом деле страдает от ошибки кучи, а затем соответствующим образом настроить.

Если окажется, что это куча jvm контейнера / задачи, ее можно настроить с помощью configure-hadoop (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop).

Также откажитесь от действия начальной загрузки, интенсивно использующего память, это только для AMI 1.x.

person ChristopherB    schedule 06.01.2015