2010-05-23 3 views
3

Мне нужны хорошие ссылки для использования Hadoop для систем реального времени, таких как поиск с небольшим временем отклика. Я знаю, что у hadoop есть накладные расходы на hdfs, но что лучший способ сделать это с hadoop.приближается к реальному времени с hadoop

ответ

5

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

FWIW, HDFS не имеет ничего общего с накладными расходами. Это тот факт, что задания Hadoop развертывают файл jar на каждом узле, настраивают рабочую область, запускают каждое задание, передают информацию через файлы между этапами вычисления, сообщают о прогрессе и статусе с бегуном задания и т. Д. И т. Д.

+0

hmmm! то какова альтернатива для поиска в режиме реального времени, когда требуется большая обработка данных для запроса. – Akhil

+1

Используйте поисковую систему, такую ​​как Lucene. –

+0

хотя мой код использует lucene в backend, но мои данные очень большие, и я делаю много операций с документами в lucene, когда запрос приходит, эта обработка не может быть выполнена заранее. Таким образом, эта обработка должна выполняться распределенным способом. – Akhil

9

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

Не зная о вашей проблеме, я дам вам несколько попыток ответа на вопрос.

  1. Посмотрите на HBase, который предоставляет структурированное надежное хранилище данных поверх HDFS, аналогичное Google BigTable. http://hadoop.apache.org/hbase/
  2. Возможно, вам просто нужна помощь в управлении репликацией и очерчиванием данных. Проверьте Gizzard, промежуточное программное обеспечение, чтобы сделать именно это: http://github.com/twitter/gizzard
  3. Обработка всегда может быть выполнена заранее. Если это означает, что вы материализуете слишком много данных, возможно, что-то вроде Lucandra может помочь - Lucene работает поверх Cassandra в качестве бэкэнда? http://github.com/tjake/Lucandra

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

+0

круто! для меня это список хороших и новых указателей. Я посмотрю на них. – Akhil

1

Этот вопрос старый, но он просит ответа. Даже если есть миллионы документов, но не изменяются в режиме реального времени, например, в часто задаваемых вопросах, Lucene + SOLR для распространения в достаточной степени удовлетворяет потребность. Hathi Trust индексирует миллиарды документов, используя ту же комбинацию.

Это совершенно другая проблема, если индекс меняется в реальном времени. Даже у Lucene будут проблемы с обновлением индекса, и вам придется искать поисковые системы в режиме реального времени. Некоторые попытки переделать Lucene в реальном времени и, возможно, должны работать. Вы также можете посмотреть поисковую систему HSearch, основанную на Hadoop и HBase в режиме реального времени, размещенную на http://bizosyshsearch.sourceforge.net

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