мне интересно, где память используется в следующей работе:Hadoop Streaming Использование памяти
- Hadoop Mapper/Reducer Heap Размер:
-Xmx2G
Streaming API:
- Mapper:
/bin/cat
- Редуктор:
wc
- Mapper:
Файл ввода - 350MByte файл, содержащий одиночный линия, полная
a
.
Это упрощенная версия реальной проблемы, с которой мы столкнулись.
Чтение файла из HDFS и построение Text
-объекта не должен составлять более 700MB Heap - при условии, что Text
делает также использовать 16-бит на символ - Я не уверен, что, но я мог себе представить, что Text
использует только 8 бит.
Таким образом, это (наихудший) 700MB Line. Строка должна соответствовать по меньшей мере 2x в куче, но я всегда получаю ошибки из памяти.
Возможно, это ошибка в Hadoop (например, нечетные копии), или я просто не понимаю некоторые требуемые шаги интенсивной памяти?
Будем очень благодарны за любые дальнейшие намеки.
Спасибо. Но моя проблема в том, что 'mapred.child.java.opts' _is_' -Xmx2048M' - поэтому задача может использовать память до 2 ГБ. –
@mt_: Сколько у вас общая система? И, сколько выделяется tasktracker и datanode для этой машины? –
Каждый компьютер имеет память 16 ГБ и сконфигурирован для 2 задач карты и 1 задачи уменьшения -> не более 6 ГБ следует использовать в любое время. –