У меня есть виртуальная машина 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 использовать оставшуюся оперативную память, чтобы уменьшить количество потерянных записей (надеюсь, это ускорит работу) или это нормальное поведение?
Огромное спасибо!