2015-09-02 5 views
0

При запуске программы «Уменьшить» на карте, включая карту, объединитель и редуктор, на терминале отображается ошибка с пропущенной ошибкой, но когда я запускаю программу только с помощью картографа, он не проливается.Произошел сбой в MapReduce

15/09/02 13:56:27 INFO mapred.JobClient: TaskIdattempt_201508260430_0030_m_000001_0, Статус: FAILED java.io.IOException: Протечка потерпел неудачу в org.apache.hadoop.mapred.MapTask $ MapOutputBuffer.collect (MapTask. java: 1007) atorg.apache.hadoop.mapred.MapTask $ NewOutputCollector.write (MapTask.java:689) в

ответ

0

Когда вы выполняете задание с редуктором, промежуточные данные вывода карты будут помещены под процесс прежде чем пролить его на локальный диск. Существует фоновый процесс/поток, который сортирует ваши данные и записывает данные в разные разделы в зависимости от количества редукторов. Проблема с вашей работой заключается в том, что в tasktracker, на котором выполняется задача карты, недостаточно места для локальной памяти для сохранения промежуточных данных. Но когда вы запускаете только работу с картой, сортировка и перетасовка не происходит, она напрямую записывает ваш вывод в HDFS. Попробуйте сжать свой промежуточный вывод карты и установить свой кодек сжатия в зависимости от размера вашего файла. Я обычно предпочитаю мгновенно.

<property> 
    <name> mapreduce.map.output.compress</name> 
    <value>true</value> 
</property> 
<property> 
    <name>mapreduce.map.output.compress.codec</name> 
    <value>org.apache.hadoop.io.compress.SnappyCodec</value> 
</property> 
+0

после изменения mapreduce.map.output.compress истинной когда я повторно запустить банку он все еще показывает значение как ложные. –

+0

У меня получилось, что мы должны выполнить команду после внесения изменений в файл mapred-site.xml. Команда изменит настройки, внесенные в файл xml. cmd is syncconf.sh hadoop –

+0

Тогда, возможно, вам нужно увеличить размер памяти подчиненного узла –

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