Архитектура Kyuubi

Обзор

Apache Kyuubi — это распределенный многопользовательский JDBC-интерфейс для обработки и анализа больших данных. Он построен на базе движка Apache Spark и может запускать любой JDBC-совместимый фреймворк (например, Hive, Flink и т.д.).

Kyuubi используется как SQL-шлюз для операций на хранилищах данных и озерах данных. Он реализует модуль Hive Service RPC — интерфейс доступа к данным, используемый как в HiveServer2, так и в Spark Thrift Server. Подробнее о том, что отличает Kyuuby от них, читайте в статье Сравнение Kyuubi, HiveServer, Spark Thrift Server.

Основные возможности Kyuubi:

  • Многопользовательский доступ — сквозная поддержка доступа нескольких пользователей к данным через единую систему аутентификации и авторизации;

  • Высокая доступность — балансировка нагрузки через ZooKeeper;

  • Несколько рабочих нагрузок — поддержка нескольких различных рабочих нагрузок в рамках одной платформы, одной копии данных и одного SQL-интерфейса.

Архитектура

Основным компонентом Kyuubi является Kyuubi Server — процесс-демон, который обрабатывает одновременные запросы от клиентов на подключение и выполнение задач и управляет их выполнением.

Архитектура Kyuubi
Архитектура Kyuubi
Архитектура Kyuubi
Архитектура Kyuubi

Когда пользователь запрашивает доступ к данным через один или несколько клиентов, сервер создает для выполнения задач пользователя отдельную сессию Kyuubi (Kyuubi session). Все запросы этого пользователя привязываются к соответствующей сессии.

Для каждой сессии создается SparkContext для обработки запросов пользователей: компиляция, оптимизация и выполнение SQL-инструкций.

SparkContexts можно создавать локально, в режиме развертывания клиента (--deploy-mode client) в рамках одного сервиса, или в кластерах YARN или Kubernetes в режиме развертывания кластера (--deploy-mode cluster). SparkContexts сами управляют своим жизненным циклом, кешированием и утилизацией. На них не влияет аварийное переключение на сервере Kyuubi.

Если для SparkContext нет активных сессий, Kyuubi освобождает его ресурсы.

Высокая доступность

Kyuubi обеспечивает высокую доступность (High Availability, HA) и балансировку нагрузки с помощью ZooKeeper.

В режиме HA клиенты могут использовать SparkConexts, созданные другими сервисами Kyuubi. Зарегистрированные в одном пространстве имен сервисы балансируют нагрузку между собой.

Kyuubi в режиме высокой доступности
Kyuubi в режиме высокой доступности
Kyuubi в режиме высокой доступности
Kyuubi в режиме высокой доступности

Когда клиент делает запрос, он выбирает между несколькими серверами. Выбранный инстанс Kyuubi выбирает доступный SparkContext. Если доступных нет, сервер создает новый.

Если тот же пользователь запрашивает новое соединение, сессия может быть создана на другом инстансе Kyuubi, но SparkContext будет использован тот же.

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

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