Модуль managed-hive-metastore управляет инстансами централизованного хранилища метаданных в экосистеме больших данных Hive Metastore (HMS) в Deckhouse Platform (DP). Он предоставляет:
- Автоматическое развёртывание — создаёт инстанс HMS при помощи простой YAML-конфигурации;
- Standalone — поддерживает установку одиночного инстанса;
- Управление конфигурацией — отдельный ресурс HiveMetastoreClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
- Статус — отображает текущее состояние развёрнутого инстанса HMS.
Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля managed-hive-metastore на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:
Компоненты модуля
Модуль состоит из следующих компонентов:
-
Managed-hive-metastore-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:
-
согласование состояния кастомных ресурсов HiveMetastore во всех пользовательских неймспейсах. Кастомные ресурсы HiveMetastore и HiveMetastoreClass определяют настройки инстанса HMS;
-
создание и управление кастомным ресурсом Certificate и ресурсами Deployment, Service и Secret, относящимися к инстансу HMS;
-
валидация и мутация кастомных ресурсов HiveMetastore с помощью механизмов Validating/Mutating Admission Controllers.
-
-
D8ms-hms-<INSTANCE_NAME> (Deployment) — компонент, отвечающий за запуск и работу инстанса HMS.
Состоит из следующих контейнеров:
- truststore-prepare — init-контейнер, выполняющий инициализацию хранилища доверенных сертификатов;
- agent — сайдкар-контейнер, который отслеживает и обновляет статус TLS-сертификата;
- hivemetastore — основной контейнер.
Взаимодействия модуля
Модуль взаимодействует со следующими компонентами:
-
Инстанс PostgreSQL — обрабатывает метаданные на сервере базы данных.
-
Объектное хранилище — обрабатывает хранящиеся данные.
-
Kube-apiserver:
- управляет кастомными ресурсами HiveMetastore и Certificate;
- следит за кастомными ресурсами HiveMetastoreClass;
- управляет ресурсами Deployment, Service и Secret.
С модулем взаимодействуют следующие внешние компоненты:
-
Kube-apiserver — валидирует и мутирует кастомные ресурсы HiveMetastore.
-
Пользовательские приложения — отправляют запросы к инстансу HMS.