Модуль managed-trino управляет инстансами Trino в Deckhouse Platform (DP). Trino — это быстрый распределённый SQL-движок с открытым исходным кодом, который создан для аналитики больших данных.
Модуль предоставляет:
- Автоматическое развёртывание — создаёт инстанс Trino при помощи простой YAML-конфигурации;
- Standalone — поддерживает установку одиночного инстанса;
- Внешние подключения — поддерживает работу с хранилищем метаданных Hive Metastore, а также с S3-совместимым хранилищем;
- Управление конфигурацией — отдельный ресурс TrinoClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
- Статус — отображает текущее состояние развёрнутого инстанса Trino.
Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля managed-trino на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:
Компоненты модуля
Модуль состоит из следующих компонентов:
-
Managed-trino-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:
-
согласование состояния кастомных ресурсов Trino во всех пользовательских неймспейсах. Кастомные ресурсы Trino и TrinoClass определяют настройки инстанса Trino;
-
создание и управление ресурсами Deployment, Service, Secret и ConfigMap, относящимися к инстансу Trino;
-
валидация и мутация кастомных ресурсов Trino с помощью механизмов Validating/Mutating Admission Controllers.
-
-
D8ms-trn-<INSTANCE_NAME> (Deployment) — компонент, состоящий из одного контейнера trino и отвечающий за запуск и работу инстанса Trino. Создаётся компонентом managed-trino-operator для каждого кастомного ресурса Trino.
Взаимодействия модуля
Модуль взаимодействует со следующими компонентами:
-
Инстанс Hive Metastore — обрабатывает данные в хранилище метаданных.
-
Объектное хранилище — обрабатывает хранящиеся данные.
-
Kube-apiserver:
- управляет кастомными ресурсами Trino;
- следит за кастомными ресурсами TrinoClass;
- управляет ресурсами Deployment, Service, Secret и ConfigMap.
С модулем взаимодействуют следующие внешние компоненты:
-
Kube-apiserver — валидирует и мутирует кастомные ресурсы Trino.
-
Пользовательские приложения — отправляют запросы к инстансу Trino.