приближение к реальному времени с помощью hadoop

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


person Akhil    schedule 23.05.2010    source источник


Ответы (3)


Вам нужно предоставить гораздо больше информации о целях и проблемах вашей системы, чтобы получить хороший совет. Возможно, 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, но не потому, что он создан для решения конкретных задач с предварительно загруженными данными, а не для универсальной вычислительной модели для произвольных вычислений.

person SquareCog    schedule 24.05.2010
comment
прохладно! это кажется мне списком хороших и новых указателей. Я посмотрю на это. - person Akhil; 25.05.2010

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

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

person Marcelo Cantos    schedule 23.05.2010
comment
хм! тогда какова альтернатива поиску в реальном времени, когда для запроса требуется обработка больших объемов данных? - person Akhil; 23.05.2010
comment
Используйте поисковую систему, например Lucene. - person Marcelo Cantos; 23.05.2010
comment
хотя мой код использует lucene в бэкэнде, но мои данные очень велики, и я много обрабатываю документы в lucene, когда приходит запрос, эту обработку нельзя выполнить заранее. Таким образом, эта обработка должна выполняться распределенным образом. - person Akhil; 24.05.2010
comment
Это может помочь изменить ваш вопрос с более подробной информацией о том, что вы пытаетесь сделать. В частности, Google не трогает свои документы при обслуживании запроса. Что делает ваша система, что требует больше усилий, чем требуется для поиска в Google? - person Marcelo Cantos; 24.05.2010
comment
Хорошо! Мои документы - это несколько вопросов (часто задаваемые вопросы, миллионы), и задача состоит в том, чтобы сопоставить входящий шумный запрос с одним из этих вопросов (который я буду называть здесь FAQ). Поэтому, чтобы сопоставить шумный запрос с одним из часто задаваемых вопросов, я нашел сходство между пользовательским запросом (который является шумным) и терминами часто задаваемых вопросов, что требует большой обработки, такой как вычисление LCS, расстояние Левенштейна, поиск по словарю синонимов и т. д. Короче говоря, это немного затратно в вычислительном отношении, если судить по эмпирическим данным. База данных часто задаваемых вопросов охватывает гигабайты данных (поскольку она также содержит ответы и некоторую другую информацию). - person Akhil; 24.05.2010

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

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

person Sunil    schedule 27.06.2011