2012-04-23 3 views
0

Мне нужно обработать некоторый огромный объем данных. Мне бы хотелось, чтобы он обрабатывался с использованием распределенных вычислений (Масштабируемый). Я получаю данные от apache Solr.On, передавая определенный вход, я получаю огромный набор данных из apache solr. Для каждой записи в этом наборе данных я передам первичный ключ REST api, чтобы получить некоторую информацию, которая будет прикреплена к записи . Затем каждая запись будет подвергаться некоторому обновлению. Каждый обновленный объект в окончательной огромной коллекции будет записан как отдельный XML-файл в папку.Hadoop для обработки данных из Apache solr

ли Hadoop применимо в данном конкретном случае? .Я видел образец WordCount в Hadoop MapReduce documentation.I пытался думать о моей ситуации подобным образом, в котором карту, испускаемого карте уменьшить на 2 узлах будет

Node1 - Map<InputIdToSolr1,Set<RecordsFromSolr1to500>> 
Node2 - Map<InputIdToSolr1,Set<RecordsFromSolr500to1000>> 

Тогда эти результаты будут объединены функцией уменьшения в hadoop.Unlike wordcount мои узлы будут иметь только один элемент в карте для каждого узла. Я не уверен, что использование hadoop имеет смысл. Какие еще варианты/java-проекты с открытым исходным кодом я могу использовать для масштабирования обработки записей. Я видел Terracotta с весны, но, похоже, это коммерческое приложение.

+0

Я не вижу причин, почему это не сработает. Я работаю над подобным сценарием и получаю результаты от службы на основе REST и передаю ее Hadoop – allthenutsandbolts

+0

Я не говорю, что он не работает. Я просто анализирую все перед запуском. Можете ли я сказать, если мой подход с hadoop в этой ситуации correct/not – aruns

ответ

0

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

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

Терракота не из Spring/SpringSource/VMWare, хотя она является частной и коммерческой.

0

Рассматривали ли вы использование баз данных NoSQL? Решение о том, какой из них использовать, зависит от формы ваших данных. Чтобы проверить их (все с открытым исходным кодом):

More about NoSQL databases.

Edit:
Я просто наткнулся на this webinar из Couchbase и Cloudera (Hadoop решение & поддержки компании), где они собираются, чтобы обсудить использование NoSQL + Hadoop.

+0

Я уже использую mongodb.It не собирает данные, которых я беспокоюсь. Моя проблема заключается в обработке миллионов записей, полученных от mongodb – aruns

+0

Итак, ваши данные уже находятся в Mongo и его [Aggregation Framework] (http: /www.mongodb.org/display/DOCS/Aggregation+Framework) и [MapGeduce MongoDb] (http://www.mongodb.org/display/DOCS/MapReduce) по какой-то причине недостаточно? –

+0

yes.I есть еще несколько вещей, которые нужно сделать при обработке каждой записи – aruns

0

Задача - это звуки, подходящие для карты Hadoop MapReduce. Более того - Lucene и Hadoop созданы тем же человеком Дугом Реттингем. В вашем случае вы можете рассмотреть различные уровни интеграции. Самый простой вариант - поместить ваши данные в HDFS, затем выбрать/записать формат ввода, соответствующий вашему формату данных, а в Mapper сделать ваш звонок REST для завершения записи.
Если у вас много другой, но относительно простой обработки, я бы предложил рассмотреть ваши данные как таблицы Hive - или из HDFS, или в SOLR.
Я не разбираюсь в архитектуре SOLR, но если вы используете apache nutch вместе с SOLR - у вас может быть hasoop интегрирован внутри и может использовать его.

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