---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/spyt/cluster/livy.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/cluster/livy.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/spyt/cluster/livy.md -->
# Livy server

{% note alert %}

Начиная с SPYT 2.10.0 и Query Tracker 0.4 интеграция через Livy больше не поддерживается. Если вы используете Livy, перейдите на [SPYT Connect](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/connect.md#migration).

{% endnote %}

Начиная с версии 1.74.0 в SPYT доступен сервис [Livy](https://livy.apache.org/), который позволяет осуществлять общение между клиентом и Spark кластером через REST интерфейс. Этот функционал используется в модуле [Query tracker](https://ytsaurus.tech/docs/ru/user-guide/query-tracker/about.md) для выполнения Spark SQL запросов в YTsaurus.

Дистрибутив Livy уже включен в релизный образ SPYT и помещается на кластер YTsaurus по пути `//home/spark/livy/livy.tgz`.

## Запуск {#start}

Для запуска Livy сервера необходимо в команде запуска кластера SPYT указать опцию `--enable-livy`. Максимальное количество одновременных соединений с сервером регулируется опцией `--livy-max-sessions`. Попытка установить соединение сверх лимита повлечет ошибку.

Драйвер для Spark задач, запущенных через Livy, поднимается в том же контейнере, что и сервер. Поэтому для корректного подсчета и резервирования ресурсов в YTsaurus количество ядер и размер памяти драйвера устанавливаются при старте кластера — с помощью опций `--livy-driver-cores` и `--livy-driver-memory`.

```bash
$ spark-launch-yt ... --enable-livy --livy-max-sessions 5 --livy-driver-cores 1 --livy-driver-memory 1G
```

Узнать адрес Livy сервера, как и других компонент, можно через `spark-discovery-yt`.

## Использование в Query tracker {#query-tracker}

К запущенному SPYT кластеру можно выполнять запросы из Query tracker (вкладка SPYT) на языке Spark SQL. В `settings` необходимо задать поля `cluster` (если в инсталляции YTsaurus не установлен кластер по умолчанию) и `discovery_path`. Кроме того, в поле `spark_conf` может быть передана произвольная конфигурация Spark сессии в виде yson словаря.

В QT версии 0.0.5 была добавлена поддержка аутентификации и переиспользования сессий:

1. В момент начала исполнения запроса Query tracker выпускает для пользователя временный [токен](https://ytsaurus.tech/docs/ru/user-guide/storage/auth.md), время жизни которого ограничено десятками минут. Полученный токен будет использован при выполнении запроса на SPYT кластере для аутентификации пользователя в YTsaurus, что позволит соблюдать [права](https://ytsaurus.tech/docs/ru/user-guide/storage/access-control.md#authorization) при чтении/записи данных. В случае длительных запросов временный токен будет периодически пролонгироваться.

2. Если в `settings` поле `session_reuse = true` (значение по умолчанию), тогда запросы не будут закрывать установленное соединение с кластером и по возможности будут переиспользовать его в будущем. Это сокращает время исполнения запроса на 10-20 секунд, однако бездействующие сессии также учитываются в лимите количества одновременных соединений с кластером — `livy-max-sessions`. Сессия автоматически завершается, если в течение 10 минут не поступает новых запросов.

## Настройка сессии при подключении к серверу напрямую {#direct-connect}

Эндпоинты Livy сервера описаны в [официальной документации](https://livy.apache.org/docs/latest/rest-api.html).

Для работы с YTsaurus при инициализации Livy сессии в `spark_conf` необходимо указать два конфигурационных параметра — путь к Java (`spark.yt.jars`) и Python (`spark.yt.pyFiles`) библиотекам:

```python
data = {'kind': 'spark', 'conf': {'spark.yt.version': '2.11.0', 'spark.yt.jars': 'yt:///home/spark/spyt/releases/2.11.0/spark-yt-data-source.jar', 'spark.yt.pyFiles': 'yt:///home/spark/spyt/releases/2.11.0/spyt.zip'}}
req = requests.post(host + '/sessions', data=json.dumps(data))
resp = req.json()
```

## Sparkmagic {#sparkmagic}

К серверу Livy можно подключиться через [Sparkmagic](https://github.com/jupyter-incubator/sparkmagic), который позволяет работать с SPYT кластером в Jupyter ноутбуке посредством REST интерфейса. Это сокращает количество сетевых доступов, требуемых для интерактивной работы на Python, сохраняя функционал. Помимо языка Python в Sparkmagic поддержаны Scala и SQL.

## Запуск отдельного Livy сервиса { #livy-launch-yt }

Для запуска Livy сервера можно использовать команду `livy-launch-yt`, входящую в дистрибутив SPYT. Её основные параметры повторяют параметры команды [spark-launch-yt](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/cluster/cluster-start.md#spark-launch-yt-params) с небольшими отличиями, приведёнными в таблице:

| **Параметр** | **Обязательный** | **Значение по умолчанию** | **Описание** | **С какой версии** |
| ------------ | ---------------- | ------------------------- | ------------ | ------------------ |
| `--spark-master-address` | да | - | Адрес Spark мастера, который будет использован для запуска экзекьюторов. Может быть `ytsaurus://<Cluster endpoint>` для запуска задач, используя планировщик YTsaurus | - |
| `--master-group-id` | нет | - | Название группы в YTsaurus Discovery server, используется при запуске через Strawberry | - |
<!-- endsource: ru/_includes/user-guide/data-processing/spyt/cluster/livy.md -->