Проблема в двух словах:
- Существует огромное количество входных данных в формате JSON.Как сейчас, это около 1 ТБ, но оно будет расти.Мне сказали, что у нас будет кластер.
- Мне нужно обработать эти данные, сделать из них график и сохранить его в базе данных.Поэтому каждый раз, когда я получаю новый JSON, мне нужно пройти весь граф в базе данных, чтобы завершить его.
- Позже у меня будет тонкий клиент в браузере, где я буду визуализироватьнекоторые части графика, поиск в нем, обход его, некоторая фильтрация и т. д. Таким образом, эта система не требует большой нагрузки, просто много обработки и данных.
У меня нет опыта в распределеннойсистемы, базы данных NoSQL и другие "большие данные".Во время моего небольшого исследования я обнаружил, что их слишком много, и сейчас я просто потерян.
То, что у меня на доске в данный момент:
- GraphX (GraphFrames) Apache Spark для распределенных вычислений поверх некоторого хранилища (HDFS, Cassanda, HBase, ...) и процессора (Yarn, Mesos, Kubernetes, ...).
- Некоторая графовая база данных.Я думаю, что хорошо использовать язык графовых запросов, такой как Cipher в neo4j или Gremlin в JanusGraph / TitanDB.Neo4j хорош, но у него кластеризация только в EE и мне нужно что-то с открытым исходным кодом.Так что теперь я думаю о последних, которые по умолчанию имеют Gremlin + Cassandra + Elasticsearch.
- Может быть, мне не нужно ничего из этого, просто сохраните граф как матрицу смежности в некоторых RDBMS, таких как Postgres, и этоэто.
- Не знаю, нужен ли мне Спарк в 2 или 3. Нужен ли он вообще?
Мой начальник сказал мне проверить Elasticsearch.Но я думаю, что могу использовать его только в качестве дополнительного полнотекстового поискового движка.
Спасибо за любой ответ!