2012-06-28 4 views
0

Если у меня было миллионы записей данных, которые постоянно обновляются и добавляются к каждому дню, и мне нужно расчесывать все данные для записей, которые соответствуют определенной логике, а затем взять это подмножество и вставить его в отдельный базы данных, я бы использовал Hadoop и MapReduce для такой задачи или есть какая-то другая технология, которую мне не хватает? Основная причина, по которой я ищу нечто, отличное от стандартного RDMS, состоит в том, что все базовые данные получены из нескольких источников и неравномерно структурированы.Является ли Hadoop правильной технологией для этого?

ответ

2

Map-Reduce предназначен для алгоритмов, которые могут быть распараллелены, и локальные результаты могут быть вычислены и агрегированы. Типичным примером будет подсчет слов в документе. Вы можете разбить это на несколько частей, где вы подсчитываете некоторые слова на одном узле, некоторые на другом узле и т. Д., А затем суммируете итоговые значения (очевидно, это тривиальный пример, но иллюстрирует тип проблемы).

Hadoop предназначен для обработки больших файлов данных (например, файлов журналов). Размер блока по умолчанию - 64 МБ, поэтому наличие миллионов небольших записей на самом деле не подходит для Hadoop.

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

+0

Я думаю, что запрос был больше о пакетной обработке в реальном времени в Hadoop. –

+0

В этом случае никакой хаос не предназначен для обработки в реальном времени. –

1

Hadoop/MR предназначены для пакетной обработки, а не для обработки в режиме реального времени. Таким образом, необходимо рассмотреть другую альтернативу, такую ​​как TwitterStorm, HStreaming.

Также посмотрите на Hama на real time processing данных. Обратите внимание, что обработка в реальном времени в Хаме все еще необоснованна, и необходимо много улучшить/выполнить работу.

1

Я бы порекомендовал Storm или Flume. В любом из них вы можете анализировать каждую запись по мере ее поступления и решать, что с ней делать.

0

Если ваши тома данных не велики, а миллионы записей не являются звуками, я бы предложил попробовать получить больше от RDMBS, даже если ваша схема не будет правильно нормализована. Я думаю, что даже tavle структуры K1, K2, K3, Blob будет более полезен t
В NoSQL хранилища KeyValue построены для поддержки уникальных данных в различных вариантах, но их возможности запросов ограничены.
Только случай, который я могу придумать как полезный, - это способность MongoDB/CoachDB индексировать данные схемы. Вы сможете получить записи по некоторому значению атрибута.
Что касается Hadoop MapReduce - я думаю, что это не полезно, если вы не хотите использовать много процессоров для вашей обработки или иметь много данных или использовать распределенные возможности сортировки.

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