Модуль managed-hive-metastore управляет инстансами централизованного хранилища метаданных в экосистеме больших данных Hive Metastore (HMS) в Deckhouse Platform (DP). Он предоставляет:

  • Автоматическое развёртывание — создаёт инстанс HMS при помощи простой YAML-конфигурации;
  • Standalone — поддерживает установку одиночного инстанса;
  • Управление конфигурацией — отдельный ресурс HiveMetastoreClass для шаблонизации создания сервиса и гибкой валидации пользовательских параметров;
  • Статус — отображает текущее состояние развёрнутого инстанса HMS.

Подробнее с настройками модуля и примерами его использования можно ознакомиться в документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля managed-hive-metastore на уровне 2 модели C4 и его взаимодействие с другими компонентами DP изображены на следующей диаграмме:

Архитектура модуля managed-hive-metastore

Компоненты модуля

Модуль состоит из следующих компонентов:

  1. Managed-hive-metastore-operator (Deployment) — оператор Kubernetes, состоящий из одного контейнера manager и выполняющий следующие операции:

    • согласование состояния кастомных ресурсов HiveMetastore во всех пользовательских неймспейсах. Кастомные ресурсы HiveMetastore и HiveMetastoreClass определяют настройки инстанса HMS;

    • создание и управление кастомным ресурсом Certificate и ресурсами Deployment, Service и Secret, относящимися к инстансу HMS;

    • валидация и мутация кастомных ресурсов HiveMetastore с помощью механизмов Validating/Mutating Admission Controllers.

  2. D8ms-hms-<INSTANCE_NAME> (Deployment) — компонент, отвечающий за запуск и работу инстанса HMS.

    Состоит из следующих контейнеров:

    • truststore-prepare — init-контейнер, выполняющий инициализацию хранилища доверенных сертификатов;
    • agent — сайдкар-контейнер, который отслеживает и обновляет статус TLS-сертификата;
    • hivemetastore — основной контейнер.

Взаимодействия модуля

Модуль взаимодействует со следующими компонентами:

  1. Инстанс PostgreSQL — обрабатывает метаданные на сервере базы данных.

  2. Объектное хранилище — обрабатывает хранящиеся данные.

  3. Kube-apiserver:

    • управляет кастомными ресурсами HiveMetastore и Certificate;
    • следит за кастомными ресурсами HiveMetastoreClass;
    • управляет ресурсами Deployment, Service и Secret.

С модулем взаимодействуют следующие внешние компоненты:

  1. Kube-apiserver — валидирует и мутирует кастомные ресурсы HiveMetastore.

  2. Пользовательские приложения — отправляют запросы к инстансу HMS.

Дополнительные ресурсы