Архитектура 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
Процесс выполнения запросов
- Клиентский запрос: Пользователь отправляет SQL-запрос через MySQL-протокол к FE
- Планирование: FE разбирает запрос, проверяет права, составляет оптимальный план выполнения
- Распределение: FE рассылает фрагменты плана всем участвующим BE
- Параллельное выполнение: Каждый BE выполняет свою часть работы над своими данными
- Агрегация результатов: BE возвращают промежуточные результаты FE
- Формирование ответа: FE собирает окончательный результат и отдает клиенту
Преимущества архитектуры
Производительность
- Массовый параллелизм (MPP) для обработки больших объемов данных
- Векторизованное выполнение запросов
- Локальность данных при распределенных вычислениях
Масштабируемость
- Независимое масштабирование compute и storage
- Горизонтальное масштабирование узлов
- Эластичное распределение ресурсов
Надежность
- Автоматическая репликация данных
- Отказоустойчивость через множественные экземпляры компонентов
- Восстановление после сбоев
Экономическая эффективность
- Оплата только за используемые ресурсы
- Оптимальное использование вычислительных мощностей
- Снижение затрат на хранение за счет объектного хранилища
Архитектура LakeHouse обеспечивает гибкую, масштабируемую и экономически эффективную платформу для аналитической обработки больших данных с разделением compute и storage.