Сколько картографов/редьюсеров нужно установить при настройке кластера Hadoop?

При настройке кластера Hadoop какой научный метод установить количество картографов/редукторов для кластера?


person techlad    schedule 05.04.2012    source источник


Ответы (4)


Формулы нет. Это зависит от того, сколько ядер и сколько памяти у вас есть. Количество маппера + количество редукторов не должно превышать количество ядер в целом. Имейте в виду, что на машине также запущены демоны Task Tracker и Data Node. Одно из общих предложений — больше картографов, чем редукторов. Если бы я был на вашем месте, я бы выполнил одну из своих типичных задач с разумным объемом данных, чтобы попробовать ее.

person root1982    schedule 05.04.2012
comment
Спасибо root .. Имея 48 ГБ ОЗУ на каждой машине и имея 8-ядерную машину. Допустим, мы резервируем 1 ГБ ОЗУ для каждой сопоставленной задачи. Оптимальным значением будет 48 ГБ ОЗУ — 1 ГБ для DataNode — 1 ГБ для TaskTracker = 46 ГБ доступной ОЗУ. В этом случае у нас должно быть 8 картографов для 1 машины или мы должны увеличить их до 46, учитывая случай, когда все редукторы запускаются после завершения картографов? - person techlad; 05.04.2012
comment
Большинство процессоров поставляются с технологией Hyper-Threading, и она включена по умолчанию. поэтому, если у вас 16 потоков процессора, вы, вероятно, можете увеличить их число. Я бы сосредоточился на количестве процессоров. Что касается памяти, даже если вы не используете ее всю, система всегда может найти ей хорошее применение, например, кэширование. 1G для демонов по умолчанию. Я бы проконтролировал систему и рассмотрел бы большее число. В большинстве случаев мапперы работают параллельно с редьюсерами. - person root1982; 05.04.2012
comment
Кончились персонажи... Так что, если бы я был на вашем месте, я бы начал с 10 мапперов и 4 редукторов. Сколько у тебя дисков? мапперы собираются читать параллельно. У вас есть несколько дисковых устройств? - person root1982; 05.04.2012
comment
Спасибо корень. На данный момент у меня есть только 1 диск и RAID для резервирования. Что я заметил прямо сейчас, так это то, что, хотя я выделяю 1 ГБ ОЗУ для каждого картографа, когда я запускаю команду top, я вижу, что она занимает около 1,6 ГБ виртуальной памяти и около 0,5 ГБ реальной памяти. Это нормальное поведение? - person techlad; 06.04.2012
comment
Избыточность на каждом узле вообще не предлагается. HDFS имеет собственную избыточность. Скажем, вы запускаете 10 картографов, которые будут читать диск одновременно. Для обычного диска со скоростью вращения 7200 об/мин 2-3 маппера будет вполне достаточно. Для вашей системы с памятью 48G и 16 потоками процессора ввод-вывод, вероятно, будет проблемой. Я предлагаю вам получить несколько дисков для каждого узла и настроить их как JBOD. Что касается проблемы с памятью, я бы не стал слишком беспокоиться об этом. Обычно, если вы указали 1G, виртуальной памяти может быть больше 1G. - person root1982; 08.04.2012

Цитата из «Hadoop The Definite Guide, 3-е издание», стр. 306

Поскольку задания MapReduce обычно связаны с вводом-выводом, имеет смысл иметь больше задач, чем процессоров, чтобы лучше использовать их.

Величина превышения подписки зависит от загрузки ЦП выполняемыми вами заданиями, но хорошее эмпирическое правило заключается в том, чтобы на один-два раза больше задач (с учетом задач отображения и сокращения), чем количество процессоров.

Процессор в приведенной выше цитате эквивалентен одному логическому ядру.

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

person Jifeng Zhang    schedule 01.09.2014

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

person SSaikia_JtheRocker    schedule 06.04.2012
comment
Это будет очень зависеть от приложения и оборудования. Если данные очень хорошо агрегируются на стороне картографа, по сети передается меньше данных. В этом случае, если редюсер запустится слишком рано, он просто будет ждать обработки данных. Если у вас есть быстрая сеть, это будет та же ситуация. С другой стороны, задержка редуктора задержит работу. Цель состоит не в том, чтобы запустить больше картографа, а в том, чтобы закончить работу быстрее. - person root1982; 08.04.2012
comment
Root: Дал вам комментарий вверх!. Я не уверен, но просто чтобы уточнить, скажем, у нас есть 8-ядерная машина без HT. Допустим, здесь мы запускаем 5 параллельных задач карты и 2 параллельных задачи сокращения. Итак, здесь мы зарезервировали 2 слота для задач сокращения. Разве это не тот случай, когда мы лениво загружаем редьюсер, эти 2 слота могут быть использованы задачами карты вместо этого, что увеличивает количество параллельных задач карты до 7? - person SSaikia_JtheRocker; 08.04.2012
comment
JtheRocker: Если мы установим мапперы на 5 и редукторы на 2, мы не сможем использовать слоты редукторов. Максимум 5 мапперов могут работать в любой момент. - person techlad; 08.04.2012
comment
техлад: Понятно. Так будет ли ленивая загрузка работать для вас? Хотя я не уверен. - person SSaikia_JtheRocker; 08.04.2012

Взято из Мой блог Hadoop Gyan:

Количество картографов определяется в соответствии с принципом локальности данных, как описано ранее. Принцип локальности данных: Hadoop старается изо всех сил запускать задачи сопоставления на узлах, где данные присутствуют локально, чтобы оптимизировать задержку в сети и межузловой связи. Поскольку входные данные разбиваются на части и передаются в разные задачи карты, желательно, чтобы все данные, подаваемые в эту задачу карты, были доступны на одном узле. присутствовать на одном узле, рекомендуется/рекомендуется иметь размер разделения, равный размеру блока HDFS, чтобы задача карты могла использовать преимущества этой локализации данных. Следовательно, 64M данных на один маппер. Если мы видим, что некоторые картографы работают в течение очень короткого промежутка времени, попробуйте уменьшить количество картографов и заставить их работать дольше примерно на минуту.

Количество редукторов должно быть немного меньше, чем количество слотов редукции в кластере (концепция слотов приходит с предварительной настройкой в ​​свойствах трекера заданий/задач при настройке кластера), чтобы все редукторы заканчивались за одну волну и полностью использовать ресурсы кластера.

person Abhishek Jain    schedule 12.11.2012