Hadoop — уменьшите количество пролитых записей

У меня есть виртуальная машина Ubuntu, работающая в автономном/псевдо-режиме с 4 ГБ оперативной памяти и 4 ядрами.

Все установлено по умолчанию, кроме:

io.file.buffer.size=65536
io.sort.factor=50
io.sort.mb=500
mapred.tasktracker.map.tasks.maximum=4
mapred.tasktracker.reduce.tasks.maximum=4

Эта машина не будет серийной, но я возился с ней, чтобы разобраться с тонкой настройкой.

Моя проблема заключается в том, что когда я запускаю тестовое задание Hadoop Streaming (получение отдельных записей в текстовом файле размером 1,8 ГБ), я получаю довольно много разлитых записей, и вышеуказанные настройки, похоже, не уменьшают разливы. Также я заметил, что когда я отслеживаю использование памяти в системном мониторе Ubuntu, он никогда не используется полностью и никогда не превышает 2,2 ГБ.

Я посмотрел на изменение HADOOP_HEAP, mapred.map.child.java.opts и mapred.reduce.child.java.opts, но я не уверен, что их установить, поскольку значений по умолчанию кажется, что их должно быть достаточно.

Есть ли параметр, который мне не хватает, который позволит Hadoop использовать оставшуюся оперативную память, чтобы уменьшить количество потерянных записей (надеюсь, это ускорит работу) или это нормальное поведение?

Огромное спасибо!


person Mark Vickery    schedule 28.02.2013    source источник
comment
Эти слайды помогли мне. Это очень хорошо объяснено. Пожалуйста, посмотрите: slideshare.net/cloudera/mr-perf   -  person sufinawaz    schedule 30.09.2013


Ответы (2)


В дополнение к увеличению памяти, рассматривали ли вы возможность запустить объединитель для вашей задачи после шага карты, который будет сжимать и уменьшать количество записей, которые необходимо хранить в памяти или разбрасывать?

К сожалению, когда вы используете потоковую передачу, кажется, что это должно быть закодировано на Java и не может быть на любом языке, который вы используете.

http://wiki.apache.org/hadoop/HadoopStreaming

person Andrew Mao    schedule 01.03.2013
comment
Похоже, это ограничение снято в последних версиях Hadoop. Справка теперь гласит: -combiner ‹cmd|JavaClassName› Необязательный. Команда для запуска в качестве объединителя - person b0fh; 07.10.2014

Память по умолчанию, назначенная задаче сопоставления/уменьшения, составляет 200 МБ. Вы можете увеличить это значение с помощью -Dmapred.child.java.opts=-Xmx512M.

В любом случае, это очень интересный материал о настройке Hadoop Performance.

Надеюсь, поможет!

person psabbate    schedule 01.03.2013