Я получаю странные ошибки при запуске программы wordcount-like mapreduce. У меня есть кластер hadoop с 20 подчиненными устройствами, каждый из которых имеет 4 ГБ оперативной памяти. Я сконфигурировал задачи своей карты, чтобы иметь кучу 300 МБ, и мои уменьшенные слоты задач получают 1 ГБ. У меня есть 2 слота для карт и 1 слот для сокращения на node. Все идет хорошо, пока не завершится первый раунд картографических задач. Затем прогресс остается на уровне 100%. Я полагаю, что тогда происходит фаза копирования. Каждая задача карты генерирует что-то вроде:
Map output bytes 4,164,335,564
Map output materialized bytes 608,800,675
(Я использую SnappyCodec для сжатия)
После остановки в течение часа задачи сокращения сокращаются со следующим исключением:
Error: java.lang.OutOfMemoryError: Java heap space at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.shuffleInMemory(ReduceTask.java:1703) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1563) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1401) at
org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1333
Я был googling и нашел эту ссылку, но я действительно не знаю, что с этим делать: общая ссылка hadoop
Я не понимаю, почему у hadoop возникли проблемы с копированием и слиянием, если он сможет выполнить тестовый тестер. Не может быть, чтобы весь вывод карты вписывался в ОЗУ редукторной нити. Итак, что здесь происходит?
В приведенной выше ссылке они обсуждают настройку следующих параметров:
mapreduce.reduce.shuffle.input.buffer.percent = 0.7
mapreduce.reduce.shuffle.memory.limit.percent = 0.25
mapreduce.reduce.shuffle.parallelcopies = 5
Они утверждают, что тот факт, что произведение параметров > 1, позволяет печатать ошибки с ошибками. EDIT: Обратите внимание, что 5 * 1,25 * 0,7 все еще < 1, так что сосредоточьтесь на моем втором решении!! Прежде чем перезапустить эту интенсивную симуляцию, я был бы очень рад услышать о ком-то мнение относительно проблемы, с которой я столкнулся, так как это беспокоит почти неделю. Я также, кажется, не совсем понимаю, что происходит в этой фазе копирования, я бы ожидал, что сортировка слияния на диске не потребует большого размера кучи?
Большое спасибо за любые полезные комментарии и ответы!