Skip to content

Архитектура LakeHouse

Общая архитектура платформы

LakeHouse (ЛКХ) — это современная платформа для работы с большими данными, построенная на принципе разделения вычислительных ресурсов (compute) и хранилища (storage).

Ключевые компоненты стека LakeHouse

  • Compute: Kubernetes, Spark, StarRocks
  • Storage: S3-совместимое объектное хранилище
  • Табличный формат: Apache Iceberg
  • Каталог метаданных: Iceberg REST
  • Оркестрация: Airflow 2.0

Архитектурные принципы

Разделение Compute и Storage

Аспект Hadoop LakeHouse
Архитектура Связанные compute и storage Раздельные compute и storage
Масштабируемость Вертикальная (добавление узлов) Горизонтальная (независимое scaling)
Управление ресурсами Жесткое выделение Эластичное распределение
Стоимость Капитальные затраты Операционные затраты

Преимущества разделенной архитектуры

  • Независимое масштабирование: Вычислительные ресурсы и хранилище масштабируются независимо друг от друга
  • Эластичность: Быстрое выделение и освобождение ресурсов по требованию
  • Экономическая эффективность: Оплата только за фактически используемые ресурсы
  • Гибкость: Возможность использования разных вычислительных движков для одних и тех же данных

Компоненты платформы

1. Вычислительный слой (Compute)

Kubernetes

  • Оркестрация контейнерных workloads
  • Управление ресурсами через namespace с квотами
  • Масштабирование и отказоустойчивость

Apache Spark

  • Обработка больших данных в пакетном и потоковом режимах
  • Поддержка различных форматов данных (Parquet, ORC, Iceberg)
  • Интеграция с экосистемой Hadoop

StarRocks

  • Высокопроизводительное аналитическое хранилище
  • MPP-архитектура для параллельной обработки запросов
  • Совместимость с MySQL-протоколом

2. Слой хранения (Storage)

S3-совместимое объектное хранилище

  • Масштабируемое и отказоустойчивое хранение данных
  • Поддержка различных классов хранения
  • Интеграция с вычислительными движками через S3A

Apache Iceberg

  • Табличный формат для аналитических workloads
  • Поддержка ACID-транзакций
  • Версионирование данных и schema evolution
  • Оптимизации для больших данных

3. Сервисы доступа

KubeSphere

  • Визуальное управление ресурсами кластера
  • Мониторинг потребления ресурсов
  • Управление секретами и конфигурациями
  • Просмотр логов приложений

JupyterHub

  • Интерактивная среда для разработки и отладки
  • Поддержка Spark-приложений
  • Интеграция с Kubernetes

Airflow 2.0

  • Оркестрация ETL-процессов
  • Поддержка KubernetesPodOperator
  • Управление DAG-файлами через S3

VSCode

  • Облачная среда разработки
  • Интеграция с Git и инструментами разработки

Spark History Server

  • Мониторинг и отладка Spark-приложений
  • Хранение логов выполнения в S3

Quary Station

  • WEB клиент для работы с SQL
  • Запуск запросов в сторону движка StarRocks

Архитектура StarRocks в LakeHouse

Компоненты StarRocks

Фронтенды (FE) - управляющие узлы

  • Лидер (Leader): Главный узел, управляет метаданными и обеспечивает сервис записи
  • Последователи (Follower): Подчиненные узлы, предоставляют сервис чтения и участвуют в выборах лидера
  • Наблюдатели (Observer): Узлы только для чтения, масштабируют возможности кластера

Бэкенды (CN) - вычислительные узлы

  • Обрабатывают данные
  • Выполняют фрагменты запросов
  • Обеспечивают сжатие данных и доступ к кешированным данным
  • Автоматическая репликация данных для отказоустойчивости

Интеграция с Iceberg

StarRocks работает с данными через Iceberg External Catalog:

CREATE EXTERNAL CATALOG IcebergRest
PROPERTIES (
    "type" = "iceberg",
    "iceberg.catalog.type" = "rest",
    "iceberg.catalog.uri" = "http://proxy-adapter-rest-fixture.mwsdata.svc.cluster.local:8000",
    "iceberg.catalog.io-impl" = "org.apache.iceberg.aws.s3.S3FileIO",
    "iceberg.catalog.security" = "OAUTH2",    
    "client.factory" = "com.starrocks.connector.iceberg.IcebergClientFactory"
);

Эта интеграция позволяет: - Запрашивать данные напрямую из Iceberg-таблиц - Объединять данные из разных источников - Минимизировать перемещение данных

Сетевые возможности

Доступно по умолчанию

  • Внутренняя сеть Kubernetes ↔ S3
  • Подключение к Hadoop-кластерам (First/Second/RND)
  • Корпоративные сервисы (Vault, GitLab, Nexus)

Требует отдельного заказа

  • Доступ к внешним системам
  • Дополнительные сетевые правила

Управление доступом

Доступ к Kubernetes

Прямой доступ к API Kubernetes не предоставляется. Управление ресурсами осуществляется через: - KubeSphere UI - Внутренние сервисы (Jupyter, Airflow, VSCode) - GitLab CI/CD пайплайны

Управление секретами

  • Секреты хранятся в Vault
  • В Kubernetes создаются secrets с credentials для Vault
  • При запуске приложения секреты подтягиваются из Vault

Процесс выполнения запросов

  1. Клиентский запрос: Пользователь отправляет SQL-запрос через MySQL-протокол к FE
  2. Планирование: FE разбирает запрос, проверяет права, составляет оптимальный план выполнения
  3. Распределение: FE рассылает фрагменты плана всем участвующим BE
  4. Параллельное выполнение: Каждый BE выполняет свою часть работы над своими данными
  5. Агрегация результатов: BE возвращают промежуточные результаты FE
  6. Формирование ответа: FE собирает окончательный результат и отдает клиенту

Преимущества архитектуры

Производительность

  • Массовый параллелизм (MPP) для обработки больших объемов данных
  • Векторизованное выполнение запросов
  • Локальность данных при распределенных вычислениях

Масштабируемость

  • Независимое масштабирование compute и storage
  • Горизонтальное масштабирование узлов
  • Эластичное распределение ресурсов

Надежность

  • Автоматическая репликация данных
  • Отказоустойчивость через множественные экземпляры компонентов
  • Восстановление после сбоев

Экономическая эффективность

  • Оплата только за используемые ресурсы
  • Оптимальное использование вычислительных мощностей
  • Снижение затрат на хранение за счет объектного хранилища

Архитектура LakeHouse обеспечивает гибкую, масштабируемую и экономически эффективную платформу для аналитической обработки больших данных с разделением compute и storage.