存算分离集群能力边界
以下列出的所有功能均已列出其引入版本。如果您想搭建新的存算分离集群,推荐您部署 v3.2 或以上的最新小版本。
概述
StarRocks 存算分离集群采用了存储计算分离架构,将数据存储在远程存储中,从而降低存储成本、优化资源隔离并加强集群的弹性扩展能力。
本文介绍了存算分离功能的能力边界,涵盖了部署方法、存储配置、缓存机制、Compaction、主键表功能和性能测试等。
部署
存算分离集群支持在物理或虚拟机上部署以及通过 Operator 在 Kubernetes 上部署。
两种部署方案均有以下限制:
- 不支持混合部署存算一体模式和存算分离模式。
- 不支持从存算一体集群转换为存算分离集群,反之亦然。
- 不支持异构部署,即集群内所有 CN 节点的硬件规格必须相同。
StarRocks Kubernetes Operator
StarRocks 提供用于在 Kubernetes 上部署存算分离集群的 StarRocks Kubernetes Operator。
您可以通过以下方法扩缩容存算分离集群:
- 手动扩缩容。
- 使用 Kubernetes HPA(Horizontal Pod Autoscaler)策略自动扩缩容。
存储
存算分离集群支持在 HDFS 和对象存储上构建存储卷。
HDFS
Location
StarRocks 支持以下 HDFS 存储卷 Location:
-
HDFS:
hdfs://<host>:<port>/
说明
从 v3.2 起,存储卷支持启用 NameNode HA 模式的 HDFS 集群。
-
WebHDFS(从 v3.2 起支持):
webhdfs://<host>:<http_port>/
-
ViewFS(从 v3.2 起支持):
viewfs://<ViewFS_cluster>/
认证
StarRocks 支持以下 HDFS 存储卷的认证方式:
-
Basic
-
Username(从 v3.2 起支持)
-
Kerberos Ticket Cache(从 v3.2 起支持)
说明
StarRocks 不支持自动刷新 Ticket。您需要设置 crontab 任务来刷新 Ticket。
暂不支持使用 Kerberos Keytab 和 Principal ID 进行认证。
使用说明
StarRocks 支持基于 HDFS 和对象存储创建存储卷,但每个 StarRocks 实例中只允许创建一个 HDFS 存储卷。创建多个 HDFS 存储卷可能会导致 StarRocks 出现未知行为。
对象存储
Location
StarRocks 支持以下对象存储服务的存储卷:
- 兼容 S3 协议的对象存储服务:
s3://<s3_path>
- AWS S3
- GCS、OSS、OBS、COS、TOS、KS3、MinIO 和 Ceph S3
- Azure Blob Storage(从 v3.1.1 起支持):
azblob://<azblob_path>
认证
针对不同对象存储服务,StarRocks 支持以下认证方式:
- AWS S3
- AWS SDK
- IAM user-based Credential
- Instance Profile
- Assumed Role
- GCS、OSS、OBS、COS、TOS、KS3、MinIO 和 Ceph S3
- 访问密钥
- Azure Blob Storage
- Shared Key
- Shared Access Signatures(SAS)
分区前缀
自 v3.2.4 起,StarRocks 支持基于兼容 S3 的对象存储系统创建带有分区前缀功能的存储卷。当启用此功能时,StarRocks 会将数据打散至桶下多个分区(子路径)中。此举可以轻松提高 StarRocks 对存储桶中数据文件的读写性能。
存储卷
- 从 v3.1.0 起,支持使用 CREATE STORAGE VOLUME 语句创建存储卷,并推荐在后续版本中使用这种方法。
- 存算分离集群中的
default_catalog
使用默认存储卷进行数据持久化。您可以通过 Propertystorage_volume
为default_catalog
中的数据库和表设置不同的存储卷。如未配置,该属性将以Catalog、数据库和表的顺序继承。 - 目前,存储卷只能用于存储云原生表中的数据。未来将支持外部存储管理、导入和备份等功能。
Cache
Cache 类型
File Cache
File Cache 是与存算分离集群一同支持的初始缓存机制,按 Segment 文件粒度加载缓存文件。自 v3.1.7 和 v3.2.3 起,不推荐使用 File Cache。
Data Cache
Data Cache 自 v3.1.7 和 v3.2.3 开始支持,用以取代早期版本中的 File Cache。Data Cache 以 Block(MB 级别)为单位,按需从远程存储中加载缓存数据。推荐您在后续版本中使用 Data Cache。该功能自 v3.2.3 起默认开启。
Data Cache 预热
StarRocks v3.3.0 引入了 Data Cache 预热功能,用以加速数据湖和存算分离集群中的查询。Data Cache 预热是主动填充缓存的过程。通过执行 CACHE SELECT,可以提前从远程存储主动获取所需数据。
配置项
- 表属性:
datacache.enable
:是否启用本地磁盘缓存。默认值:true
。datacache.partition_duration
:缓存数据的有效时长。
- BE 配置:
starlet_use_star_cache
:是否启用 Data Cache。starlet_star_cache_disk_size_percent
:Data Cache 在存算分离集群中最多可使用的磁盘容量百分比。
能力
- 数据导入会生成本地缓存。本地缓存仅会通过缓存容量控制机制淘汰,而不受
partition_duration
限制。 - StarRocks 支持设置定期任务进行 Data Cache 预热。
限制
- StarRocks 不支持多副本缓存数据。
Compaction
可观测性
分区 Compaction 状态
从 v3.1.9 起,可以通过查询 information_schema.partitions_meta
查看分区的 Compaction 状态。
推荐监控以下关键指标:
- AvgCS: 分区中所有表格的平均 Compaction Score。
- MaxCS: 分区中所有表格的最大 Compaction Score。
Compaction 任务状态
从 v3.2.0 起,可以通过查询 information_schema.be_cloud_native_compactions
查看 Compaction 任务的状态和进度。
推荐监控以下关键指标:
- PROGRESS: 表格当前 Compaction 进度(以百分比表示)。
- STATUS: Compaction 任务的状态。如果发生任何错误,详细的错误信息会在此字段中返回。
取消 Compaction 任务
可以使用 CANCEL COMPACTION 语句取消特定的 Compaction 任务。
示例:
CANCEL COMPACTION WHERE TXN_ID = 123;
说明
CANCEL COMPACTION 语句必须在 Leader FE 节点上执行。
手动 Compaction
从 v3.1 开始,StarRocks 支持通过 SQL 语句手动 Compaction。可以指定表或分区进行 Compaction。有关详细信息,请参阅 手动 Compaction。
主键表
下表列出了主键表的主要功能及其在存算分离集群中的支持状态:
功能 | 支持起始版本 | 说明 |
---|---|---|
主键表 | v3.1.0 | |
主键索引持久化 | v3.2.0 v3.1.3 |
|
部份更新 | v3.1.0 |
|
条件更新 | v3.1.0 | 目前仅支持“大于”条件。 |
行列混存 | ❌ | 将在未来版本中支持。 |