Streaming

Материал из Xgu.ru

Перейти к: навигация, поиск

Потоковые данные (англ. streaming data) —

Примеры источников потоковых данных:

  • мониторинг технологических процессов;
  • веб-аналитика;
  • онлайн-реклама;
  • социальные сети;
  • данные мобильных устройств и Internet-of-Things;

Принципиальные отличия потоковых данных от обычных:

  • новые данные поступают всё время;
  • данные, как правило, слабо структурированы;
  • данные, как правило, имеют высокую кардинальность.

Особенности архитектуры реального времени:

  • высокая доступность (high availability);
  • низкие задержки (low latency);
  • горизонтальная масштабируемость (horizontal scalability).

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

О чём нужно думать в первую очередь при разработке систем с архитектурой реального времени:

  • сбор данных;
  • течение данных;
  • обработка данных;
  • хранение данных;
  • доставка пользователю.


Содержание

[править] Течение данных

Течение данных (data flow) —

Программы, использующиеся в настоящее время для организации течения данных:

  • Kafka (хорошо подходит, если всё разрабатывается с нуля);
  • Flume (прекрасно подходит для legacy-инсталляций).

[править] Обработка данных

Обработка потоковых данных (data processing) —

Программы, использующиеся в настоящее время для обработки потоковых данных:

  • Samza (использует YARN для выполнениях вычислений, имеет поддержку Kafka из коробки);
  • Storm (может использовать YARN, но может работать и без; нет встроенной поддержки Kafka/Flume).


[править] Хранение потоковых данных

Хранение потоковых данных может быть организовано с помощью:

  • Redis,
  • Cassandra (в особенности, когда данных много и они редко запращиваются);
  • MongoDB (хороший выбор, в частности, есть поддержка GIS).


[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/Streaming»