存算分离集群能力边界
以下列出的所有功能均已列出其引入版本。如果您想搭建新的存算分离集群,推荐您部署 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> - Azure Data Lake Storage Gen2(从 v3.4.1 起支持):
adls2://<file_system_name>/<dir_name>
认证
针对不同对象存储服务,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)
- Azure Data Lake Storage Gen2
- 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、数据库和表的顺序继承。 - 目前,存储卷只能用于存储云原生表中的数据。未来将支持外部存储管理、导入和备份等功能。