Определение потоковой передачи данных
Потоковые данные – это данные, непрерывно генерируемые тысячами источников данных, которые обычно отправляют записи данных одновременно и небольшими объемами (по несколько килобайтов). В состав потоковых данных входят различные виды данных, например файлы журналов, сформированных клиентами при использовании мобильных или интернет-приложений, покупки в интернет-магазинах, действия игроков в играх, информация из социальных сетей, финансовые торговые площадки и геопространственные сервисы, а также телеметрические данные, полученные от подключенных устройств или оборудования в ЦОД.
Эти данные должны быть обработаны последовательно и инкрементно либо по каждой из записей, либо с использованием скользящего временного окна, после чего их можно использовать в различных аналитических задачах, включая корреляцию, агрегацию, фильтрацию и шаблонизацию. Информация, полученная в результате подобного анализа, позволяет компаниям разобраться во многих аспектах своей деятельности, например в использовании сервисов (для задач учета/выставления счетов), активности серверов, навигации по веб-сайтам, геолокации устройств, людей или товаров, и в результате быстро реагировать на изменяющиеся условия. К примеру, компании могут отслеживать изменения общественного настроя в отношении своих торговых марок и продуктов за счет постоянного анализа потоков данных из социальных сетей, а в случае необходимости принимать своевременные меры.
Преимущества потоковой передачи данных
Обработка потоковых данных является предпочтительной для большинства сценариев использования, подразумевающих непрерывное формирование новых динамических данных. Обработка потоковых данных применима в большинстве отраслевых сегментов и случаев использования, подразумевающих обработку больших данных. Обычно компании начинают с простых задач, например со сбора данных системных журналов, или с элементарных вычислений, например с обновления минимумов и максимумов. Затем эти задачи трансформируются в более сложную обработку, происходящую в режиме, близком к реальному времени. Изначально приложения могут обрабатывать потоки данных с целью формирования простых отчетов и выполнения простых ответных действий, например активации сигнализации, когда значения ключевых параметров выйдут за указанные границы. В итоге этим приложениям приходится выполнять более сложные формы анализа данных, например применять алгоритмы машинного обучения и достигать более глубокого понимания ситуации на основании данных. С течением времени в этот процесс также добавляются комплексные алгоритмы обработки потоков и событий, например анализ временных окон для определения самых свежих популярных кинофильмов, что позволяет получать еще более полезную аналитическую информацию.
Примеры потоковой передачи данных
- Датчики, используемые в транспортных средствах, промышленном оборудовании и сельскохозяйственной технике, отправляют данные в потоковое приложение. Приложение осуществляет мониторинг производительности, предупреждает возникновение возможных дефектов и автоматически заказывает необходимые запасные части для предотвращения простоя оборудования.
- Финансовое учреждение отслеживает изменения на фондовых биржах в режиме реального времени, вычисляет рисковую стоимость и автоматически выполняет ребалансировку портфеля ценных бумаг на основании изменений биржевого курса.
- Веб-сайт агентства недвижимости отслеживает набор данных, полученный с мобильных устройств клиентов, и предоставляет рекомендации по объектам недвижимости в режиме реального времени на основании данных геолокации.
- Гелиоэнергетическая компания должна предоставлять своим клиентам определенную проходную мощность, в противном случае ей придется платить штрафы. Она развернула приложение для обработки потоковых данных, которое осуществляет мониторинг всех используемых солнечных батарей и планирует необходимое обслуживание в режиме реального времени, что позволяет минимизировать периоды генерации низкой проходной мощности для каждой из батарей и избежать уплаты штрафов.
- Мультимедийный издатель осуществляет потоковую передачу миллиардов записей со своих онлайновых ресурсов, выполняет агрегацию и дополнение данных с учетом демографической информации о пользователях и оптимизирует размещение контента на веб-сайте, благодаря чему обеспечивается релевантность контента и повышается качество обслуживания посетителей.
- Компания-разработчик интернет-игр выполняет сбор потоковых данных о взаимодействиях игроков с играми и передает эти данные на игровую платформу. Затем выполняется анализ этих данных в режиме реального времени, в результате чего формируются стимулы и динамические эффекты для повышения вовлеченности игроков.
Сравнение пакетной и потоковой обработки
Перед началом работы с потоковой передачей данных стоит сравнить потоковую обработку с пакетной обработкой и выявить различия. Пакетная обработка может использоваться для вычислений по любым запросам к данным из разных наборов. Обычно при расчете результатов подобной обработки используются все входящие в пакет данные, благодаря чему обеспечивается глубокий анализ наборов больших данных. В качестве примера платформ, поддерживающих пакетные задания, можно привести системы, использующие MapReduce, например Amazon EMR. В то же время потоковая обработка требует подачи последовательностей данных и инкрементного обновления метрик, отчетов и итоговой статистики в ответ на каждую поступающую запись данных. Этот тип обработки лучше всего подходит для мониторинга в режиме реального времени и функций ответа.
Пакетная обработка | Потоковая обработка | |
Охват данных | Запросы ко всем или большей части данных в наборе и их обработка. | Запросы к данным и их обработка в пределах скользящего временного окна или только по самой свежей записи данных. |
Размер данных | Большие пакеты данных. |
Отдельные записи или микропакеты из нескольких записей. |
Производительность | Задержки от нескольких минут до нескольких часов. | Требуется задержка в пределах нескольких секунд или миллисекунд. |
Анализ | Комплексная аналитика. | Простые функции ответа, агрегации данных или динамических метрик. |
Многие организации выстраивают гибридные модели за счет комбинации двух подходов и поддерживают операции как на уровне реального времени, так и на пакетном уровне. Сначала данные обрабатываются с помощью платформы потоковых данных, например Amazon Kinesis, с целью извлечения важной информации в режиме реального времени, а затем размещаются в хранилище, например Amazon S3, где преобразуются и загружаются для решения различных задач пакетной обработки.
Возможные проблемы при работе с потоковыми данными
Работа с потоковыми данными в AWS
Amazon Web Services (AWS) предлагает различные варианты работы с потоковыми данными. Вы можете воспользоваться управляемыми сервисами потоковых данных, предлагаемых Amazon Kinesis, или развернуть в Amazon EC2 собственное решение и использовать его для работы с потоковыми данными в облаке.
Amazon Kinesis – это платформа для работы с потоковыми данными в AWS. Она предлагает мощные сервисы, которые упрощают загрузку и анализ потоковых данных, а также позволяет создавать свои собственные настраиваемые приложения для решения специфических задач, возникающих при обработке потоковых данных. Она предлагает три сервиса: Amazon Kinesis Data Firehose, Amazon Kinesis Data Streams и Amazon Managed Streaming for Apache Kafka (Amazon MSK).
Кроме того, вы можете использовать другие платформы потоковых данных, например Apache Flume, Apache Spark Streaming и Apache Storm, в Amazon EC2 и Amazon EMR.
Amazon Kinesis Data Streams
Сервис Amazon Kinesis Data Streams позволяет создавать настраиваемые приложения для обработки или анализа данных в режиме реального времени для решения узкоспециальных задач. Он может непрерывно захватывать и сохранять данные из сотен тысяч источников со скоростью несколько терабайтов в час. У вас есть возможность создавать приложения, потребляющие данные из Amazon Kinesis Data Streams, для работы панелей управления в режиме реального времени, выдачи оповещений, реализации динамического ценообразования, проведения рекламных кампаний и т. д. Amazon Kinesis Data Streams поддерживает платформы потоковой обработки, выбранные пользователем, включая Kinesis Client Library (KCL), Apache Storm и Apache Spark Streaming.
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose – самый простой способ загрузки потоковых данных в AWS. Этот инструмент позволяет захватывать и автоматически загружать потоковые данные в Amazon S3 и Amazon Redshift, а затем выполнять анализ с помощью имеющихся средств бизнес-аналитики и информационных панелей практически в режиме реального времени. Он позволяет быстро реализовать подход ELT и воспользоваться преимуществами от использования потоковых данных.
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Amazon MSK – это полностью управляемый сервис, который упрощает создание и запуск приложений, использующих Apache Kafka для обработки потоковых данных. Apache Kafka – это платформа с открытым исходным кодом для создания потоковых конвейеров данных и приложений в реальном времени. С помощью Amazon MSK вы можете использовать собственные API-интерфейсы Apache Kafka для заполнения озер данных, потоковой передачи измененных данных в базы данных и обратно, а также для мощных приложений машинного обучения и аналитики.
Прочие потоковые решения в Amazon EC2
Пользователи могут установить платформы потоковых данных в Amazon EC2 и Amazon EMR по собственному усмотрению, а также создать собственные уровни хранилища и обработки. Создавая собственное решение для обработки потоковых данных в Amazon EC2 и Amazon EMR, можно избежать сложностей при выделении инфраструктуры и получить доступ к разнообразным вариантам хранения и обработки потоковых данных. Для уровня хранилища потоковых данных доступны варианты Amazon MSK и Apache Flume. Для уровня обработки потоковых данных доступны варианты Apache Spark Streaming и Apache Storm.
Дальнейшие шаги
- Узнайте больше об Amazon MSK
- Узнайте больше об Amazon Kinesis
- Узнайте о сервисах для работы с большими данными на платформе AWS
- См. страницу Apache Spark в Amazon EMR
- Преобразуйте потоковые данные в аналитические результаты за несколько щелчков мышью с помощью Amazon Kinesis Data Firehose и Amazon Redshift

Получите мгновенный доступ к уровню бесплатного пользования AWS.

Начните разработку для сервиса Amazon Kinesis в Консоли управления AWS.