Обзор движка StarRocks
Что такое StarRocks в контексте нашего проекта?
StarRocks — это высокопроизводительное аналитическое хранилище данных, которое является ключевым компонентом нашей платформы LakeHouse. В рамках проекта MWS Data Lakehouse где наш собственный форк StarRocks выполняет роль основного вычислительного движка для аналитической обработки данных, работая в связке с Apache Iceberg и системой Shared-Data.
Роль StarRocks в нашей архитектуре
В нашем LakeHouse StarRocks обеспечивает: - Высокоскоростную аналитику поверх данных в формате Iceberg - Многомерный анализ в реальном времени - Совместимость с BI-инструментами через MySQL-протокол - Интеграцию с объектным хранилищем S3
Ключевые особенности StarRocks
MPP-архитектура (Massively Parallel Processing)
StarRocks построена по принципу shared-nothing архитектуры, где каждый узел независимо обрабатывает часть данных. В нашем проекте это позволяет эффективно распределять вычислительную нагрузку между узлами кластера.
Практическое значение для проекта: Обработка запросов к данным Iceberg выполняется параллельно на множестве узлов, что обеспечивает высокую производительность даже при работе с большими объемами данных.
Векторизованный движок выполнения
Движок выполняет операции не по строкам, а пакетами колонок, что значительно снижает накладные расходы. Это особенно важно при анализе широких таблиц, характерных для наших данных в Iceberg-формате.
Гибридное хранение данных
Поддержка как колоночного, так и строкового хранения позволяет оптимизировать производительность для различных типов запросов в нашем LakeHouse.
Автоматические материализованные представления
Система автоматически поддерживает материализованные представления, которые предварительно вычисляют результаты тяжелых агрегаций. В нашем проекте это ускоряет выполнение часто используемых аналитических запросов к данным в Iceberg.
Совместимость с MySQL
Поддержка MySQL-протокола позволяет легко подключать StarRocks к популярным BI-инструментам, что упрощает интеграцию с существующей аналитической инфраструктурой.
Архитектура StarRocks в нашем развертывании
В рамках проекта мы используем кластерную архитектуру StarRocks:
Фронтенды (FE) - управляющие узлы
- Лидер (Leader): Главный узел, управляет метаданными
- Последователи (Follower): Обеспечивают отказоустойчивость
- Наблюдатели (Observer): Масштабируют возможности чтения
Бэкенды (BE) - вычислительные узлы
- Хранят и обрабатывают данные
- Обеспечивают параллельное выполнение запросов
- Интегрируются с S3-хранилищем через Iceberg
Интеграция с Apache 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",
-- Настройки S3
"aws.s3.endpoint" = "http://s3balancer.company.local:9878",
"aws.s3.access_key" = "your_s3_access_key",
"aws.s3.secret_key" = "your_s3_secret_key",
"aws.s3.enable_path_style_access" = "true",
"aws.s3.region" = "us-east-1",
-- Настройки OAuth2
"iceberg.catalog.oauth2-server-uri" = "http://keycloak.mwsdata.svc.cluster.local:80/realms/mwsdata/protocol/openid-connect/token",
"iceberg.catalog.credential" = "client_id:client_secret",
"iceberg.catalog.oauth2-token-refresh-enabled" = "true",
"client.factory" = "com.starrocks.connector.iceberg.IcebergClientFactory"
);
Эта интеграция позволяет: - Запрашивать данные напрямую из Iceberg-таблиц - Объединять данные из разных источников - Минимизировать перемещение данных
Преимущества для нашего проекта
Производительность
- Высокая скорость выполнения аналитических запросов
- Эффективная работа с большими объемами данных
- Поддержка сложных агрегаций и джойнов
Масштабируемость
- Линейное масштабирование при добавлении узлов
- Возможность независимого масштабирования compute и storage
Экономическая эффективность
- Снижение затрат на хранение за счет использования объектного хранилища
- Оптимальное использование вычислительных ресурсов
Для углубленного изучения
В следующих разделах документации мы подробно рассмотрим:
- Архитектуру системы и принципы работы компонентов
- Процесс установки и настройки StarRocks в нашем окружении
- Настройку интеграции с Apache Iceberg
- Методы оптимизации запросов и управления производительностью
- Практические примеры работы с данными через Iceberg-каталоги
- Управление доступом и безопасностью