Starrocks不同的性能压力测试

本次测试主要分为两个方面进行测试,对应的也是硬件上的两个方面,分别是内存使用率, CPU使用率。本文主要是测试在不同情况下,这两方面的使用率,以确定Starrocks的压力来源。

本文根据真实的生产环境进行测试。主要测试SQL运行期间的硬件使用率。

其次,现有集群分为两种类型的机器,分别是集群中的FE节点和BE节点。FE节点主要用于存储元数据信息,BE节点存储实际数据和负责实际SQL执行

对于FE节点,我们是8核,16GB的机器

对于BE节点,我们是16核,64GB的机器

关于机器的选型,则是参考了官方文档上的生产集群搭建建议

https://docs.starrocks.io/zh-cn/3.0/deployment/plan_cluster#cpu-%E5%92%8C%E5%86%85%E5%AD%98

  1. 查询

首先给出在没有使用情况下,正常的集群利用率

从上面Starrocks自身统计中可以看出,默认情况下,内存使用率大约在35%-40%之间,CPU理论为0

这里我们首先准备了一张数据单表,数据量为487096772,硬盘占用51GB

建表语句如下

CREATE TABLE `test` (

`basic_id` varchar(1048576) NULL COMMENT “”,

`version` varchar(1048576) NULL COMMENT “”,

`unit_type` varchar(1048576) NULL COMMENT “”,

`model_type` varchar(1048576) NULL COMMENT “”,

`data_date` varchar(1048576) NULL COMMENT “”

) ENGINE=OLAP

DUPLICATE KEY(`basic_id`)

DISTRIBUTED BY HASH(`basic_id`)

PROPERTIES (

“replication_num” = “3”,

“in_memory” = “false”,

“storage_format” = “DEFAULT”,

“enable_persistent_index” = “false”,

“replicated_storage” = “true”,

“compression” = “LZ4”

);

对此我们给出的SQL为

SELECT sum(cast(replace(version, “\””, ”) as DECIMAL64(10,2)) * cast(replace(basic_id , “\””, ”) as BIGINT))

FROM test

WHERE data_date >= ‘2022-01-01’ and data_date <= ‘2023-05-31’

AND unit_type = ‘”778″‘

并模仿10个人的并发,获取到的CPU使用率为

上述SQL包含较多的聚合函数,这是由于我们在正式使用中,往往需要配合Superset BI, Power BI 等BI工具使用。故在使用中会出现大量的聚合函数。

而从上面的使用我们可以看出,在出现大量聚合函数的时候,会导致CPU使用率大量的上升。

  1. 导入

针对数据的导入,我们这边采用的是Starrocks官方提供的Spark-connector进行的导入。

其过程可以简化为从OSS上读取parquet或csv文件,读入Spark集群。在进行处理之后,利用Spark-connector进行导入。

那么我们有一批大小为1TB的数据,导入到表test中

在启动相关的Glue job之后,可以观察其内存使用情况

在启动后的十分钟内,内存持续达到70%使用率

最大值甚至达到80%以上

而这是我们在进行单表导入时出现的内存使用率情况

由于我们在未来会同时运行多个导入任务在starrocks之上,在内存选型上可以充分发挥64GB的作用

最后是关于硬盘上的使用

对于硬盘使用,会伴随着导入数据的增多的增多,而一台机器的最佳配置中,往往是2T-4T搭配一台16核64GB的机器。所以伴随着数据增多,硬盘占用也会变多,最后也会导致集群的整体增大。

发表评论

邮箱地址不会被公开。 必填项已用*标注