Потоковые данные – это данные, формируемые непрерывно тысячами источников, которые обычно отправляют записи данных одновременно и небольшими объемами (на уровне нескольких килобайтов). В состав потоковых данных входят различные виды данных, например файлы журналов, сформированных клиентами при использовании мобильных или интернет-приложений, покупки в интернет-магазинах, действия игроков в играх, информация из социальных сетей, финансовые торговые площадки и геопространственные сервисы, а также телеметрические данные, полученные от подключенных устройств или оборудования в ЦОД.

Эти данные должны быть обработаны последовательно и инкрементно либо по каждой из записей, либо с использованием скользящего временного окна, после чего их можно использовать в различных аналитических задачах, включая корреляцию, агрегацию, фильтрацию и шаблонизацию. Информация, полученная в результате подобного анализа, позволяет компаниям разобраться во многих аспектах своей деятельности, например в использовании сервисов (для задач учета/выставления счетов), активности серверов, навигации по веб-сайтам, геолокации устройств, людей или товаров, и в результате быстро реагировать на изменяющиеся условия. К примеру, компании могут отслеживать изменения общественного настроя в отношении своих торговых марок и продуктов за счет постоянного анализа потоков данных, получаемых из социальных медиа, и в случае необходимости обеспечивать своевременную реакцию.


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


  • Датчики, используемые в транспортных средствах, промышленном оборудовании и сельскохозяйственной технике, отправляют данные в потоковое приложение. Приложение осуществляет мониторинг производительности, предупреждает возникновение возможных дефектов и автоматически заказывает необходимые запасные части для предотвращения простоя оборудования.
  • Финансовое учреждение отслеживает изменения на фондовых биржах в режиме реального времени, вычисляет рисковую стоимость и автоматически выполняет ребалансировку портфеля ценных бумаг на основании изменений биржевого курса.
  • Веб-сайт агентства недвижимости отслеживает набор данных, полученный с мобильных устройств клиентов, и предоставляет рекомендации по объектам недвижимости в режиме реального времени на основании данных геолокации.
  • Гелиоэнергетическая компания должна предоставлять своим клиентам определенную проходную мощность, в противном случае ей придется платить штрафы. Она развернула приложение для обработки потоковых данных, которое осуществляет мониторинг всех используемых солнечных батарей и планирует необходимое обслуживание в режиме реального времени, что позволяет минимизировать периоды генерации низкой проходной мощности для каждой из батарей и избежать уплаты штрафов.
  • Мультимедийный издатель осуществляет потоковую передачу миллиардов записей со своих онлайновых ресурсов, выполняет агрегацию и дополнение данных с учетом демографической информации о пользователях и оптимизирует размещение контента на веб-сайте, благодаря чему обеспечивается релевантность контента и повышается качество обслуживания посетителей.
  • Компания-разработчик интернет-игр выполняет сбор потоковых данных о взаимодействиях игроков с играми и передает эти данные на игровую платформу. Затем выполняется анализ этих данных в режиме реального времени, в результате которого формируются стимулы и динамические эффекты для повышения вовлеченности игроков.

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

  Пакетная обработка Потоковая обработка
Перечень данных Запросы ко всем или большей части данных в наборе или же их обработка. Запросы или обработка данных в пределах скользящего временного окна или самой последней записи данных.
Размер данных
Большие пакеты данных.
Отдельные записи или микропакеты из нескольких записей.
Производительность Задержки от нескольких минут до нескольких часов. Требуется задержка в пределах нескольких секунд или миллисекунд.
Анализ Комплексная аналитика. Простые функции ответа, агрегации данных или динамических метрик.

Многие организации выстраивают гибридные модели за счет комбинации двух подходов и поддерживают операции как на уровне реального времени, так и на пакетном уровне. Сначала данные обрабатываются с помощью платформы потоковых данных, например Amazon Kinesis, с целью извлечения важной информации в режиме реального времени, а затем размещаются в хранилище, например Amazon S3, где преобразуются и загружаются для решения различных задач пакетной обработки.


Обработка потоковых данных требует использования двух уровней: уровня хранилища и уровня обработки. Уровень хранилища должен поддерживать очередность записей и строгую непротиворечивость для обеспечения быстрых, экономичных и воспроизводимых операций записи и чтения больших потоков данных. Уровень обработки отвечает за потребление данных, расположенных на уровне хранилища, выполнение вычислений с использованием этих данных и уведомление уровня хранилища о том, какие данные можно удалить за ненадобностью. Кроме того, необходимо предусмотреть масштабируемость, надежность данных и отказоустойчивость как на уровне хранилища, так и на уровне обработки. В результате появилось множество платформ, предоставляющих необходимую инфраструктуру для создания приложений обработки потоковых данных, включая Amazon Kinesis Streams, Amazon Kinesis Firehose, Apache Kafka, Apache Flume, Apache Spark Streaming и Apache Storm.


Amazon Web Services (AWS) предлагает различные варианты работы с потоковыми данными. Вы можете воспользоваться управляемыми сервисами потоковых данных, предлагаемых Amazon Kinesis, или выполнить развертывание в Amazon EC2 и использовать собственное решение для работы с потоковыми данными в облаке.

Amazon Kinesis – это платформа для работы с потоковыми данными в AWS. Она предлагает мощные сервисы, которые упрощают загрузку и анализ потоковых данных, а также позволяет создавать свои собственные настраиваемые приложения для решения специфических задач, возникающих при обработке потоковых данных. Платформа предлагает два сервиса: Amazon Kinesis Firehose и Amazon Kinesis Streams.

Кроме того, вы можете использовать другие платформы потоковых данных, например Apache Kafka, Apache Flume, Apache Spark Streaming и Apache Storm, в Amazon EC2 и Amazon EMR. 

Сервис Amazon Kinesis Streams позволяет создавать настраиваемые приложения для обработки или анализа данных в режиме реального времени для решения узкоспециальных задач. Он может непрерывно захватывать и сохранять данные со скоростью нескольких терабайт в час из сотен тысяч источников. У вас есть возможность создавать приложения, потребляющие данные из Amazon Kinesis Streams, для работы панелей управления в режиме реального времени, выдачи оповещений, реализации динамического ценообразования, проведения рекламных кампаний и т. д. Amazon Kinesis Streams поддерживает платформы потоковой обработки, выбранные пользователем, включая Kinesis Client Library (KCL), Apache Storm и Apache Spark Streaming. Подробнее о Amazon Kinesis Streams »

Amazon Kinesis Firehose – это самый простой способ загрузки потоковых данных в AWS. Этот инструмент позволяет захватывать и автоматически загружать потоковые данные в Amazon S3 и Amazon Redshift, а затем выполнять анализ с помощью имеющихся средств бизнес-аналитики и информационных панелей практически в режиме реального времени. Он позволяет быстро реализовать подход ELT и воспользоваться преимуществами от использования потоковых данных. Подробнее об Amazon Kinesis Firehose »


Пользователи могут установить платформы потоковых данных в Amazon EC2 и Amazon EMR по собственному усмотрению, а также создать собственные уровни хранилища и обработки. Создавая собственное решение для обработки потоковых данных в Amazon EC2 и Amazon EMR, можно избежать сложностей при выделении инфраструктуры и получить доступ к разнообразным вариантам хранения и обработки потоковых данных. В число вариантов уровня хранилища потоковых данных входят Apache Kafka и Apache Flume. В число вариантов уровня обработки потоковых данных входят Apache Spark Streaming и Apache Storm.