2016-11-29 3 views
-2

Я довольно новичок в науке о данных и теперь только начинаю разрабатывать систему, которая потребовала от меня анализа больших данных (например, 5-6 миллионов записей в каждой БД).Как обрабатывать большие данные с помощью фреймворка Java?

В увеличенной картине: У меня есть несколько БД, содержащих различные типы данных, которые необходимо интегрировать. После интеграции данных мне также необходимо выполнить некоторый анализ данных. И, наконец, мне нужно визуализировать данные для многих клиентов.

В целом, я хочу знать, что в настоящее время технологии/тенденции для обработки больших данных (то есть с основы Java)

+0

Итак, вы в основном просите «Как делать большие данные» ?. Это целая область исследований и, на мой взгляд, слишком широка для SO. – marstran

+0

все попытки еще ???? tip: поиск общих и обычных запросов, их оптимизация, подумайте, как сгруппировать эти данные для создания индексов (интеграция данных для быстрого чтения), сделайте свой анализ и покажите результаты ..... –

+0

http://stackoverflow.com/questions/ 7984740/java-handling-billionions-bytes? Rq = 1 –

ответ

2

Ответ: В зависимости от ваших нефункциональных требований. Ваши варианты использования будут иметь решающее значение для определения того, какую технологию использовать. Позвольте мне поделиться одним из моих впечатлений, чтобы уточнить, что я имею в виду:

В 2012 году мне нужно было заниматься ~ 2 миллионами неструктурированных записей в месяц и выполнять алгоритмы энтропии (теории информации) и подобия для ~ 600 запросов в минуту. Наш сценарий составлен:

  • Записи неструктурированные, но уже в формате JSON.
  • Алгоритмы для энтропии и подобия были основаны во всем содержимом БД и записываемых записей (см. [Формулу энтропии Шеннона] [1], и вы поймете сложность, о которой я говорю)
  • более 100 различных веб-приложений в качестве клиентов этого решения.

С учетом этих требований (и многие другие), а после выполнения POCS с [Casandra] [2], [Hadoop] [3], [Voldmort] [4], [Neo4j] [5], а также испытания стресса, упругость, масштабируемость и надежность, мы прибыли в самом лучшем решении на тот момент (2012 год):

  • Java EE 7 (с новым Garbage-First (G1) коллектором активированным)
    • JBoss AS 7 ([wildfly] [6]) + [Infinispan] [7] для состояния гонки MapReduce, среди других задач управления кластерами и распределенного кеша.
  • сервлетов 3.0 (потому что это Неблокирующая I/O)
  • [Nginx] [8] (В то время была бета, но отличается от httpd2, было уже несколько соединений в неблокирующей моды)
  • [MongoDB] [9] (из-за наши необработанные уже в стиле JSON документа)
  • [Apache Mahout] [10] для всех реализации алгоритмов, включая стратегию MapReduce
  • среди других материалов.

Итак, все зависит от ваших требований. Там нет серебряной пули. Каждая ситуация требует архитектурного анализа.

Я помню, что НАСА в это время обрабатывал ~ 1 ТБ в час в AWS с помощью Hadoop, из-за [проекта Марса с любопытством] [11].

В вашем случае я бы рекомендовал обратить внимание на ваши требования, возможно, рамки Java это не то, что вам нужно (или не только то, что вам нужно):

  • Если вы собираетесь просто реализовать алгоритмы анализ данных, статистиков и шахтеров данных (например), возможно [язык программирования R] [12], будет лучшим выбором.
  • Если вам нужен очень быстрый ввод-вывод (например, самолет): любой родной скомпилированный язык, например [Go Lang] [13], [C++] [14] и т. Д.
  • Но если вы действительно собираюсь создавать веб-приложения, которые на самом деле будут просто клиентом или подавать большое решение для данных, я бы рекомендовал нечто более мягкое и масштабируемое, например [nodeJS] [15], или даже как раз в сжатые сроки технологии, подобные тем, которые основаны на JVM ([Scala] [16], [Jython] [17], Java) в [dockerized] [18] [микросервисы] [19] ...

Удачи! (Извините, переполнение стека не позволило мне добавить ссылку ссылки еще - Но все, о чем я говорил здесь, можно легко найти в googled).

+0

спасибо за это –

Смежные вопросы