Hadoop для обработки данных от Apache solr

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

Применим ли hadoop в этом конкретном сценарии? Я видел пример подсчета слов в документации по карте hadoop mapreduce.

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

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


person aruns    schedule 23.04.2012    source источник
comment
Не вижу причин, почему это не сработает. Я работаю над аналогичным сценарием и получаю результаты от службы на основе REST и передаю ее в Hadoop.   -  person allthenutsandbolts    schedule 23.04.2012
comment
Я не говорю, что это не работает. Я просто анализирую все перед тем, как начать. Можете ли вы сказать мне, правильный ли мой подход к хаупу в этой ситуации?   -  person aruns    schedule 24.04.2012


Ответы (3)


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

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

Terracota не от Spring/SpringSource/VMWare, хотя она проприетарная и коммерческая.

person WeedAddictProgrammer    schedule 23.04.2012

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

Подробнее о базах данных NoSQL.

Изменить:
Я только что наткнулся на этот веб-семинар от Couchbase и Cloudera (компания, занимающаяся решением и поддержкой Hadoop), где они собираются обсудить использование NoSQL + Hadoop.

person Marko Bonaci    schedule 24.04.2012
comment
Я уже использую mongodb. Он не извлекает данные, о которых я беспокоюсь. Меня беспокоит обработка миллионов записей, полученных из mongodb. - person aruns; 24.04.2012
comment
Итак, ваши данные уже находятся в Mongo и его Aggregation Framework и MapReduce MongoDb по какой-то причине недостаточно? - person Marko Bonaci; 24.04.2012
comment
да. У меня есть еще несколько вещей, которые нужно сделать при обработке каждой записи. - person aruns; 24.04.2012

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

person David Gruzman    schedule 24.04.2012