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

Потоковая передача колоночных данных с помощью Apache Arrow

Перевод статьи подготовлен специально для студентов курса «Data Engineer».

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

За последние несколько недель мы с Nong Li добавили в Apache Arrow бинарный потоковый формат, дополнив уже существующий формат файлов random access/IPC. У нас есть реализации на Java и C++ и привязки Python. В этой статье я расскажу, как работает формат и покажу, как можно достичь очень высокой пропускной способности данных для DataFrame pandas.

Потоковая передача колоночных данных

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

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

В Apache Arrow коллекция колоночных массивов в памяти, представляющая чанк таблицы, называется пакетом записей (record batch). Чтобы представить единую структуру данных логической таблицы можно собрать несколько пакетов записей.

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

Различные форматы выглядят примерно так, как представлено на этом рисунке:

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

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

Чтобы показать вам как это работает, я создам пример датасета, представляющего один потоковый чанк:

Теперь, предположим, что мы хотим записать 1 Гб данных, состоящих из чанков размером 1 Мб каждый, итого 1024 чанка. Для начала давайте создадим первый фрейм данных размером 1 Мб с 16 столбцами:

Затем я конвертирую их в pyarrow.RecordBatch :

Теперь я создам поток вывода, который будет писать в оперативную память и создам StreamWriter :

Затем мы запишем 1024 чанка, которые в итоге составят 1Гб набора данных:

Поскольку мы писали в ОЗУ, то весь поток мы сможем получить в одном буфере:

Все это, конечно, хорошо, но у вас могут возникнуть вопросы. Как быстро это происходит? Как размер чанка влияет на производительность получения DataFrame pandas?

Производительность потоковой передачи данных

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

Для 1 Мб, как указано выше, на моем ноутбуке (Quad-core Xeon E3-1505M) получается:

Получается, что эффективная пропускная способность — 7.75 Гб/с для восстановления DataFrame объемом 1Гб из 1024 чанков по 1Мб. Что происходит, если мы будем использовать чанки большего или меньшего размера? Вот такие результаты получатся:

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

Производительность существенно снижается с 256K до 64K чанков. Меня удивило, что чанки размером 1 Мб обрабатывались быстрее, чем 16 Мб. Стоит провести более тщательное исследование и понять, является ли это нормальным распределением или тут влияет что-то еще.

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

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

Источник

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

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

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

Легальная потоковая передача данных

Существует множество легальных онлайн платформ для воспроизведения видео и музыки, которые покупают авторские права, чтобы предложить мультимедийный контент своей аудитории за платную подписку. Например, Spotify, Deezer, Soundcloud, Netflix, Amazon Prime Video, Apple TV + и другие.

Но бывает и бесплатный контент — YouTube, который финансируется Google и рекламой в видео.

Незаконная трансляция

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

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

Что такое стриминг? Что такое стрим? Как работает стриминг?

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

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

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

Массовый обмен данными по сети является трудоемким и сложным процессом. Однако есть быстрый и простой способ сделать это и помогает нам в этом одноранговая сеть.

Что такое IPTV? Лучшая приставка IPTV. Как работает IPTV?

что такое потоковая передача данных. Смотреть фото что такое потоковая передача данных. Смотреть картинку что такое потоковая передача данных. Картинка про что такое потоковая передача данных. Фото что такое потоковая передача данных

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

Источник

Что такое потоковая передача мультимедиа?

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

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

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

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

Как работает потоковая передача мультимедиа?

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

Отправка видео через интернет, в отличие от отправки текста и неподвижных изображений, требует более быстрого метода передачи данных, чем TCP/IP, который отдает приоритет надежности над скоростью.

Как протокол UDP улучшает потоковую передачу?

UDP — это транспортный протокол, который используется для перемещения пакетов данных по сетям. UDP используется с интернет-протоколом (IP), и вместе они называются UDP/IP. В отличие от TCP, UDP не отправляет сообщения назад и вперед, чтобы открыть соединение перед передачей данных, и он не гарантирует, что все пакеты данных прибывают и находятся в порядке. В результате передача данных не занимает столько времени, сколько через TCP, и, хотя некоторые пакеты теряются по пути, существует так много пакетов данных, участвующих в поддержании потока, что пользователь не должен замечать потерянные.

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

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

Если TCP похож на службу доставки пакетов, которая требует, чтобы получатель подписал его, то UDP похож на службу доставки, которая оставляет пакеты на переднем крыльце, не стуча в дверь, чтобы получить подпись. Служба доставки TCP теряет меньше пакетов, но служба доставки UDP работает быстрее, так как пакеты могут быть выгружены, даже если их никто не подписывает.

Потоковая передача и буферизация

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

Какие факторы замедляют стриминг?

На стороне пользователя:

Как сделать потоковую передачу быстрее?

Потоковая передача подвержена тем же задержкам и снижению производительности, что и другие виды веб-контента. Поскольку потоковое содержимое хранится в другом месте, расположение хостинга имеет большое значение, как и в случае с любым типом содержимого, доступного через интернет. Если пользователь в Нью-Йорке пытается выполнить потоковую передачу с сервера Netflix в Лос Гатос, видеоконтент должен будет пересечь 3000 миль, чтобы достичь пользователя, и видео придется потратить много времени на буферизацию или может даже не воспроизводиться вообще. По этой причине Netflix и другие поставщики потоковой передачи широко используют распределенные сети доставки контента (CDN), хранящие контент в местах по всему миру, которые намного ближе к пользователям.

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

Источник

Как работает потоковая передача

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

Что такое потоковая передача

Потоковая передача позволяет распространять и воспроизводить видео- и аудиоконтент в Интернете.

Как работает потоковая передача

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

Легальное и нелегальное использование

Легальная потоковая передача

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

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

Нелегальная потоковая передача

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

Где разместить контент для потоковой передачи

Вы можете размещать свой контент для бесплатной передачи на таких сайтах как YouTube, Dailymotion или Vimeo.

Где можно слушать или смотреть бесплатный потоковый контент

Смотреть и слушать потоковое содержимое можно на специальных платформах для распространения, например, тех же YouTube, Dailymotion и Vimeo; музыкальных потоковых веб-сайтах, например Deezer и Spotify; на официальных сайтах и в различных профилях социальных сетей исполнителей или звукозаписывающих компаний, таких как канал YouTube или страницы MySpace и Facebook; на онлайн-радио-платформах; а также на любых веб-сайтах, предлагающих аудио- или видеоконтент в Creative Commons или как общественное достояние, то есть, для всеобщего пользования.

Источник

Определение потоковой передачи данных

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

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

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

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

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

Сравнение пакетной и потоковой обработки

Перед началом работы с потоковой передачей данных стоит сравнить потоковую обработку с пакетной обработкой и выявить различия. Пакетная обработка может использоваться для вычислений по любым запросам к данным из разных наборов. Обычно при расчете результатов подобной обработки используются все входящие в пакет данные, благодаря чему обеспечивается глубокий анализ наборов больших данных. В качестве примера платформ, поддерживающих пакетные задания, можно привести системы, использующие 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.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *