Учебное пособие по потоковой передаче Apache Spark для начинающих: работа, архитектура и функции
Опубликовано: 2020-02-27В настоящее время мы живем в мире, где огромное количество данных генерируется каждую секунду с высокой скоростью. Эти данные могут дать значимые и полезные результаты, если они будут тщательно проанализированы. Он также может предложить решения для многих отраслей промышленности в нужное время.
Они очень полезны в таких отраслях, как туристические услуги, розничная торговля, СМИ, финансы и здравоохранение. Многие другие ведущие компании внедрили анализ данных, например отслеживание взаимодействия клиентов с различными видами продуктов, осуществляемое Amazon на своей платформе, или получение зрителями персонализированных рекомендаций в режиме реального времени, предоставляемое Netflix.
Его может использовать любой бизнес, который использует большой объем данных, и они могут анализировать его в своих интересах, чтобы улучшить общий процесс в своем бизнесе и повысить удовлетворенность клиентов и опыт пользователей. Лучший пользовательский опыт и удовлетворенность клиентов в долгосрочной перспективе приносят пользу организации, позволяя расширять бизнес и получать прибыль.
Оглавление
Что такое потоковое вещание?
Потоковая передача данных — это метод, при котором информация передается в виде непрерывного и устойчивого потока. По мере роста Интернета технологии потоковой передачи также увеличиваются.
Что такое Spark Streaming?
Когда данные непрерывно поступают в несвязанной последовательности, это называется потоком данных. Входные данные поступают стабильно, и они делятся потоками. Дальнейшая обработка данных производится после их разделения на дискретные блоки. Анализ данных и обработка данных с малой задержкой называется потоковой обработкой.
В 2013 году к Apache Spark был добавлен Spark Streaming. Существует множество источников, из которых может происходить прием данных, таких как сокеты TCP, Amazon Kinesis, Apache Flume и Kafka. С помощью сложных алгоритмов производится обработка данных. Функции высокого уровня, такие как окно, соединение, сокращение и карта, используются для выражения обработки. Live Dashboards, базы данных и файловые системы используются для передачи обработанных данных в файловые системы.

Работа потока
Ниже приведены внутренние работы. Потоковая передача Spark делит потоки входных данных в режиме реального времени на пакеты. Spark Engine используется для обработки этих пакетов для создания в результате окончательных пакетов потока.
Данные в потоке делятся на небольшие пакеты и представляются дискретизированным потоком Apache Spark (Spark DStream). Spark RDD используются для создания DStreams, и это основная абстракция данных Spark. Любые компоненты Apache Spark, такие как Spark SQL и Spark MLib, можно легко интегрировать со Spark Streaming.
Spark Streaming помогает масштабировать потоки данных в реальном времени. Это одно из расширений основного API Spark. Это также позволяет обрабатывать отказоустойчивый поток и высокую пропускную способность. Использование Spark Streaming обеспечивает обработку и потоковую передачу данных в режиме реального времени. Услуги Spark Streaming используют крупнейшие ведущие компании мира, такие как Pinterest, Netflix и Uber.
Spark Streaming также обеспечивает анализ данных в режиме реального времени. Живая и быстрая обработка данных осуществляется на единой платформе Spark Streaming.
Читайте также Архитектура Apache Spark.
Почему Spark Streaming?
Spark Streaming можно использовать для потоковой передачи данных в режиме реального времени из различных источников, таких как Facebook, фондовый рынок и географические системы, а также для проведения мощной аналитики для стимулирования бизнеса.
Есть пять важных аспектов Spark Streaming, которые делают его таким уникальным, а именно:
1. Интеграция
Расширенные библиотеки, такие как обработка графов, машинное обучение, SQL, могут быть легко интегрированы с ним.
2. Комбинация
Данные, которые передаются в потоковом режиме, могут выполняться в сочетании с интерактивными запросами, а также со статическими наборами данных.
3. Балансировка нагрузки
Spark Streaming имеет идеальную балансировку нагрузки, что делает его особенным.
4. Использование ресурсов
Spark Streaming оптимальным образом использует доступный ресурс.
5. Восстановление после отставших и неудач
Spark Streaming может быстро восстанавливаться после любых сбоев или отставаний.
Необходимость потоковой передачи в Apache Spark
Модель непрерывного оператора используется при проектировании системы обработки потоков традиционно для обработки данных. Работа системы выглядит следующим образом:
- Источники данных используются для потоковой передачи данных. Различные типы источников данных — это устройства IoT, данные системной телеметрии, журналы в реальном времени и многое другое. Эти потоковые данные поступают в системы приема данных, такие как Amazon Kinesis, Apache Kafka и многие другие.
- В кластере выполняется параллельная обработка данных.
- Для передачи результатов используются нижестоящие системы, такие как Kafka, Cassandra, HBase.
Набор рабочих узлов запускает некоторые непрерывные операторы. Обработка записей потоковых данных выполняется по одной. Затем документы пересылаются следующим операторам в конвейере.
Операторы источника привыкли получать данные из систем приема. Операторы приемника привыкли давать выходные данные нижестоящей системе.
Некоторые операторы непрерывны. Это естественная и простая модель. Когда дело доходит до аналитики сложных данных в режиме реального времени, которая выполняется в больших масштабах, традиционная архитектура сталкивается с некоторыми проблемами в современном мире, а именно:
Быстрое восстановление после сбоя
В современных системах сбои быстро сопровождаются и устраняются путем восстановления потерянной информации путем вычисления недостающей информации в параллельных узлах. Таким образом, это делает восстановление еще быстрее по сравнению с традиционными системами.
Балансировщик нагрузки
Балансировщик нагрузки помогает более эффективно распределять ресурсы и данные между узлами, чтобы ни один ресурс не ждал или ничего не делал, а данные равномерно распределялись по узлам.
Объединение интерактивных, пакетных и потоковых рабочих нагрузок
Можно также взаимодействовать с потоковыми данными, выполняя запросы к потоковым данным. Его также можно комбинировать со статическими наборами данных. Нельзя выполнять специальные запросы с использованием новых операторов, поскольку он не предназначен для непрерывных операторов. Интерактивные, потоковые и пакетные запросы можно комбинировать с помощью одного движка.
SQL-запросы и аналитика с ML
Разработка систем с общей командой базы данных упростила жизнь разработчика для совместной работы с другими системами. Сообщество широко принимает запросы SQL. Где система предоставляет модуль и библиотеки для машинного обучения, которые можно использовать для расширенных аналитических целей.
Обзор потоковой передачи Spark
Spark Streaming использует набор RDD, который используется для обработки данных в реальном времени. Следовательно, Spark Streaming обычно используется для обработки потока данных в реальном времени. Spark Streaming обеспечивает отказоустойчивую и высокопроизводительную обработку потоков данных в реальном времени. Это дополнительная функция, которая поставляется с основным API-интерфейсом Spark.
Функции потоковой передачи Spark
- Бизнес-анализ : с помощью Spark Streaming также можно изучить поведение аудитории. Эти знания впоследствии могут быть использованы при принятии решений в бизнесе.
- Интеграция: обработка в режиме реального времени и пакетная обработка интегрированы со Spark .
- Отказоустойчивость . Уникальная способность Spark заключается в том, что он может эффективно восстанавливаться после сбоя.
- Скорость: низкая задержка достигается за счет Spark
- Масштабирование: с помощью Spark можно легко масштабировать узлы до сотен.
Основы потоковой передачи Spark
1. Контекст потоковой передачи
В Spark поток данных потребляется и управляется Streaming Context. Он создает объект Receiver, который создается путем регистрации потока ввода. Таким образом, основная функциональность Spark становится критической точкой входа в систему, поскольку она предоставляет множество контекстов, обеспечивающих рабочий процесс по умолчанию для различных источников, таких как Akka Actor, Twitter и ZeroMQ.

Читайте: Роль Apache Spark в больших данных и почему он уникален
Объект контекста искры представляет соединение с кластером искры. Если объект Spark Streaming создается с помощью объекта StreamingContext, аккумуляторы, RDD и широковещательные переменные также могут быть созданы с помощью объекта SparkContex.
2. Контрольные точки, широковещательные переменные и аккумуляторы
Контрольно-пропускные пункты
Checkpoint работает аналогично контрольным точкам, которые сохраняют состояние систем так же, как и в играх. Где в этом случае контрольные точки помогают уменьшить потерю ресурсов и сделать систему более устойчивой к поломке системы. Методология контрольных точек — это лучший способ отслеживать и сохранять состояния системы, чтобы во время восстановления ее можно было легко восстановить.
Широковещательные переменные
Вместо того, чтобы предоставлять полную копию задач сетевым узлам, он всегда улавливает переменную только для чтения, которая отвечает за подтверждение наличия узлов с различными задачами и, таким образом, снижает затраты на передачу и вычисления для отдельных узлов. Таким образом, он может более эффективно обеспечивать значительный набор входных данных. Он также использует расширенные алгоритмы для распределения широковещательной переменной по различным узлам в сети; таким образом, стоимость связи снижается.
Аккумуляторы
Аккумуляторы — это переменные, которые можно настраивать для разных целей. Но также существуют уже определенные Аккумуляторы, такие как Аккумуляторы счетчика и Суммы. Существует также отслеживание аккумуляторов, которое отслеживает каждый узел, и в него также могут быть добавлены некоторые дополнительные функции. Числовые аккумуляторы поддерживают множество цифровых функций, которые также поддерживает Spark. Пользовательские аккумуляторы также могут быть созданы по требованию пользователя.
DStream
DStream означает дискретизированный поток. Spark Streaming предлагает необходимую абстракцию, которая называется Discretized Stream (DStream). DStream — это данные, которые передаются непрерывно. Из источника данных получен DStream. Его также можно получить из потока обработанных данных. Преобразование входного потока генерирует обработанный поток данных.
По истечении указанного интервала данные содержатся в RDD. Бесконечная серия RDD представляет DStream.
Кэширование
Разработчики могут использовать DStream для кэширования данных потока в памяти. Это полезно, если данные вычисляются несколько раз в DStream. Этого можно добиться, используя метод persist() в DStream.
Дублирование данных выполняется для обеспечения безопасности отказоустойчивой системы, которая может противостоять сбоям в системе, таким образом, имея возможность допускать сбои в системе (такие как Kafka, Sockets, Flume и т. д.).
Преимущество и архитектура Spark Streaming
Обработка одного потока данных за раз может иногда быть обременительной; следовательно, Spark Streaming разделяет данные на небольшие подпакеты, которыми легко управлять. Это связано с тем, что рабочие Spark параллельно получают буферы данных, принимаемые получателем Spark Streaming. И, следовательно, вся система запускает пакеты параллельно, а затем накапливает окончательные результаты. Затем эти короткие задачи обрабатываются движком Spark партиями, а результаты передаются другим системам.
В архитектуре Spark Streaming вычисления не распределяются статически и не загружаются на узел, а зависят от местоположения данных и доступности ресурсов. Таким образом, время загрузки сокращается по сравнению с предыдущими традиционными системами. Отсюда и использование принципа локальности данных, это также облегчает обнаружение неисправности и ее устранение.
Узлы данных в Spark обычно представлены RDD, то есть набором данных Resilient Distribution.
Цели Spark Streaming
Ниже приведены цели, достигнутые архитектурой Spark.
1. Динамическая балансировка нагрузки
Это одна из основных функций Spark Streaming, при которой потоки данных динамически распределяются балансировщиком нагрузки, который отвечает за распределение данных и вычисление ресурсов с использованием определенных правил, определенных в нем. Основная цель балансировки нагрузки — эффективно сбалансировать рабочую нагрузку между рабочими и поставить все параллельно, чтобы не было потери доступных ресурсов. А также отвечает за динамическое выделение ресурсов рабочим узлам в системе.
2. Отказ и восстановление
Как и в традиционной системе, когда происходит сбой операции, вся система должна пересчитать эту часть, чтобы вернуть потерянную информацию. Но проблема возникает, когда один узел обрабатывает все это восстановление и заставляет всю систему ждать его завершения. В то время как в Spark потерянная информация вычисляется другими свободными узлами и возвращает систему к отслеживанию без дополнительного ожидания, как в традиционных методах.
А также неудавшаяся задача распределяется равномерно по всем узлам в системе, чтобы пересчитать и вернуть ее из сбоя быстрее, чем при традиционном методе.
3. Пакеты и интерактивный запрос
Набор RDD в Spark называется DStream в Spark, который обеспечивает связь между рабочими нагрузками потоковой передачи и пакетами. Эти пакеты хранятся в памяти Spark, что обеспечивает эффективный способ запроса имеющихся в нем данных.
Лучшая часть Spark заключается в том, что он включает в себя широкий спектр библиотек, которые можно использовать, когда это требуется для системы spark. Несколько имен библиотек: MLlib для машинного обучения, SQL для запроса данных, GraphX и Data Frame, тогда как Dataframe и вопросы могут быть преобразованы в эквивалентные операторы SQL с помощью DStreams.
4. Производительность
Поскольку система Spark использует параллельные распределения задач, которые повышают ее пропускную способность и, таким образом, используют механизм Spark, способный достичь низкой задержки до нескольких 100 миллисекунд.
Как работает Spark Streaming?
Данные в потоке делятся на небольшие пакеты, которые в Spark Streaming называются DStreams. Это последовательность RDD внутри. API-интерфейсы Spark используются RDDS для обработки данных, и в результате отгрузки возвращаются. API Spark Streaming доступен на Python, Java и Scala. В недавно представленном Python API в Spark 1.2 отсутствуют многие функции.
Вычисления с отслеживанием состояния называются состоянием, которое поддерживается потоковой передачей Spark на основе входящих данных в потоке. Данные, которые передаются в потоке, обрабатываются в течение определенного периода времени. Этот временной интервал должен быть указан разработчиком, и он должен быть разрешен Spark Streaming. Временное окно – это временной интервал, в течение которого работа должна быть завершена. Временное окно обновляется в пределах временного интервала, который также известен как скользящий интервал в окне.
Источники потоковой передачи Spark
Объект Receiver, связанный с входным DStream, сохраняет полученные данные в Sparks Memory для обработки.
Встроенная потоковая передача имеет две категории:
1. Основной источник
Источники, доступные в Streaming API, например, Socket Connection и File System.
2. Расширенный источник
Продвинутый уровень источников — Kinesis, Flume & Kafka и т. д.
Потоковые операции
Spark RDDS поддерживает два типа операций:
1. Операции вывода в Apache Spark
Операции вывода используются для передачи данных DStream во внешнюю систему, такую как файловая система или база данных. Операции вывода позволяют использовать преобразованные данные внешними системами. Все DStreams Transformation фактически выполняются посредством запуска, который выполняется внешними системами.
Это текущие операции вывода:
foreachRDD(функция), [суффикс]), saveAsHadoopFiles(префикс, [суффикс]), saveAsObjectFiles(префикс, [суффикс])"префикс-TIME_IN_MS[.суффикс]", saveAsTextFiles(префикс, печать()
RDD лениво выполняют операции вывода. Внутри операций вывода DStream принудительно выполняются действия RDD для обработки полученных данных. Выполнение Операций вывода выполняется по одному за раз. Приложения Spark определяют порядок выполнения операций вывода.
2. Преобразование Искры
Преобразование Spark также изменяет данные из DStream, поскольку RDD поддерживают его в Spark. Как и в Spark RDD, многие изменения поддерживаются DStream.

Ниже приведены наиболее распространенные операции преобразования:
Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, reduceByKey(func, [numTasks]), countByValue(), reduce(), union(otherStream ), count(), repartition(numPartitions), filter(), flatMap(), map().
Заключение
В современном мире, управляемом данными, инструменты для хранения и анализа данных оказались ключевым фактором бизнес-аналитики и роста. Большие данные и связанные с ними инструменты и технологии пользуются растущим спросом. Таким образом, Apache Spark имеет большой рынок и предлагает отличные функции для клиентов и предприятий.
Если вам интересно узнать больше о больших данных, ознакомьтесь с нашей программой PG Diploma в области разработки программного обеспечения со специализацией в области больших данных, которая предназначена для работающих профессионалов и включает более 7 тематических исследований и проектов, охватывает 14 языков и инструментов программирования, практические занятия. семинары, более 400 часов интенсивного обучения и помощь в трудоустройстве в ведущих фирмах.
Изучайте онлайн-курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.