Потоковые данные – это данные, формируемые непрерывно тысячами источников, которые обычно отправляют записи данных одновременно и небольшими объемами (на уровне нескольких килобайтов). В состав потоковых данных входят различные виды данных, например файлы журналов, сформированных клиентами при использовании мобильных или интернет-приложений, покупки в интернет-магазинах, действия игроков в играх, информация из социальных сетей, финансовые торговые площадки и геопространственные сервисы, а также телеметрические данные, полученные от подключенных устройств или оборудования в ЦОД.
Эти данные должны быть обработаны последовательно и инкрементно либо по каждой из записей, либо с использованием скользящего временного окна, после чего их можно использовать в различных аналитических задачах, включая корреляцию, агрегацию, фильтрацию и шаблонизацию. Информация, полученная в результате подобного анализа, позволяет компаниям разобраться во многих аспектах своей деятельности, например в использовании сервисов (для задач учета/выставления счетов), активности серверов, навигации по веб-сайтам, геолокации устройств, людей или товаров, и в результате быстро реагировать на изменяющиеся условия. К примеру, компании могут отслеживать изменения общественного настроя в отношении своих торговых марок и продуктов за счет постоянного анализа потоков данных, получаемых из социальных медиа, и в случае необходимости обеспечивать своевременную реакцию.
Обработка потоковых данных является предпочтительной для большинства сценариев использования, подразумевающих непрерывное формирование новых динамических данных. Обработка потоковых данных применима в большинстве отраслевых сегментов и случаев использования, подразумевающих обработку больших данных. Обычно компании начинают с простых задач, например со сбора данных системных журналов, или с элементарных вычислений, например с обновления минимумов и максимумов. Затем эти задачи трансформируются в более сложную обработку, происходящую в режиме, близком к реальному времени. Изначально приложения могут обрабатывать потоки данных с целью формирования простых отчетов и выполнения простых ответных действий, например активации сигнализации, когда значения ключевых параметров выйдут за указанные границы. В итоге этим приложениям приходится выполнять более сложные формы анализа данных, например применять алгоритмы машинного обучения и достигать более глубокого понимания ситуации на основании данных. С течением времени в этот процесс также добавляются комплексные потоковые алгоритмы обработки событий, например временные окна для определения последних популярных кинофильмов, предоставляя возможность получать более сложную аналитическую информацию.
- Датчики, используемые в транспортных средствах, промышленном оборудовании и сельскохозяйственной технике, отправляют данные в потоковое приложение. Приложение осуществляет мониторинг производительности, предупреждает возникновение возможных дефектов и автоматически заказывает необходимые запасные части для предотвращения простоя оборудования.
- Финансовое учреждение отслеживает изменения на фондовых биржах в режиме реального времени, вычисляет рисковую стоимость и автоматически выполняет ребалансировку портфеля ценных бумаг на основании изменений биржевого курса.
- Веб-сайт агентства недвижимости отслеживает набор данных, полученный с мобильных устройств клиентов, и предоставляет рекомендации по объектам недвижимости в режиме реального времени на основании данных геолокации.
- Гелиоэнергетическая компания должна предоставлять своим клиентам определенную проходную мощность, в противном случае ей придется платить штрафы. Она развернула приложение для обработки потоковых данных, которое осуществляет мониторинг всех используемых солнечных батарей и планирует необходимое обслуживание в режиме реального времени, что позволяет минимизировать периоды генерации низкой проходной мощности для каждой из батарей и избежать уплаты штрафов.
- Мультимедийный издатель осуществляет потоковую передачу миллиардов записей со своих онлайновых ресурсов, выполняет агрегацию и дополнение данных с учетом демографической информации о пользователях и оптимизирует размещение контента на веб-сайте, благодаря чему обеспечивается релевантность контента и повышается качество обслуживания посетителей.
- Компания-разработчик интернет-игр выполняет сбор потоковых данных о взаимодействиях игроков с играми и передает эти данные на игровую платформу. Затем выполняется анализ этих данных в режиме реального времени, в результате которого формируются стимулы и динамические эффекты для повышения вовлеченности игроков.
Перед началом работы с потоковой передачей данных стоит сравнить потоковую обработку с пакетной обработкой и выявить различия. Пакетная обработка может использоваться для выполнения вычислений, связанных с обязательными запросами в различных наборах данных. Обычно при расчете результатов подобной обработки используются все входящие в пакет данные, благодаря чему достигается глубокий анализ наборов больших данных. В качестве примера платформ, поддерживающих пакетные задания, можно привести системы, использующие 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.
- Узнайте больше об Amazon Kinesis
- Узнайте о сервисах для работы с большими данными на платформе AWS
- См. страницу Apache Spark в Amazon EMR
- Преобразуйте потоковые данные в аналитические результаты за несколько щелчков мышью с помощью Amazon Kinesis Firehose и Amazon Redshift