Инструменты с открытым исходным кодом для помощи в майнинг-потоке результатов лидеров.

12

Рассмотрим поток, содержащий кортежи, (user, new_score) представляющие оценки пользователей в онлайн-игре. Поток может иметь 100-1000 новых элементов в секунду. В игре 200K до 300K уникальных игроков.

Я хотел бы иметь несколько постоянных запросов, таких как:

  1. Какие игроки опубликовали более x баллов в скользящем окне продолжительностью один час
  2. Какие игроки набрали х% очков за скользящее окно продолжительностью один час?

У меня вопрос, какие инструменты с открытым исходным кодом я могу использовать для запуска этого проекта? Я рассматриваю Эспер в данный момент.

Примечание: я только что закончил читать «Mining Data Streams» (глава 4 Mining of Massive Datasets ), и я довольно новичок в майнинге потоков данных.

Тахир Ахтар
источник

Ответы:

8

Это не полное решение, но вы можете рассмотреть OrientDB как часть вашего стека. Orient - это сервер базы данных Graph-Document, написанный полностью на Java.

В базах данных графа, отношения считаются граждане первого класса, и поэтому, пересекающие эти отношения можно сделать довольно быстро. Orient - это также база данных документов, которая позволит вам создать архитектуру без схемы, которая вам нужна. Однако настоящая причина, по которой я предлагаю Ориент, заключается в его расширяемости. Он поддерживает потоковую передачу через сокеты, и вся база данных может быть встроена в другое приложение. Наконец, можно масштабировать эффективно и / или может работать полностью через память. Таким образом, с некоторым Java опытом, вы можете запускать запросы предустановленных к базе данных в памяти.

Мы делаем что-то подобное. В создании приложения / сайта для социальных наук научно-исследовательского сотрудничества, мы оказались с очень сложными моделями данных. В итоге мы написали несколько запросов с использованием языка Gremlin Traversal (подмножество Groovy, которое, конечно же, является Java), а затем выставили эти запросы через сервер двоичных соединений OrientDB. Таким образом, клиент открывает TCP-сокет, отправляет короткое двоичное сообщение, и запрос выполняется в Java непосредственно к базе данных в памяти.

OrientDB также поддерживает запись функций запросов в Javascript, и вы можете использовать Node.js напрямую взаимодействовать с экземпляром Orient.

Для чего-то такого размера, я хотел бы использовать Orient в сочетании с Hadoop или что-то подобное. Вы можете также использовать Восток в сочетании с экстрасенс.

Рассмотрим: введение ориентироваться: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

Сложные запросы в режиме реального времени: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

Обсуждение параметров потоковой передачи с использованием Java и Orient: https://github.com/orientechnologies/orientdb/issues/1227

Аполлон
источник
Спасибо за предложение. Я посмотрел на Neo4j раньше , но никогда в orientdb. В настоящее время я не могу представить себе много пользы при моделировании данных leadeboard как граф , но я по- прежнему смотреть на потоковое варианты в orientdb
Таир Ахтар
4

Недавно я прочитал очень хорошую статью, которая предлагает использовать шторм Twitter для задачи, которая выглядит очень похоже на вашу.

Константин В. Салихов
источник
Я прочитал некоторые основы об Apache Storm, похоже, он обеспокоен проблемами, связанными с масштабируемостью / надежностью потоковой обработки, оставляя вам возможность работать с реальными алгоритмами. Эспер, с другой стороны, обрабатывает данные для вас на основе ваших запросов
Тахир Ахтар