приближаясь к реальному времени с помощью hadoop - PullRequest
3 голосов
/ 23 мая 2010

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

Ответы [ 3 ]

10 голосов
/ 24 мая 2010

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

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

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

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

5 голосов
/ 23 мая 2010

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

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

1 голос
/ 27 июня 2011

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

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

...