Что такое потоковая передача данных?

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

Какими характеристиками обладает потоковая трансляция данных?

Поток данных обладает перечисленными ниже конкретными характеристиками, которые его определяют.

Хронологическая значимость

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

Непрерывность потока

Потоки данных не обладают началом или концом. Они собирают данные на постоянной основе и существуют непрерывно на протяжении всего необходимого времени. Например, журналы активности сервера сохраняют события до тех пор, пока сервер запущен.

Уникальность

Повторная передача потока данных вызывает проблемы из-за чувствительности к временным параметрам. Таким образом, задача точной обработки данных в режиме реального времени обретает критическую важность. К сожалению, возможности по предоставлению повторных передач ограничены в рамках большинства источников потоковой передачи данных.

Отсутствие гомогенности

Некоторые источники могут выполнять потоковую передачу данных во множестве структурированных форматов, таких как JSON, Avro и списки разделенных запятыми значений – CSV, используя типы данных, которые состоят из строк, чисел, дат и двоичных параметров. Системы обработки потоков должны обладать возможностями по обслуживанию различных вариантов данных.

Неидеальность

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

Почему потоковые данные – это важно?

Традиционные системы обработки данных записывают данные в централизованное хранилище данных и обрабатывают записи группами или пакетами. Эти системы были созданы специально для того, чтобы потреблять и структурировать данные для последующего анализа. Впрочем, в последние годы характер корпоративных данных и сами системы обработки базовых данных радикальным образом изменились.

Бесконечный объем данных

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

Продвинутые системы обработки данных

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

Для чего можно применять потоковую передачу данных?

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

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

Приведем несколько примеров потоковых данных.

Анализ данных

Приложения обрабатывают потоки данных с целью формирования отчетов и выполнения ответных действий, например активации сигнализации, когда значения ключевых параметров выйдут за указанные границы. Более сложные приложения обработки потоков способны формировать расширенную аналитику, применяя алгоритмы машинного обучения к бизнес-данным и данным клиентской активности.

Приложения Интернета вещей

Устройства Интернета вещей (IoT) станут еще одним отличным примером использования потоков данных. Датчики, используемые в автомобилях, промышленном оборудовании и сельскохозяйственной технике, отправляют данные в потоковое приложение. Приложение осуществляет мониторинг производительности, предупреждает возникновение возможных дефектов и автоматически заказывает необходимые запасные части для предотвращения простоя оборудования.

Финансовая аналитика

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

Рекомендации насчет режима реального времени

Приложения для работы с недвижимостью позволяют отслеживать данные геолокации с мобильных устройств потребителей и в режиме реального времени составлять рекомендации насчет объектов, которые стоит посетить. Точно так же могут работать и приложения для рекламы, продуктов питания, розничной торговли и прочие потребительские приложения: все они смогут составлять рекомендации в режиме реального времени, что повысит ценность таких приложений для пользователей.

Гарантии обслуживания

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

Мультимедиа и игры

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

Контроль рисков

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

В чем разница между пакетными и потоковыми данными?

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

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

  Пакетная обработка

Потоковая обработка

Охват данных

Запросы ко всем или большей части данных в наборе или же их обработка.

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

Размер данных


Большие пакеты данных.

Отдельные записи или микропакеты из нескольких записей.

Производительность

  Задержки от нескольких минут до нескольких часов.

Требуется задержка в пределах нескольких секунд или миллисекунд.

Анализ

Комплексная аналитика. Простые функции ответа, агрегации данных или динамических метрик.

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

Amazon Redshift Streaming Ingestion позволяет пользователям потреблять данные непосредственно из Потоков данных Amazon Kinesis без их размещения в Amazon S3. Сервис также может потреблять данные из Управляемой потоковой передачи Amazon для Apache Kafka (Amazon MSK) и отправлять их в Amazon Redshift.

Как выполнять обработку потоковых данных?

Архитектура обработки потоковых данных содержит два основных типа компонентов.

Поставщики потоков

Поставщики потоков – это программные компоненты в приложениях и системах IoT, которые заняты сбором данных. Они передают записи в обработчик потока, который хранит имена потоков, значения данных и номера последовательностей. Такой обработчик буферизует или временно группирует записи данных по имени потока. Он использует номер последовательности для отслеживания уникальной позиции каждой записи и обрабатывает данные в хронологической последовательности.

Потребители потока

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

Реализация архитектуры

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

Какие проблемы возникают при работе с потоковыми данными?

Архитектура обработки потоковых данных требует особой подготовки, обусловленной характером и объемом данных.

Доступность

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

Возможности масштабирования

Необработанные потоки данных могут неожиданным образом создавать пиковые нагрузки. Например, количество публикаций в социальных сетях резко возрастает во время крупных соревнований. По этой причине система должна обеспечивать правильное формирование последовательностей данных, гарантируя доступность и стабильность работы даже во время пиковых нагрузок.

Надежность

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

Как AWS может удовлетворить ваши требования к потоковым данным?

AWS предоставляет несколько вариантов работы с потоковыми данных. 

Amazon Kinesis

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

Kinesis предоставляет три сервиса: Данные Amazon Kinesis Firehose, Потоки данных Amazon Kinesis и Управляемая потоковая передача Amazon для Apache Kafka (Amazon MSK).

Kinesis Data Firehose

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

Kinesis Data Streams

Kinesis Data Streams может непрерывно захватывать и сохранять данные из сотен тысяч источников со скоростью несколько терабайтов (ТБ) в час. Программа поддерживает платформы потоковой обработки, выбранные пользователем, включая Amazon Kinesis Client Library (KCL), Apache Storm и Apache Spark Streaming.

Amazon MSK

Amazon MSK – это полностью управляемый сервис, который упрощает создание и запуск приложений, использующих Apache Kafka для обработки потоковых данных. Apache Kafka – это платформа с открытым исходным кодом для создания потоковых конвейеров данных и приложений в реальном времени. 

Amazon Redshift

Amazon Redshift Streaming Ingestion позволяет пользователям принимать потоковые данные в свои хранилища данных для проведения аналитики в режиме реального времени из нескольких потоков данных Kinesis. Вы можете проводить глубокую аналитику с помощью знакомых инструкций языка SQL и с легкостью создавать конвейеры ELT, а также управлять ими. Кроме того, вы сможете также обрабатывать огромные объемы потоковых данных с низкой задержкой и высокой пропускной способностью для выполнения аналитики за считанные секунды.

Прочие потоковые решения в Amazon EC2

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

Начните работу с потоковой трансляцией данных на AWS, создав бесплатный аккаунт AWS уже сегодня!

Потоковая передача данных в AWS: дальнейшие шаги

Зарегистрировать бесплатный аккаунт

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

Регистрация 
Начните разработку в консоли

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

Вход