使用Impala/Presto/ES/kudu/Parquet基准测试
目的
本测试报告为调研OLAP性能测试报告,目的在于总结调研的几个存储查询方案的可用性。
背景
考虑到数据量的的增多以及用户并发操作给服务器造成压力,因此对kudu、parquet、presto、Es 等进行存储及查询的性能测试,在系统配置不变的情况下,观察各计算引擎的的操作耗时表现,便于对正确的进行技术选型与评估。
环境准备
本次测试方案的硬件环境使用三台物理机,系统为centos7,基础配置信息如下表:
服务器 | cpu核数 | 内存大小 | 磁盘空间 |
---|---|---|---|
server1 | 40 | 192g | 3.6T |
server2 | 40 | 192g | 3.6T |
server3 | 40 | 192g | 3.6T |
本次测试搭建的大数据环境为CDH6.3.2,所有组件都采用分布式搭建于三台服务器。
impala + kudu Vs impala + parquet
TPC-DS 介绍
TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张维度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。
TPC-DS支持指定不同的数据大小。本次测试选择的数据大小分别为100GB、1TB。数据大小与表rows的关系如下图所示。
测试步骤
1.安装TPC-DS工具并生成测试数据dat文件和查询语句。
2.在HDFS新建目录,将测试数据dat文件上传到HDFS中。
3.将TPC-DS提供的Kudu/parquet DDL语句做语法兼容改造。
4.准备impala外部表DDL。
5.执行kudu/parquet内部表ddl,将impala外部表数据导入到kudu/parquet内部表,调用统计分析SQL
6.整理TPC-DS提供的SQL基准查询语句,由于有些语法不兼容kudu/parquet,需要进行手动调整,最后整理到单独SQL文件中,最后调整出79个可兼容sql。
7.执行手动调整过后的TPC—DS的SQL基准查询。
8.收集执行结果信息到result目录查看,具体的SQL文件执行日志在logs目录查看。
测试结果
首先我们比较一下1T 下impala on kudu 和impala on parquet的性能
再对比下 1T 数据的时间对比
如图所示,单从查询来看,kudu的性能和parquet差距不是特别大,但是阅读网络上的一些对两者的性能评测的文章,很多评测性能更倾向于parquet 。 其实不难分析,创建kudu 表前提是必须对分区初始化和创建主键,而tpc-ds 的数据分布对parquet 而言,那些当作