StarRocks 接入方案
与体验优化深度研究

数据平台团队  ·  2025-04-20  ·  内部研究

Hive Catalog Tableau 直连 向量检索 物化视图
01

  目录

01

现状与痛点

现有架构分析 & 核心瓶颈识别

02

StarRocks 产品介绍

架构原理 & 核心能力矩阵

03

接入方案

Hive Catalog 零改动对接 & 部署架构

04

体验优化 & 迁移路径

BI / Adhoc / Agent 场景全面升级

02

  现状架构与痛点

// 当前数据链路
数据源 Spark批处理 S3 (Parquet/Iceberg)
Hive Metastore
Kyuubi Spark SQL Tableau(BI)
Adhoc 查询(冷启动慢)
手动同步 ClickHouse(Agent场景)

Tableau 体验差

Kyuubi冷启动10-30s,多表Join性能差,无物化视图

Adhoc 查询慢

需要启动Spark容器,排队等待,资源浪费

CK维护成本高

两套系统数据一致性难保证,额外同步链路

03

StarRocks 产品定位

面向数据湖仓的 MPP 查询引擎

在开放存储格式(Parquet、Iceberg)之上,
提供接近本地盘速度的亚秒级交互式分析性能

3-5x
TPC-H 多表Join
快于ClickHouse
<1s
交互式查询延迟
向量化执行
0
外部依赖
无ZooKeeper
2
核心组件
FE + BE/CN
03

  StarRocks 核心架构

// Shared-Nothing(本地存储) vs Shared-Data(存算分离)
FE(Frontend): 元数据管理 + 查询规划 + MySQL协议
角色: Leader / Follower(Raft多数派) / Observer(只读扩展)
Shared-Nothing → BE(本地存储)存储+计算一体,最优延迟
Shared-Data → CN(共享存储)纯计算+缓存,无状态可弹性扩缩

Shared-Nothing

  • BE本地盘存储,MPP并行计算
  • Tablet多副本,高可用
  • 适合:延迟敏感的高并发BI

Shared-Data(推荐)

  • CN无状态,接S3/MinIO/HDFS
  • 多层缓存,热数据接近本地速度
  • 适合:弹性扩展,与现有S3架构集成
03

  核心能力矩阵

Hive / Iceberg Catalog

直连现有HMS,无需元数据迁移,支持Time Travel(v3.4+)

物化视图

同步+异步两种,查询改写对Tableau透明

向量化执行

C++实现的列式Vectorized Engine

Bucket Shuffle Join

减少网络传输,优化多表Join分布

向量检索

KNN/近似搜索,支持RAG场景(v3.3+)

资源组隔离

租户级CPU/内存隔离,保护生产查询

04

  接入方案:零改动对接现有架构

// StarRocks 接入后架构
Spark批处理 S3 (Parquet/Iceberg)
Hive Metastore
StarRocks Hive Catalog 直读S3,零数据迁移
StarRocks Internal表 高频热点数据
Tableau 直连 <1s响应
Agent SQL+向量检索合一
Spark结果 → Flink CDC / Spark Connector → StarRocks Internal表

Hive Catalog 对接(不改现有链路)

CREATE EXTERNAL CATALOG hive_catalog
PROPERTIES (
  "type" = "hive",
  "hive.metastore.type" = "hive",
  "hive.metastore.uris" =
    "thrift://<hms-host>:9083",
  "aws.s3.use_instance_profile"="true"
);

集群规模建议(Shared-Data)

  • FE × 3(8C/16G,Leader+Follower)
  • CN × 2~N(16C/64G,按需弹性扩缩)
  • 本地SSD缓存200GB+,接S3
  • K8s环境支持Operator自动化部署
05

  Tableau / BI 场景优化

维度现状(Kyuubi Spark)接入后(StarRocks)
仪表板加载10-30s 冷启动< 1s 热查询
多表关联性能差,易OOMBucket Shuffle Join
重复聚合每次全量计算物化视图透明改写
并发上限Spark容器限制CN横向弹性扩展

物化视图实战 — 对 Tableau 透明改写

CREATE MATERIALIZED VIEW mv_monthly_sales
AS SELECT region,
         DATE_TRUNC('month', order_date) AS month,
         SUM(amount) AS total_amount, COUNT(*) AS cnt
FROM dw_orders GROUP BY region, DATE_TRUNC('month', order_date);

-- Tableau 查原始表 → StarRocks 自动改写为查物化视图
SELECT region, month, total_amount FROM dw_orders
-- EXPLAIN 显示自动命中 mv_monthly_sales
06

  Adhoc & Agent 场景优化

Adhoc 查询:免冷启动

现状:Spark容器30s+冷启动
接入后:StarRocks FE → CN < 100ms

资源组隔离

CREATE RESOURCE GROUP adhoc_group
PROPERTIES ("cpu_core_limit"="16",
  "mem_limit"="40%",
  "concurrency_limit"="10");
-- Adhoc查询被限制,不影响生产BI

Agent 场景:消除 CK

StarRocks 一套系统同时支持:

  • 结构化 SQL 分析
  • 文本模糊搜索(LIKE/正则)
  • 向量语义搜索(cosine_distance)
  • 混合检索(SQL + 向量权重融合)

向量检索示例

ALTER TABLE db ADD COLUMN
  embedding ARRAY<FLOAT>;

SELECT id, cosine_distance(embedding,
  '<query_embedding>') AS score
FROM db ORDER BY score ASC LIMIT 10;
07

  推荐迁移路径

PHASE 1

验证 Hive Catalog

部署FE+1CN,创建External Catalog,验证Parquet/Iceberg直读,对比性能

2-4周 低风险
PHASE 2

Tableau 切换

连接StarRocks Internal表,灰度验证,保留Kyuubi备用

2-4周 中风险
PHASE 3

Agent 接入

创建向量列,Agent从CK切换,A/B测试召回效果,可选下线CK

2-4周 中风险
PHASE 4

持续优化

物化视图覆盖高频报表,资源组隔离Adhoc,迁移Shared-Data弹性架构

持续

不改写:Spark批处理(ETL)· Hive Metastore(元数据管理)· S3存储(Parquet/Iceberg文件)

08

总结

核心结论

Hive Catalog

直接读现有S3 Parquet/Iceberg,零数据迁移

Tableau

Kyuubi 30s+ → <1s,多表Join大幅提升

Agent

SQL+向量检索合一,消除CK依赖

StarRocks 以 External Catalog 零改动接入现有 Hive Metastore + S3 架构,替换 Kyuubi Spark SQL 作为 Tableau 主数据源,替代 CK 作为 Agent 统一查询入口,并通过物化视图为高频报表提供透明加速。

— 迁移风险:低(Phase 1 只读验证,不影响现有链路)