Политики изоляции в Kyuubi

Обзор

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

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

Текущие поддерживаемые уровни изоляции:

  • CONNECTION

  • USER

  • GROUP

  • SERVER

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

Все поддерживаемые уровни общего доступа могут использоваться вместе на одном сервере или кластере Kyuubi.

Уровни общего доступа работают одинаково как для конфигураций с одним узлом, так и для кластеров с высокой доступностью (High Availability, HA).

Сравнение уровней общего доступа
Share level Количество движков Возможности Уровень изоляции Доступность

CONNECTION

Один движок на сессию

Large-scale ad hoc ETL

Высокий

Низкая

USER

Один движок на пользователя

Small-scale ad hoc ETL

Средний

Средняя

GROUP

Один движок на группу

Small-scale ad hoc ETL

Низкий

Высокая

SERVER

Один движок на инстанс

Admin

Если сервер защищен — высокий, если не защищен — низкий

Только для администратора, если сервер защищен

Share levels

CONNECTION

Запросы от клиентов к движкам на уровне общего доступа CONNECTION
Запросы от клиентов к движкам на уровне общего доступа CONNECTION
Запросы от клиентов к движкам на уровне общего доступа CONNECTION
Запросы от клиентов к движкам на уровне общего доступа CONNECTION

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

Как только сессия, создавшая движок, закрывается, движок также отключается.

USER

Запросы от клиентов к движкам на уровне общего доступа USER
Запросы от клиентов к движкам на уровне общего доступа USER
Запросы от клиентов к движкам на уровне общего доступа USER
Запросы от клиентов к движкам на уровне общего доступа USER

При уровне общего доступа USER движок изолируется по пользователю. У каждого движка есть конкретный пользователь, являющийся владельцем этого движка. Любые запросы, отправленные от этого пользователя с одного или нескольких клиентов, перенаправляются на движок этого пользователя.

Если у пользователя открыто несколько сессий, они будут принадлежать одному и тому же SparkContext, но каждая сессия будет иметь свой собственный экземпляр SparkSession, который содержит отдельное состояние сессии, включая временные представления, конфигурацию SQL, UDF и т.д.

Чтобы создать Singleton-экземпляр SparkSession, который будет использоваться несколькими сессиями, установите для параметра kyuubi.engine.single.spark.session значение true вручную или с помощью ADCM.

Движок с общим уровнем доступа USER выключается после закрытия всех подключенных к нему сессий и после истечения срока его жизни (TTL).

GROUP

Запросы от клиентов к движкам на уровне общего доступа GROUP
Запросы от клиентов к движкам на уровне общего доступа GROUP
Запросы от клиентов к движкам на уровне общего доступа GROUP
Запросы от клиентов к движкам на уровне общего доступа GROUP

При уровне общего доступа GROUP движок используется пользователями из одной группы совместно. Все сессии пользователей в одной группе направляются к движку этой группы.

В качестве владельца движка указывается название группы. Группа пользователей формируется в соответствии с Hadoop GroupsMapping. Если группа не найдена, уровень общего доступа меняется на USER.

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

SERVER

Запросы от клиентов к движкам на уровне общего доступа SERVER
Запросы от клиентов к движкам на уровне общего доступа SERVER
Запросы от клиентов к движкам на уровне общего доступа SERVER
Запросы от клиентов к движкам на уровне общего доступа SERVER

Уровень общего доступа SERVER работает аналогично Spark Thrift Server с высокой доступностью (High Availability, HA). Для каждого инстанса Kyuubi создается отдельный движок.

Subdomain

Пример subdomain-конфигурации для уровня общего доступа GROUP
Пример subdomain-конфигурации для уровня общего доступа GROUP
Пример subdomain-конфигурации для уровня общего доступа GROUP
Пример subdomain-конфигурации для уровня общего доступа GROUP

С помощью параметра kyuubi.engine.share.level.subdomain можно настроить дополнительные политики изоляции для уровней общего доступа USER, GROUP или SERVER. Конфигурация этого параметра позволяет создавать несколько движков для одного пользователя, группы или сервера.

Если доступно несколько движков, пользователь может указать, какой использовать в URL соединения JDBC.

Конфигурация

Настройки share levels
Параметр Значение Значение по умолчанию Описание

kyuubi.engine.share.level (kyuubi.session.engine.share.level)

USER, CONNECTION, GROUP, SERVER

USER

Тип уровня общего доступа. Можно задать как в файле конфигурации сервера, так и в URL-адресе подключения. У URL более высокий приоритет

kyuubi.session.engine.idle.timeout

Число с индикатором единиц времени

PT30 (30 минут)

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

kyuubi.engine.share.level.subdomain (kyuubi.engine.share.level.sub.domain)

Валидное имя ноды ZooKeeper

 — 

Дополнительная изоляция движка по znode. Можно задать как в файле конфигурации сервера, так и в URL-адресе подключения. У URL более высокий приоритет

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