Skip to content

Обзор движка 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-каталоги
  • Управление доступом и безопасностью