YTsaurus
YTsaurus — это распределенная платформа для хранения и обработки больших данных. В составе Stackland компонент разворачивает один общий кластер YTsaurus на платформу. Кластер включает MapReduce-движок, динамические таблицы, движок запросов YQL, веб-интерфейс и интеграцию с Identity and Access Management.
С помощью YTsaurus можно:
- развернуть и сопровождать кластер YTsaurus в составе Stackland;
- настроить состав подкомпонентов кластера (
UI,CHYT,SPYT,Tutorial,Task Proxy,Odin) и размеры групп узлов через кастомный ресурсYTsaurusConfig; - получать доступ к кластеру через UI и HTTP-прокси, опубликованные через Stackland Ingress.
Документация описывает Stackland-обёртку. Подробности об архитектуре YTsaurus, формате данных, командах CLI и SDK см. в официальной документации YTsaurus
Конфигурация компонента
Параметры компонента задаются ресурсом YTsaurusConfig. Ресурс работает на уровне кластера; имя ресурса должно быть main. На платформе допустим только один экземпляр.
Пример минимальной конфигурации с включенным компонентом:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: YTsaurusConfig
metadata:
name: main # Обязательно, имя ресурса должно быть main
spec:
enabled: true
clusterName: cluster
cluster:
discovery:
instanceCount: 1
resources:
cpu: "100m"
memory: "256Mi"
primaryMasters:
instanceCount: 1
storage:
size: "5Gi"
resources:
cpu: "300m"
memory: "512Mi"
httpProxies:
instanceCount: 1
resources:
cpu: "300m"
memory: "512Mi"
dataNodes:
- name: ssd
instanceCount: 3
storage:
size: "20Gi"
resources:
cpu: "200m"
memory: "512Mi"
execNodes:
- name: default
instanceCount: 1
storage:
size: "10Gi"
resources:
cpu: "3000m"
memory: "3Gi"
schedulers:
instanceCount: 1
resources:
cpu: "200m"
memory: "256Mi"
controllerAgents:
instanceCount: 1
resources:
cpu: "200m"
memory: "256Mi"
bundleController:
enabled: true
queryTrackers:
instanceCount: 1
resources:
cpu: "100m"
memory: "256Mi"
queueAgents:
instanceCount: 1
resources:
cpu: "100m"
memory: "256Mi"
rpcProxies:
instanceCount: 1
resources:
cpu: "100m"
memory: "256Mi"
strawberry:
enabled: true
resources:
cpu: "100m"
memory: "256Mi"
tabletNodes:
- name: default
instanceCount: 1
resources:
cpu: "500m"
memory: "1Gi"
yqlAgents:
instanceCount: 1
resources:
cpu: "200m"
memory: "1Gi"
ui:
enabled: true
ingressEnabled: true
resources:
cpu: "100m"
memory: "256Mi"
Где:
spec.enabled— включает или отключает компонент. По умолчаниюfalse.spec.clusterName— название кластера YTsaurus, которое используется при подключении и отображается в UI.spec.cluster— состав и размеры подкомпонентов кластера (см. ниже).
Все ресурсы Kubernetes, относящиеся к кластеру YTsaurus (поды, PVC, секреты, ингрессы), создаются в системном пространстве имен stackland-ytsaurus.
Состав кластера
Параметр spec.cluster ресурса YTsaurusConfig описывает обязательные подкомпоненты кластера YTsaurus. Для каждой группы можно задать количество подов instanceCount, ресурсы resources (CPU и память) и при наличии — параметры дискового хранилища storage (storageClass и size).
Список подкомпонентов:
discovery— сервис обнаружения, координирует компоненты кластера. ДиапазонinstanceCount: 1–50.primaryMasters— главные мастера кластера, хранят метаданные. Требует полеstorage. ДиапазонinstanceCount: 1–50.httpProxies— HTTP-прокси для пользовательских запросов и доступа к UI. ДиапазонinstanceCount: 1–3.dataNodes[]— узлы хранения данных. Список, минимум одна группа. Требует полеstorage. Имя группы — строчные латинские буквы, цифры и дефис. ДиапазонinstanceCountв каждой группе: 3–10.execNodes[]— узлы исполнения задач MapReduce. Список, должен содержать группуdefault. Требует полеstorage. Поддерживает полеresources.gpu. ДиапазонinstanceCountв каждой группе: 1–50.schedulers— планировщики операций MapReduce. ДиапазонinstanceCount: 1–10.controllerAgents— агенты контроллеров операций. ДиапазонinstanceCount: 1–10.bundleController— контроллер тэблет-бандлов. Включается флагомenabled.queryTrackers— трекеры запросов YQL и CHYT. ДиапазонinstanceCount: 1–10.queueAgents— агенты очередей. ДиапазонinstanceCount: 1–10.rpcProxies— RPC-прокси для клиентских SDK. ДиапазонinstanceCount: 1–3.tabletNodes[]— узлы динамических таблиц. Опциональный список групп. ДиапазонinstanceCountв каждой группе: 1–50.yqlAgents— агенты языка запросов YQL. ДиапазонinstanceCount: 1–3.
Минимальные и максимальные значения instanceCount определяются валидационной схемой ресурса YTsaurusConfig. Превышение лимита оператор отклонит при создании или обновлении ресурса.
Дополнительные подкомпоненты
Дополнительные подкомпоненты включаются через флаг enabled в соответствующем поле spec.cluster:
ui— веб-интерфейс YTsaurus. ПриingressEnabled: trueсоздает Ingress на адресytsaurus.<домен_системы>. Аутентификация — через Identity and Access Management по OAuth.strawberry— Strawberry-контроллер, управляющий жизненным циклом CHYT- и SPYT-кликов.chyt— CHYT, движок ClickHouse® поверх YTsaurus. Требует включенногоstrawberry.spyt— SPYT, движок Apache Spark™ поверх YTsaurus. Требует включенногоstrawberry.taskProxy— Task Proxy для запуска внешних задач в YTsaurus. ПолеinstanceCount— 1–10.tutorial— встроенный туториал по YTsaurus, создает каталог//home/tutorialс примерами.odin— служба мониторингаOdin, проверяющая состояние ключевых компонентов кластера.cron.clear_tmp— регулярная очистка временных данных. Полеintervalпринимает значения в формате<число>h,<число>mили<число>s. По умолчанию15m.
Сетевой доступ к кластеру
После включения компонента создаются два внешних эндпоинта:
ytsaurus.<домен_системы>— веб-интерфейс YTsaurus. Доступен только приspec.cluster.ui.enabled: trueиspec.cluster.ui.ingressEnabled: true.api.ytsaurus.<домен_системы>— HTTP-прокси для запросов через YTsaurus CLI, SDK и сторонние клиенты.
Оба ингресса публикуются через класс stackland-system с принудительным редиректом на HTTPS. TLS-сертификат выпускается через Certificate Manager.
RPC-прокси доступны внутри кластера Kubernetes; внешний доступ через сетевой балансировщик не предусмотрен.
Аутентификация и секреты
Учетные данные администратора кластера YTsaurus хранятся в Secret ytadminsec в пространстве имен stackland-ytsaurus. Secret создается при включении компонента и содержит ключи:
login— логин администратора,admin.password— пароль администратора.token— токен администратора для доступа к API черезytCLI и SDK.
Подробнее о получении значений см. в инструкции Получить пароль и токен администратора.
В веб-интерфейсе YTsaurus аутентификация выполняется через Identity and Access Management по OAuth. Параметры OAuth-клиента (stackland.ytsaurus) и адрес сервера авторизации (auth.<домен_системы>) настраиваются компонентом автоматически.
Ресурсы и хранилище
Минимальные ресурсы для запуска компонента по умолчанию:
- CPU — 8 ядер;
- память — 16 ГиБ;
- диск — 100 ГиБ.
Кластер YTsaurus интенсивно использует диск; рекомендуется хранилище класса SSD. Класс хранилища можно задать в storage.storageClass для primaryMasters, каждой группы dataNodes и каждой группы execNodes. Если поле не задано, используется класс хранилища по умолчанию, выбранный при установке компонента. Подробнее см. в разделе Дисковая подсистема.
Размер дисков подкомпонентов после создания можно только увеличивать. Подробнее об изменении параметров кластера см. в инструкции Изменить настройки кластера YTsaurus.
Мониторинг и алерты
Компонент устанавливает в кластер набор готовых дашбордов и правил алертинга для YTsaurus. Дашборды публикуются в Grafana компонентом Monitoring и охватывают:
- состояние кластера и ресурсы (
cluster-resources); - HTTP-прокси и RPC-прокси;
- мастера: глобальные и локальные метрики, аккаунты;
- планировщик: операции, пулы, внутренние метрики;
- очереди и потребители;
- тэблет-бандлы: CPU, память, сеть, диск, нагрузка пользователей.
Алерты, доступные после включения компонента:
cluster-alerts— ключевые показатели работоспособности кластера;odin-alerts— проверкиOdin, активные приspec.cluster.odin.enabled: true.
Ограничения
- На платформе допускается один кластер YTsaurus. Ресурс
YTsaurusConfigдолжен иметь имяmain. - Имена групп
dataNodes,execNodesиtabletNodesдолжны начинаться со строчной латинской буквы и содержать только строчные буквы, цифры и дефис. - Группа
execNodesдолжна содержать запись с именемdefault. - Размер диска у узлов после создания можно только увеличить. Уменьшить размер нельзя.
- Отключение компонента (
spec.enabled: false) приводит к удалению кластера YTsaurus вместе с данными. Подробнее см. в инструкции Отключить YTsaurus.