Для каких типов задач / приложений можно использовать Apache Hadoop (функции MapReduce) - PullRequest
0 голосов
/ 18 марта 2011

Я не понимаю, какие типы приложений можно использовать с Hadoop.Должна ли каждая задача быть адаптирована для hadoop / mapreduce.Например, можете ли вы просто связать с ним какой-нибудь долго работающий java?Или вам специально нужно адаптировать ваше приложение / задачу для hadoop.Полагаю, хорошим примером будет использование lucene и hadoop для индексации.

Ответы [ 3 ]

1 голос
/ 20 марта 2011

MapReduce - модель обработки;он точно говорит вам, во что должна вписаться ваша задача обработки.

  1. Ваша обработка должна быть ориентирована на пакет
  2. Вы должны быть в состоянии преобразовать свою работу в (набор) карту и сократить количество шагов.
  3. Для того, чтобы иметьЛюбое преимущество свойств масштабируемости MapReduce позволяет разделить работу на достаточно независимые (!!) фрагменты, которые можно обрабатывать отдельно.

Hadoop делает (среди прочего) MapReduce с добавленнымПреимущество заключается в том, что вы действительно можете выполнять работу надежно на 1000 параллельных системах (если у вас достаточно независимых компонентов).

С учетом этих ограничений: некоторые вещи не могут быть выполнены, а многие могут быть выполнены.Анализ файлов журналов (т. Е. Большого набора независимых строк) или даже веб-аналитики (каждый отдельный посетитель / сеанс может обрабатываться отдельно) являются одними из самых распространенных приложений.

Так что да, ваша задача должна быть преобразована в соответствиив модели для работы.

0 голосов
/ 14 марта 2012

По сути, вы должны быть в состоянии «разбить» свою задачу на независимые задачи.

0 голосов
/ 18 марта 2011

Hadoop - это действительно механизм для разделения / объединения процессов. Вы разделяете задачу на похожие наборы данных [карта], а затем объединяете аналогичные наборы в результат [уменьшить / объединить].

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

...