StarRocks测试 - StarRocks vs Impala 性能对比

本文通过TPC-H 100G数据集对比了StarRocks与Impala的分析型查询性能。在不同并发度下,StarRocks在大部分场景下展现出接近2倍于Impala的性能优势,特别是在处理JOIN、子查询和Group-by聚合等复杂操作时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试方法

TPC-H是业界常用的一套Benchmark,由TPC委员会制定发布,用于评测数据库的分析型查询能力。TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group-by聚合等。

本次测试基于TPC-H 100G数据进行,其中主要表数据量如下:LINEITEM表约6亿行,ORDERS表1.5亿行,PARSUPP表8000万行。

测试环境

机器 1台master阿里云主机 3台core阿里云主机
CPU 8Core 32Core
内存 32G 128G
带宽 2.5 Gbit/s 10 Gbit/s

软件部署

节点类型 Impala 3.4.0 StarRocks 2.2
emr-header-1 impala-catalog/impala-state-store FE
emr-worker-1 impala-server BE
emr-worker-2 impala-server BE
emr-worker-3 impala-server BE

测试配置

Impala配置

EMR上默认Impala是访问local hive cluster, 为了跨网络访问HDFS,需要:

  • 修改配置文件
# /etc/ecm/impala-conf

<property>

<name>hive.metastore.uris</name>

<!-- <value>thrift://emr-header-1.cluster-49146:9083</value> -->

<value>thrift://192.168.1.11:9083</value>

</property>
  • 将域名添加到所有机器的/etc/hosts下面
  • 重启所有的impala组件

优化参数如下:

  • num_remote_hdfs_io_threads = 48
  • num_hdfs_worker_threads = 48
  • coordinator_rpc_threads = 48

StarRocks配置

在StarRocks中按照如下方式创建外表,以外表形式访问Hive数据:

CREATE EXTERNAL TABLE `orders` (
  `o_orderkey` int(11) NULL COMMENT "",
  `o_custkey` int(11) NULL COMMENT "",
  `o_orderstatus` varchar(1) NULL COMMENT "",
  `o_totalprice` double NULL COMMENT "",
  `o_orderdate` date NULL COMMENT "",
  `o_orderpriority` varchar(15) NULL COMMENT "",
  `o_clerk` varchar(15) NULL COMMENT "",
  `o_shippriority` int(11) NULL COMMENT "",
  `o_comment` varchar(79) NULL COMMENT ""
) ENGINE=HIVE 
COMMENT "PARTITION BY ()"
PROPERTIES (
"database" = "tpch_100g_zlib",
"table" = "orders",
"resource" = "emr_test",
"hive.metastore.uris"  =  "thrift://192.168.1.11:9083"
);

使用默认配置(下面都是默认值):

  • cbo_max_reorder_node_use_dp = 10
  • cbo_enable_dp_join_reorder = true
  • cbo_max_reorder_node_use_exhaustive = 4
  • enable_global_runtime_filter = true
  • doris_scanner_thread_pool_thread_num = 48

测试结果

Impala在运行Q18的时候出现过OOM,Q11不支持Having子句,因此在统计总体时间时不将这两个查询计算在内。分别测试并发为4,8,16的情况。

C = 4

Query impala starRocks Imapa/StarRocks
Q01 12615 17020 0.741186839
Q02 7075 1548 4.570413437
Q03 19545 8224 2.376580739
Q04 19163 8193 2.338947882
Q05 33196 20808 1.595347943
Q06 7523 5517 1.363603408
Q07 55233 8265 6.682758621
Q08 24650 10121 2.435530086
Q09 43989 23607 1.863387978
Q10</
### ImpalaStarRocks、Kylin 和 Doris 的性能、特点及适用场景对比 #### Impala的特点与优势 Impala 是由 Cloudera 开发的一款开源 SQL 查询引擎,专为 Hadoop 平台设计。其主要特点是能够提供低延迟的数据查询能力,在大规模分布式环境中表现尤为出色。由于直接读取HDFS上的文件而不依赖MapReduce框架执行SQL操作,因此具有较高的灵活性和效率。 对于实时数据分析需求而言,Impala 可以很好地满足要求;然而当面对更复杂的多维分析任务时,则可能不如其他专门构建用于OLAP工作的解决方案那样高效[^1]。 ```sql SELECT * FROM table_name WHERE condition; ``` #### StarRocks的功能特性 StarRocks是一款现代化的列式存储数据库管理系统,旨在处理海量结构化数据的同时保持快速响应时间。它不仅继承了传统MPP架构的优点——如并行计算能力和良好的扩展性——而且还引入了一些创新技术来优化查询性能,比如向量化执行引擎和支持多种索引类型等。 这些改进使得StarRocks能够在复杂查询条件下依然维持出色的吞吐量水平,并且适用于各种业务场景下的交互式报表生成以及即时决策支持系统建设等工作负载[^2]。 ```sql CREATE TABLE example_table ( id INT, name STRING ); ``` #### Kylin的核心竞争力 Apache Kylin 工作原理本质上是 MOLAP (多维立方体分析),即对数据模型做 Cube 预计算,并利用计算的结果加速查询。这种预先聚合的方式极大地提高了特定模式下固定维度组合查询的速度,非常适合那些需要频繁访问相同或相似视图的应用程序环境。 不过需要注意的是,随着事实表规模增大或者维度数量增加,Cube 构建过程可能会变得非常耗时甚至难以完成全部预计算工作。所以在选择该工具之前应当充分评估实际应用场景中的查询模式及其变化趋势[^3]。 ```python import kylin_api_client as kac client = kac.Client('http://kylin.example.com') result = client.query(sql="SELECT COUNT(*) FROM sales") print(result) ``` #### Doris的设计理念与发展现状 Doris是一个基于MPP架构的大规模并行处理关系型数据库,最初由百度内部孵化而成。相较于同类产品来说,Doris更加注重易用性和维护简便性的平衡,提供了较为友好的Web界面来进行集群管理和作业调度等功能配置。 此外,得益于底层采用了先进的压缩算法和技术手段实现了高效的磁盘I/O管理机制,即使是在资源受限的情况下也能保证较好的整体性能表现。这使其成为中小型企业级用户部署私有云平台的理想之选之一[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值