• Помощь в проектировании распределенной архитектуры

    @plinyar
    Вопросы делают цели проекта более мутными.
    С одной стороны вы говорите, что "нужна высокая доступность и отказоустойчивость", а потом идет вопрос "Сейчас данные лежат на разных серверах. Надо будет все это переносить в HDFS или можно как-то "натравить" hadoop на имеющиеся данные без их переноса?"

    Соответственно производные вопросы:
    * Эти данные и сервисы доступа к данным в гетерогенных площадках сами удовлетворяют требованиям доступности и отказоустойчивости?
    * Интерфейсы доступа к площадкам из Hadoop-а (или аналога) удовлетворяют требованиям доступности и отказоустойчивости? Не возникает ли тут обычная проблема надежности систем с распределенными данными (data federation)?

    Если не удовлетворяют, то логично концентрироваться на централизованном хранении в hadoop и соответственно сливе туда всех данных.
    Если удовлетворяют, то разумным кажется комбинированное решение, состоящее из трех подсистем:
    * Индексирование - обеспечение быстрого поиска по неструктурированным данным. Посмотрите SolrCloud, например, как составная часть Hadoop от Cloudera. Индексировать можете данные прямо из источников.
    * Виртуализация данных - система, предоставляющая единый вид табличных данных над совокупностью разнородных распределенных баз данных (хоть в облаках). Нужно для детального drill-down анализа без необходимости перетаскивать все в центральное хранилище (Hadoop?). По-моему, такие решения есть у SAS, у SAP BI, Red Hat JBoss Data Virtualization
    * BigData analysis - система, позволяющая делать анализ очень больших объемов. Здесь может быть и Hadoop. Ключевая особенность - в эту систему вы перетаскиваете только те очень большие данные, которые вам действительно нужно анализировать. А не все подряд.

    Ну и не будем забывать, что в Hadoop не очень удобно хранить video/audio данные. На HDFS слишком много файлов не положите (есть ограничение по кол-ву файлов), а если файлы не большие, то отнимать будут они все-равно блоки по 256Мб (да умножить на 3). Если наоборот будете класть большие файлы в HBase, например, то, насколько мне известно, он не поддерживает потоковой передачи данных из бинарного поля - читать придется всегда весь массив байт одного видео материала. ИМХО, для этих целей больше подходят объектные хранилища, типа Swift (OpenStack). Хотя все зависит от сценариев использования.
    Ответ написан