Различные способы настройки памяти для дочернего процесса TaskTracker (Mapper и Reduce Tasks) - PullRequest
9 голосов
/ 06 ноября 2011

В чем разница между установкой mapred.job.map.memory.mb и mapred.child.java.opts с использованием -Xmx для управления максимальной памятью, используемойMapper и уменьшить задачу?Какой из них имеет приоритет?

1 Ответ

14 голосов
/ 08 ноября 2011

-Xmx укажите максимальное пространство кучи выделенного jvm.Это пространство, зарезервированное для размещения объектов, которым управляет сборщик мусора .С другой стороны, mapred.job.map.memory.mb указывает максимальную виртуальную память , разрешенную подпроцессом задачи Hadoop.Если вы превышаете максимальный размер кучи, JVM генерирует исключение OutOfMemoryException.

JVM может использовать больше памяти, чем максимальный размер кучи, поскольку ему также необходимо пространство для хранения определений объектов (пространство permgen) и стека.Если процесс использует больше виртуальной памяти, чем mapred.job.map.memory.mb, он будет убит hadoop.

Таким образом, один не имеет приоритета над другим (и они измеряют различные аспекты использования памяти), но -Xmx являетсяПараметр для JVM и mapred.job.map.memory.mb - это жесткая верхняя граница виртуальной памяти, которую может использовать попытка задачи, принудительно поддерживаемая hadoop.

Надеюсь, это полезно, память сложна!В настоящее время я озадачен тем, почему мои процессы JVM используют несколько кратных максимального размера кучи в виртуальной памяти в моем SO сообщении .

...