Выпущен Spark 2.3: чтобы конкурировать с Flink, внедрите непрерывную потоковую обработку

Spark pandas Flink Apache
Выпущен Spark 2.3: чтобы конкурировать с Flink, внедрите непрерывную потоковую обработку
Эта статья была изначально создана "AI Frontline", оригинальная ссылка:Выпущен Spark 2.3: чтобы конкурировать с Flink, внедрите непрерывную потоковую обработку
Редактор отдела планирования|Наталья
Авторы|Самир Агарвал, Сяо Ли, Рейнольд Синь, Жюль Дамджи
Переводчик|Сюэ Миндэн

Руководство по передовой ИИ:”28 февраля 2018 г. компания Databricks официально выпустила Apache Spark 2.3.0 в официальном инженерном блоге в рамках бета-версии Databricks Runtime 4.0. В новой версии представлена ​​модель непрерывной обработки потока, которая может сократить задержку обработки потока до миллисекундного уровня, что, как говорят, является самым большим убийцей PK Flink. Какие еще важные обновления есть и не пора ли обновить Spark? "

Spark 2.3 по-прежнему ставит перед собой цель стать быстрее, проще в использовании и умнее, предлагая возможности непрерывной обработки с малой задержкой и соединения между потоками, что делает структурированную потоковую передачу важной вехой; использование пользовательских функций Pandas для повышения производительности PySpark; обеспечивает встроенную поддержку Kubernetes. для приложений Spark.

В дополнение к продолжению введения новых функций в SparkR, Python, MLlib и GraphX, в этом выпуске основное внимание уделяется удобству использования и стабильности, и было разрешено более 1400 тикетов. Другие ключевые особенности заключаются в следующем:

  • DataSource V2 API
  • Векторизованный считыватель ORC
  • Spark History Server V2 с хранилищем ключей и значений
  • API конвейера машинного обучения на основе структурированной потоковой передачи
  • Усовершенствования MLlib
  • Усовершенствования Spark SQL

Ниже приводится краткий обзор некоторых основных функций и улучшений.Дополнительную информацию см. в объявлении о выпуске Spark 2.3 (spark.apache.org/releases/tickets…).


Непрерывная потоковая передача в миллисекундах

По какой-то причине структурированная потоковая передача, представленная в Spark 2.0, отделяет микропакетную обработку от высокоуровневого API. Во-первых, это упрощает использование API, который больше не отвечает за микропакетную обработку. Во-вторых, разработчики могут думать о потоках как о неограниченных таблицах и выполнять запросы на основе этих «таблиц».

Однако, чтобы предоставить разработчикам больше возможностей для потоковой передачи, в Spark 2.3 представлен режим непрерывной потоковой передачи с задержкой на уровне миллисекунд.

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

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

Операции набора данных, которые в настоящее время поддерживаются в постоянном режиме, включают операции Projection, Selection и SQL, за исключением current_timestamp(), current_date() и агрегатных функций. Он также поддерживает Kafka в качестве источника данных и пула данных (Sink), а также консоль и память в качестве пула данных.

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

Вкратце, что может сделать постоянный режим Spark 2.3:

  • Сквозная миллисекундная задержка
  • Гарантия хотя бы одной обработки
  • Операции сопоставления, поддерживающие набор данных


соединение между потоками

Структурированная потоковая передача Spark 2.0 уже может поддерживать операцию подключения DataFrame/Dataset, но это всего лишь подключение к статическому набору данных, в то время как Spark 2.3 обеспечивает долгожданное подключение поток-к-потоку, которое поддерживает внутренние и внешние соединения, который можно использовать в большом количестве сценариев реального времени.

Монетизация рекламы — это типичный сценарий приложения для потокового подключения. Например, поток показов объявлений и поток кликов пользователей содержат одни и те же ключи (такие как adld) и связанные данные, и вам необходимо выполнить потоковый анализ на основе этих данных, чтобы выяснить, какие клики пользователей связаны с adld.

Хотя это выглядит просто, соединения поток-к-потоку на самом деле решают некоторые технические трудности:

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


Искра и Кубернетес

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

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


Пользовательские функции Pandas для SySpark

Пользовательские функции Pandas, также известные как векторизованные пользовательские функции, значительно повышают производительность PySpark. UDF Pandas основаны на Apache Arrow, полностью разработаны на Python и могут использоваться для определения высокопроизводительных UDF с низкими издержками.

Spark 2.3 предоставляет два типа пользовательских функций Pandas: скалярные и комбинаторные карты. Ли Джин из Two Sigma в предыдущем блоге (databricks.com/blog/2017/1…) описывает, как использовать пользовательские функции Pandas, с четырьмя примерами.

Некоторые тесты показывают, что пользовательские функции Pandas на порядок превосходят пользовательские функции на основе строк.

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


Улучшения в MLlib

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

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

Во-вторых, чтобы удовлетворить потребности анализа изображений с глубоким обучением, в Spark 2.3 была представлена ​​схема ImageSchema, которая представляет изображения в виде кадров данных Spark, а также предоставляет инструменты для загрузки часто используемых форматов изображений.

Наконец, Spark 2.3 предлагает улучшенный API Python для разработки пользовательских алгоритмов, включая UnaryTransformer и инструменты автоматизации для сохранения и загрузки алгоритмов.

Оригинальная ссылка:

databricks.com/blog/2018/0…

Introducing Apache Spark 2.3 - The Databricks Blog

databricks.com/blog/2018/0…

Для большего содержания сухих товаров вы можете обратить внимание на AI Frontline, ID:ai-front, фоновый ответ "AI", "TF", "Большие данные«Вы можете получить серию мини-книг в формате PDF и карт навыков «AI Frontline».