StarRocks 存算分离自版本 3.0.0 开放使用,已经历过多个大版本迭代,在众多客户生产环境中得到验证。但在用户使用过程中也反馈了一些问题,大多源自对新能力不够熟悉导致无法达到最佳效果。因而,本文提供 StarRocks 存算分离最佳实践,建议测试前仔细阅读,并按照最佳实践的指导来实施,以达到事半功倍的效果。
部署
用户在部署时需要在部署模式上二选一,存算一体或者存算分离,目前尚不支持在一个集群中同时支持两种运行模式。
StarRocks 目前支持各种类型对象存储,如所有兼容 AWS S3 协议的对象存储(如 S3、OSS、COS、OBS、GCP、Ceph-S3 等),Azure Blob Storage、Google GCP 以及传统的 HDFS 等,用户可以根据实际情况自由选择。
StarRocks 集群内添加了众多的监控指标,且可以被 Prometheus 采集并通过 Grafana 展示,借助这些指标,可以实时观察集群运行情况。因此,对于所有的用户,我们建议您在实际使用 StarRocks 存算分离集群前,先配置好监控,详细可参考文档 StarRocks 存算分离监控部署[1]。
建表
在存算分离集群中,用户建表时需要关注分桶数的设置,要想获得最佳性能,合理的分桶数选择必不可少。如果分桶数设置的过少,可能会导致计算时无法充分利用硬件资源,如果分桶数设置过多,在存算分离集群中可能会产生大量的小文件导致 I/O 效率低下。在实践中,我们建议按照数据量来决定分桶数,一般建议每个分桶容纳的数据规模在 1 ~ 5GB 左右较为合适。
另外,自 3.1.0 版本后,StarRocks 支持为每个表指定不同的存储桶(对象存储中的概念,存储容器),用户可以为不同的表设定不同的存储桶以实现物理资源的隔离,具体可以通过创建 Storage Volume 来配置不同的存储桶[2];创建表时,通过 Storage Volume PROPERTIES 指定存储桶[3]。
Tips
1,根据表实际数据量合理选择分桶数量
2,对于分桶数较多的表,创建可能耗时较长,此时可适当调整参数来观察是否有改善
3,使用 Storage Volume 能让您的建表更为灵活,强烈推荐
导入
当前 StarRocks 存算分离表支持存算一体模式中的所有数据导入方式,离线数据推荐 Broker Load,实时数据同步推荐 DataX,Flink Connect

本文详细介绍了StarRocks存算分离的最佳实践,包括部署模式选择、对象存储集成、监控配置、建表建议(分桶数设置和StorageVolume使用)、数据导入优化、查询性能、Cache管理、Compaction和GC任务,以及数据迁移和弹性能力。
354

被折叠的 条评论
为什么被折叠?



