StarRocks集群配置推荐

为了实现集群高可用,建议集群最低3个节点,FE和BE分开部署也可以混合部署。

单节点配置要求:

  • BE推荐16核64GB内存以上,FE推荐8核16GB内存以上。
  • 磁盘可以使用HDD或者SSD。
  • CPU必须支持AVX2指令集, cat /proc/cpuinfo |grep avx2 确认有输出即可,如果没有支持,建议更换机器,StarRocks的向量化技术需要CPU指令集支持才能发挥更好的效果。
  • 网络需要万兆网卡和万兆交换机。

环境支持要求:

  • Linux (Centos 7+)

  • Java 1.8+

假定内存、磁盘都不会拖后腿的情况下,分析/查询的性能瓶颈在 CPU 的处理能力。所以通过对 CPU 的算力要求,来预估集群的数量。

集群需要的总 CPU 资源:e_core = scan_rows / cal_rows / e_rt * e_qps

变量名 变量含义 样例
e_core 预计要使用的CPU核数(vCPU)
vCPU总数(逻辑处理器) = Socket数(CPU个数)x Core数(内核)x Thread数(超线程) 540c
scan_rows 线上典型场景中的数据扫描量 3000万
e_qps 预期线上QPS 180qps
e_rt 预期线上响应时间 300ms
cal_rows StarRocks针对SQL场景的计算能力 3000万/s

场景样例:

  1. 数据量:事实表一年 3.6亿行数据,大约 100万行/天;

  2. 典型查询场景:一个月的事实表数据( 3000万 )和比较小的的维度表(万级别)做关联,再进行 group by、sum 等聚合计算;

  3. 期望:响应时间在 300ms 以内,业务的峰值 QPS 达 180 左右。

估算解释:

  1. StarRocks 的处理能力在“单核 1000万~1亿/秒”,此场景有「多表 join」和「group by」以及一些表达式函数,相对复杂,所以按照「 3000万/s 的计算能力」估算,需要 3 个 vCPU:3000万 / 3000万/s / 300ms = 3c。

  2. 并发峰值为180qps,因此需要 3 * 180 = 540c,即总共需要 540 个 vCPU。按单台物理机48虚拟核(vCPU)算,理论计算大约需要12台物理机。

  3. 实际 POC 过程中,用3台物理机16虚拟核进行压力测试,能够在40qps下满足300-500ms的响应时间。最终,线上确定用7台48虚拟核的物理机。 所以,还是建议用户要根据实际的业务场景做一下POC测试。

综上:根据POC的测试结果,建议用户搭建3个FE节点每个节点16核64GB内存、7个BE节点每个节点48核152GB内存。

其他说明:

  1. 计算业务越复杂、处理中的一行的列数量越多越复杂,每秒能处理的行数就会越少;

  2. 计算中「条件过滤」的效果越好(能过滤掉很多数据),则能处理的行数就会越多(因为内部有一些索引结构,能更快地帮助处理数据);

  3. 不同「表模型」会对处理能力有很大影响,上面是按照「明细模型」估算。其他模型,内部会有一些特殊处理,真实的数据量行数会和用户理解的数据量行数有一些差异;同时,分区/分桶,也会对查询性能有很大影响;(我们有其他相关文档来指导用户如何使用以达到最佳性能)

  4. 对于一些需要扫描大量数据的场景,磁盘的性能也会影响处理能力。需要时,可以使用SSD来加速。

想请问下这例子里的FE 64GB,BE 152GB是怎么给出的,有像CPU核数那样的估算方法么

1赞

请问一下,这个POC测试时的CPU型号或者物理主机的CPU型号或者主频是多少啊

主频没有强需求

这里的 cal_rows 在哪里可以看 ( 审计日志里有吗 )

这个是按照经验估的单核处理能力

那这个 scan_rows 可以参考 审计日志里的 scanRows 吗,对于多表 join 这种也是生效的吧

可以参考审计日志里面的