Spark Connect

Обзор

Spark Connect — это компонент сервиса Spark3, который, выполняя функции тонкого клиента, обеспечивает удаленное подключение к кластерам Spark. С помощью Spark Connect вы можете удаленно управлять кластером Spark, например, используя привычную IDE на обычном пользовательском ноутбуке.

На следующей диаграмме представлена высокоуровневая архитектура Spark Connect.

Архитектура Spark Connect
Архитектура Spark Connect
Архитектура Spark Connect
Архитектура Spark Connect

Как работает Spark Connect

Spark Connect реализует раздельную клиент-серверную архитектуру. Серверной частью является компонент ADH Spark Connect, который слушает команды от клиентов. Клиентом может выступать приложение Spark/Spark shell, которое задействует клиентскую библиотеку Spark Connect для общения с сервером.

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

Spark Connect использует DataFrame API и неразрешенные логические планы (unresolved logical plans) в качестве протокола для общения с кластером Spark. Клиентская библиотека Spark Connect транслирует операции над DataFrame в неразрешенные логические планы запросов, затем кодирует их и отправляет на сервер Spark Connect, используя gRPC. Сервер Spark Connect получает и преобразует неразрешенные логические планы в операторы логических планов Spark. Далее запускается стандартный процесс работы Spark, включая все оптимизации и возможности. Результаты каждого вызова передаются обратно клиенту через gRPC в виде пакетов строк, закодированных Apache Arrow.

Подробности использования Spark Connect доступны в статье Использование Spark Connect.

Плюсы Spark Connect

Среди многих плюсов использования Spark Connect можно выделить следующие:

  • Легковесная клиентская часть. Вы можете работать с массивным кластером Spark, используя IDE/Jupyter notebook на обычном пользовательском ноутбуке. Основное требование — использование удаленной сессии Spark, которая устанавливает соединение с сервером Spark Connect c помощью клиентской библиотеки.

  • Улучшенная изоляция ресурсов. При работе с кластером Spark через Spark Connect создаются изолированные песочницы (sandbox) на хостах ADH с заранее выделенными ресурсами. Spark executors, принадлежащие разным приложениям, работают в этих изолированных песочницах и не отбирают друг у друга ресурсы. Это позволяет избежать случаев массового потребления памяти, когда, например, интенсивные вычисления приложения Spark или неправильно указанные параметры запуска могут привести к нехватке памяти на узле.

  • Расширенные возможности обновления. Драйвер Spark можно обновлять отдельно, независимо от клиентской части. Например, вы можете легко обновить драйвер Spark, чтобы подтянуть последние фиксы безопасности, не внося изменений в ваши клиентские приложения. Основное требование — gRPC-интерфейсы серверной и клиентской части Spark Connect должны оставаться совместимыми после обновления.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней