Вопрос по – hadoop: разница между 0 редуктором и идентификатором?

24

Я просто пытаюсь подтвердить свое понимание разницы между 0 редуктором и идентификатором редуктора.

0 reducer means reduce step will be skipped and mapper output will be the final out Identity reducer means then shuffling/sorting will still take place?

Ваш Ответ

4   ответа
37

если вам не нужна сортировка результатов карты - вы устанавливаете 0 уменьшенный, и задание называется только карта.
Если вам нужно отсортировать результаты сопоставления, но вам не нужна агрегация - вы выбираете редуктор идентификации.
И чтобы завершить картину, у нас есть третий случай: нам нужно агрегирование, а в этом случае нам нужен редуктор.

5

ьтаты в выходные файлы <# of redurs>. Это может быть удобно, если вы используете Amazon Web Services для прямой записи в S3, особенно если выходной файл сопоставления мал (например, grep / search for record), и у вас много сопоставителей (например, 1000).

Hi Долан, не могли бы вы немного рассказать об использовании Identity Reducer для объединения результатов в меньшее количество файлов? Я столкнулся с похожими проблемами - иметь много маленьких файлов, сгенерированных заданиями только для карт. Будет ли это менее эффективным по сравнению с заданиями только для карт? Yitong Zhou
Yitong - при использовании Identity Редукторов возникают дополнительные издержки, не связанные ни с одним, потому что выходные данные Mapper необходимо хэшировать в X-сегменты, а затем отправлять в X-редукторы (т. Е. Где X - желаемое количество выходных файлов), сортировать, и затем сохраняется в выходной каталог в HDFS / S3 / и т. д. Если у вас есть тонна данных, вам нужно быть осторожным с этими дополнительными затратами, поскольку в некоторых случаях они могут быть значительными. В качестве альтернативы, если вы сохраняете в HDFS, вы можете использоватьhdfs cat для потоковой передачи всех файлов в одном месте. Я не знаю, есть ли в S3 похожий механизм чтения потоков. Dolan Antenucci
3

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

3

(Mapred.reduce.tasks = 0) и «Стандартный редуктор», который является IdentityReducer (mapred.reduce.tasks = 1 и т. д.) означает, что когда вы используете «Без редуктора», после этапа MAP процессы разделения и перетасовки не выполняются. Следовательно, в этом случае вы получите «чистый» вывод из ваших картографов без дальнейшей обработки. Это помогает для разработки и отладки куколок, но не только.

Похожие вопросы