Исключение нехватки памяти во время генерации TFIDF для использования в MLlib Spark

Я сталкивался с проблемами переполнения памяти при создании векторов TFIDF для использования в классификации документов с использованием реализации классификации MLlib Naive Baye.

http://chimpler.wordpress.com/2014/06/11/classifiying-documents-using-naive-bayes-on-apache-spark-mllib/

Проблемы с переполнением памяти и сборкой мусора возникают при сборе idf для всех терминов. Чтобы дать представление о масштабе, я читаю около 615 000 (около 4 ГБ текстовых данных) документов небольшого размера из HBase и запускаю программу spark с 8 ядрами и 6 ГБ памяти исполнителя. Я попытался увеличить уровень параллелизма и перетасовать долю памяти, но безрезультатно.

Как я могу решить эту проблему OOM?

Спасибо


person jatinpreet    schedule 18.09.2014    source источник


Ответы (1)


Как вы подключаете Spark RDD к HBase? Насколько велики ваши регионы HBase? ЕСЛИ вы загружаете несколько регионов HBase одновременно, и сумма их размеров больше, чем доступная оперативная память, вы можете сжечь память на этапе загрузки.

Один из способов избежать этого — написать собственный загрузчик HBase, специально сканирующий только интересующие вас столбцы, а не весь файл региона, что может значительно снизить потребление памяти. Затем вы также можете настроить количество загружаемых разделов на основе семантического понимания вашего пространства ключей HBase, дополнительно настраивая потребление памяти во время загрузки.

person David    schedule 18.09.2014
comment
Спасибо за ответ. Я решил проблему, настроив кластер с большим объемом памяти и загрузив его оттуда, помимо оптимизации кода. - person jatinpreet; 30.09.2014