MapReduce Map Задачи Поделиться входными данными - PullRequest
2 голосов
/ 07 ноября 2011

Я недавно начал изучать инфраструктуру MapReduce / Hadoop, и мне интересно, действительно ли моя проблема поддается инфраструктуре.

Учтите это. Рассмотрим пример, в котором у меня есть большой набор входных текстовых файлов и, кроме того, в качестве входных данных я хочу взять большой набор ключевых слов (скажем, содержащихся в одном файле). Для каждого ключевого слова я хотел бы искать в каждом текстовом файле и сообщать количество экземпляров этого ключевого слова в этом файле. текст Я бы повторил это для каждого ключевого слова, для каждого текстового файла.

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

Может ли подобная проблема быть подходящей для фреймворка MapReduce?

1 Ответ

4 голосов
/ 07 ноября 2011

Упомянутый сценарий определенно подходит для фреймворка MapReduce.

Ключевые слова для поиска не обязательно должны быть входным параметром для функции карты. Есть два варианта.

  1. Файл, содержащий ключевые слова, можно поместить в HDFS и прочитать в функции карты с помощью API HDFS.

  2. DistributedCache также можно использовать для совместного использования одного и того же файла в мапперах.

Вся инициализация, такая как чтение файла в HDFS, может быть выполнена в функции o.a.h.mapreduce.mapper # setup () .

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

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

Стоит учесть, что если данных мало, то использование Hadoop является дополнительной нагрузкой, чем использование сценария Shell. Для больших данных использование Hadoop является преимуществом.

...