随着互联网技术的不断发展,各行各业的数据处理量与日俱增,Hadoop 作为一项革命性的技术提供了处理海量数据的能力,随之而来的Spark又大大提升了 Hadoop 的计算能力,解决了Hadoop 的性能问题,受到了大数据行业的热捧。但到了2022年,Spark依然是大数据行业的最佳选择吗?


Hadoop 生态系统经过多年的发展,已经在世界范围内广泛的采用,许多企业已经搭建了基于Hadoop生态圈的大数据平台,并且尝试更加深入的应用,比如数据仓库迁入的尝试,作为分析型场景的主要组件Hive与Spark扮演了主要的角色。


Hadoop上的SQL支持一开始是Apache Hive,Hive自带的计算引擎是面向磁盘的MapReduce,受限于磁盘读/写性能和网络I/O性能的约束,在处理迭代计算、实时计算、交互式数据查询等方面并不高效,其主要适用场景是批处理模式。针对这一不足,Spark将数据存储在内存中并基于内存进行计算是一个有效的解决途径。Spark 允许将中间输出和结果存储在内存中,节省了大量的磁盘 IO。并且使用 DAG 调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能。同时 Spark 自身的 DAG 执行引擎也支持数据在内存中的计算。


偶数科技研发的数据仓库OushuDB, 主要依托云原生特性、计算存储分离架构、强事务特性、完整SQL标准支持、高性能并行执行能力等一系列底层技术的变革,从而实现高弹性、高性能、强扩展性、强兼容性等上层技术的变革,最终帮助企业有效应对大规模、强敏态、高时效、智能化的趋势。

       

 

这次我们将对OushuDB 与Spark 3.0的性能做一次对比。


数据查询哪家强?

为了更直观的比较Spark与OushuDB的查询能力,我们用TPC-H(商业智能计算测试)来对OushuDB和Spark进行测试,TPC-H是美国交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集,目前在学术界和工业界普遍采用它来评价数据查询处理能力。


国际通用的数据库测试标准TPC-H包括 22 个查询(Q1~Q22),我们主要的评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间,我们分别对两个平台进行单节点使用Scale为100的数据集进行测试。


测试环境

服务器配置

  1. CPU:2颗10核Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz,超线程40
  2. 内存:256GB
  3. 硬盘:4*1000GB SSD
  4. 操作系统:Centos 7.4

对比软件版本

  • OushuDB 4.0
  • Spark 3.0

数据库参数


Spark

spark.executor.memory

1g

spark.executor.cores

4

spark.num.executors

4

spark.sql.adaptive.enabled

TRUE


OushuDB

BUCKETNUM

16

VSEG_RESOURCE_QUOTA

1gb

注:为测试在同一资源水平上,并且更接近生产实际,core与内存设置相同,分别是16 core与1gb

表属性


OushuDB 4.0

Spark 3.0

存储格式

orc

orc

压缩方式

lz4

snappy

数据分布

bucketnum=16


注:数据分布,OushuDB可以表级设置及控制数据分布“桶数”,直接影响资源使用

数据生成方式

提前用dbgen生成TPCH测试用文本数据;OushuDB采用外部表并行导入,并进行Analyze。OushuDB采用可写外部表将导入的数据写入指定的HDFS目录,供Spark导入数据。

Spark建立外部表,指向OushuDB写出HDFS文件,将数据导入。

运行结果比较


(两款数据库不同Query下的耗时,越小越好)


 查询
OushuDB 4.0
响应时间
(单位ms)
Spark 3.0
响应时间
(单位ms)
速度比

1

10392

159973

15.39

2

1569

28618

18.24

3

5684

58378

10.27

4

4239

32370

7.64

5

6302

112114

17.79

6

2909

14424

4.96

7

17137

93519

5.46

8

5668

114512

20.20

9

34731

164137

4.73

10

6481

43852

6.77

11

1609

25216

15.67

12

10067

19293

1.92

13

6685

41778

6.25

14

3146

15320

4.87

15

5680

35822

6.31

16

2084

116300

55.81

17

22041

226778

10.29

18

19832

226383

11.42

19

13296

22376

1.68

20

8194

29259

3.57

21

15959

156386

9.80

22

2664

13043

4.90

总共

206369

1749851

8.48

总结

Spark新的自适应查询执行(AQE)框架只在某些场景提升了Spark性能,基于这次TPC-H测试由于新SIMD执行器的优势,OushuDB全面性能超过Spark最大相差55倍,总体(22查询个)性能8倍以上。在各行业实际应用场景进行大规模数据查询的过程中, OushuDB的优势就相当明显了。

OushuDB作为一款高性能云数据库,支持访问标准的ORC文件,并且具备高可扩展,遵循ANSI-SQL标准,具有极速执行器,提供PB级数据交互式查询能力,比传统数仓/MPP快5-10倍,比Hadoop SQL引擎要快5-30倍。OushuDB同时通过计算存储分离架构解决了传统数据仓库高成本、高门槛、难维护、难扩展的问题,可以让企业用户轻松构建核心数仓、数据集市、实时数仓以及湖仓一体数据平台,是当今的企业构建数据湖仓的不二选择