2017-01-28 5 views
1

Я немного смущен о Как работает Mapreduce. Я прочитал несколько статей, но не получил правильного ответа.Выполнение Mapreduce в кластеле hadoop

Сценарий:

Я сохранил файл размер 1 Тб на вершине HDFS (Скажем, она хранится в местоположении/пользователе/​​входе /). Репликация - 3, а размер блока - 128 МБ.

Теперь я хочу проанализировать этот 1TB-файл, используя mapreduce. Поскольку размер блока составляет 128 Мбайт, у меня будет всего 8192 блоков. Учитывая, что у меня есть 100 машин в кластере, тогда

Будет ли задание на карту 8192 отображено на всех 100 узлах, равномерно распределяя количество картографов? Или он будет работать только на тех узлах, где размещены реплицированные данные?

ответ

1

Количества Картостроителей зависит от InputSplits, а не фактор репликации.

см ниже поста для понимания внутренностей InputSplits:

How does Hadoop process records split across block boundaries?

Количество картографов и редукторов решается Hadoop Framework.

см ниже пост для более подробной информации:

Default number of reducers

Для простоты предположим, что HDFS блок и InputSplit одинаковы без данных, охватывающих по нескольким узлам данных.

В вашем случае, 1 TB обработка файла требуется Maps. При запуске задачи Map задача map пытается запустить Mapper на узле, где присутствуют данные. 1 TB файл блоки могут быть распределены неравномерно на узлы. Если они распределены равномерно на узлах , Framework будет выполнять задачи карты на всех узлах. Местонахождение данных играет ключевую роль в выборе узла данных.

+0

Спасибо Rabindra. Хорошие объяснения – Rahul

1

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

Теперь возможно, что блок в HDfS составляет 128 мб, а размер входного разделения - 256 МБ, в этом случае на этот входной расщепленный пробег будет работать только 1 картограф, который перекрывает 2 блока. Теперь возникает вопрос, как создается разделение ввода. Эти разбиения создаются классом InputFormat, который содержит методы getSplit и createrecordreader, которые отвечают за создание разделов, и вы можете переопределить этот метод, если хотите изменить способ создания этих разделов.

Эти задания картографа запускаются на разных узлах кластера, но нет никакой гарантии, что он будет равномерно распределен. Mapreduce всегда пытается передать задание mapper узлу, который обрабатывает локальные данные. Если это невозможно, это даст задание mapper узлу с лучшими ресурсами.

Обратите внимание, что входной сплит не содержит фактических данных. Они ссылаются на данные. Эти сохраненные местоположения помогают mapredUce при назначении заданий.

Я предлагаю вам посетить эту ссылку http://javacrunch.in/Yarn.jsp, это даст вам представление о том, как пряжа работает для распределения заданий. Вы также можете посетить это для внутренней работы карты уменьшить http://javacrunch.in/MR.jsp.

Надеется, что это решает ваш запрос

+0

Спасибо, Сиддхартха. Приведенное объяснение очистило мое сомнение. – Rahul

 Смежные вопросы

  • Нет связанных вопросов^_^