随着互联网技术的不断发展,各行各业的数据处理量与日俱增,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
OushuDB
注:为测试在同一资源水平上,并且更接近生产实际,core与内存设置相同,分别是16 core与1gb
表属性
注:数据分布,OushuDB可以表级设置及控制数据分布“桶数”,直接影响资源使用
数据生成方式
提前用dbgen生成TPCH测试用文本数据;OushuDB采用外部表并行导入,并进行Analyze。OushuDB采用可写外部表将导入的数据写入指定的HDFS目录,供Spark导入数据。
Spark建立外部表,指向OushuDB写出HDFS文件,将数据导入。
运行结果比较
(两款数据库不同Query下的耗时,越小越好)
总结
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同时通过计算存储分离架构解决了传统数据仓库高成本、高门槛、难维护、难扩展的问题,可以让企业用户轻松构建核心数仓、数据集市、实时数仓以及湖仓一体数据平台,是当今的企业构建数据湖仓的不二选择。