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