Как заставить Hadoop использовать все ядра в моей системе? - PullRequest
3 голосов
/ 10 октября 2011

У меня 32-х ядерная система.Когда я запускаю задание MapReduce с использованием Hadoop, я никогда не вижу, чтобы процесс java использовал более 150% ЦП (в соответствии с верхом), и обычно он остается на отметке 100%.Оно должно быть ближе к 3200%.

Какое свойство мне нужно изменить (и в каком файле), чтобы включить больше работников?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

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


Ваш mapred.tasktracker.map.tasks.maximum может быть установлен на низком уровне conf/mapred-site.xml.Это будет проблемой, если при проверке JobTracker вы увидите несколько незавершенных задач, но только несколько запущенных задач.Каждая задача представляет собой отдельный поток, поэтому вам может понадобиться 32 максимальных слота на этом узле.


В противном случае, вероятно, ваши данные не будут разбиты на достаточное количество фрагментов.Вы работаете над небольшим количеством данных?Возможно, ваше задание MapReduce выполняется только через несколько входных разбиений и, следовательно, не требует дополнительных картографов.Вместо этого попробуйте выполнить свою работу на сотнях МБ данных и посмотрите, сохраняется ли у вас такая же проблема.Hadoop автоматически разбивает ваши файлы.Количество блоков, на которые разделен файл, - это общий размер файла, деленный на размер блока.По умолчанию одна задача карты будет назначена каждому блоку (не каждому файлу).

В вашем файле конфигурации conf/hdfs-site.xml есть dfs.block.size parameter.Большинство людей устанавливают это на 64 или 128 МБ.Однако, если вы пытаетесь сделать что-то крошечное, вы можете настроить это, чтобы разделить работу больше.

Вы также можете вручную разбить файл на 32 части.

1 голос
/ 26 сентября 2014

Я думаю, вам нужно установить для "mapreduce.framework.name" значение "yarn", потому что значением по умолчанию является "local".

вставьте следующее в ваш mapred-site.xml

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...