Как сказать hadoop, сколько памяти выделить для одного задания картографирования? - PullRequest
0 голосов
/ 26 сентября 2011

Я создал задание Elastic MapReduce и пытаюсь оптимизировать его производительность.

В данный момент я пытаюсь увеличить количество картографов на экземпляр.Я делаю это с помощью mapred.tasktracker.map.tasks.maximum = X

elastic-mapreduce --create --alive --num-instance 3 \
 --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
 --args -s,mapred.tasktracker.map.tasks.maximum=5

Каждый раз, когда я пытаюсь установить X на 2 для небольшого экземпляра, происходит сбой инициализации, из чего я заключаю, что выделенный hadoop800 м памяти на одно задание карты.Мне это кажется чрезмерным.Я бы хотел, чтобы это было 400 м вершин.

Как мне сказать hadoop использовать меньше памяти для каждой задачи карты?

1 Ответ

3 голосов
/ 26 сентября 2011

Проверьте свойство mapred.child.java.opts . По умолчанию используется значение -Xmx200m, что означает 200 МБ кучи для каждой задачи карты / уменьшения.

Похоже, EC2 small имеет 1,7 ГБ памяти. Вот память с настройками по умолчанию процессов Hadoop на узле TaskTracker. Благодаря «Hadoop: полное руководство»

Дата данных 1000 МБ
Tasktracker 1000 МБ
Задача дочерней карты Tasktracker 400 МБ (2 * 200 МБ)
Задача дочерней карты Tasktracker 400 МБ (2 * 200 МБ)

Всего до 2800 МБ.

Помимо этого, есть память ОС. Либо подберите более подходящую конфигурацию, либо измените настройки по умолчанию. К вашему сведению, вот рекомендация о конфигурации H / W для разных узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...