百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

栏目: IT技术 · 发布时间: 4年前

内容简介:一、测试整体方案百分点面对的业务场景,主体是要解决超大规模数据集的Ad-Hoc查询问题,并且大多是单表查询场景。架构团队在此过程中选取了HAWQ、Presto、ClickHouse进行评测。评测中选取的数据集与SQL来自项目实际业务,我们需要评测维度主要如下:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

一、测试整体方案

百分点面对的业务场景,主体是要解决超大规模数据集的Ad-Hoc查询问题,并且大多是单表查询场景。架构团队在此过程中选取了HAWQ、Presto、ClickHouse进行评测。评测中选取的数据集与 SQL 来自项目实际业务,我们需要评测维度主要如下:

A.数据在不同压缩格式下的压缩能力。

B.不同格式下的数据查询能力。

C.特定格式下的HAWQ、Presto、ClickHouse查询能力横向对比。

二、测试组件介绍

1.HAWQ

HAWQ是Hadoop原生SQL查询引擎,结合了MPP数据库的关键技术优势和Hadoop的可扩展性、便捷性,以及ANSI SQL 标准的支持;具有 MPP(大规模并行处理系统)的性能,比Hadoop生态圈里的其它SQL 引擎快数倍;具有非常成熟的并行优化器等。

2.Presto

Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析。但是,对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。

Presto需要从其他数据源获取数据来进行运算分析,它可以连接多种数据源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、 MongoDBRedis 等。

3.ClickHouse

ClickHouse是“战斗民族”俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向 OLAP 的分布式列式DBMS,圈内人戏称为“喀秋莎数据库”。ClickHouse有一个简称"CK",与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点包括:分布式、列式存储、异步复制、线性扩展、支持数据压缩和最终数据一致性,其数据量级在PB级别。

三 、测试环境

1.服务器硬件配置

大数据服务器:大数据网络增强型 d1ne

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

2.OLAP引擎环境

  • HAWQ环境

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • Presto环境

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • ClickHouse环境

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

3.测试数据

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

数据存放路径:/data1~12/iplog,一个盘20G,6台服务器每台都是240G,一共1440GB;每台服务器12个盘装载4个分区(小时)数据,每个盘装载4个分区的1/12的数据,4个文件,每个文件大小5G,2500w条记录,一条记录200Byte。

 

4.测试SQL

测试挑选4个实际典型SQL,大致如下:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

四、测试过程

1.HAWQ存储格式与性能评测

经过对比测试后,考虑数据的压缩比、数据的插入速度,以及查询时间这三个维度综合评估,我们的场景推荐HAWQ采用列式存储+Gzip5的压缩方式;如果大家对压缩没有非常高的要求,可以按照测试的详细数据采用其它的组合方式。

HAWQ压缩测试注意事项:只有当orientation=parquet的时候才能使用gzip进行压缩,orientation=row的时候才能使用zlib进行压缩,snappy不支持设置压缩级别。

详细的评测数据及图片展现如下文所示。

  • 行式存储与压缩:

HAWQ的插入方式是将数据写入CSV文件后,Load到HAWQ表中。本次评测的是数据Load的过程和最终压缩比。可以发现,zlib压缩级别到5以后,压缩比的降低就不那么明显了。

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 行式存储查询性能:

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 列式存储与压缩:

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 列式存储查询性能:

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

2.Presto存储格式与性能评测

经过对比测试后,考虑数据的压缩比、数据的插入速度,以及查询时间这三个维度综合评估,我们的场景推荐Presto采用LZ4+ORC方式。这个结果也与各公司采用的格式一致。

  • 存储与压缩:

测试方式,通过CSV文件Load到Hive表,原始数据总量为1440GB。

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 查询性能:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

3.查询对比测试:HAWQ vs Presto vs ClickHouse

通过对比测试结果可以发现,在相同的数据量查询SQL情况下,ClickHouse对比HAWQ、Presto有数量级的性能优势。由于我们的业务更多是单表的Ad-Hoc查询和分析,因此本次评测最终采用ClickHouse作为我们的OLAP引擎。

同时,测试过程中我们也发现一些有意思的现象,如:

(1)  HAWQ对查询都是全表扫描,如类似Select * from where c1=xxx limit 10查询,而Presto则对扫描的结果直接返回。

(2)  HAWQ查询会使用到系统缓存,而Presto对这方面并没有特别的优化。表现出的现象就是,在一定的并发度下,HAWQ反而会体现出缓存的优势,而Presto性能则呈现线性下降趋势。

详细见测试过程的详细记录及图形化的直观展现。

  • 并发1查询性能:

 

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 并发10查询性能:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • 并发20查询性能:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

4.其它扩展测试

  • Presto单机多Worker:

我们通过添加单机的Worker数量验证是否提高查询效率,提高单机的查询利用率。

单机增加Presto Worker,部署多Worker。测试结果:表现为CPU瓶颈,没有效果。如下图,可以发现每个Worker的吞吐也少了一半。

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • Presto扩容:

我们通过添加扩容机器并部署Worker,验证查询性能影响。

加入新的机器,部署Worker。测试结果:表现为性能基本线性增长,受限于数据节点的磁盘IO和网络。

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • ClickHouse 横向扩展查询测试:

测试横向扩展对查询性能的影响,每个节点的数据量是相同的,使用相同的SQL分别测试单节点、五节点、十节点的查询性能。

根据测试结果可以看出,横向扩展后,节点数和数据量等比增加,查询时间几乎保持不变。所以对于ClickHouse我们可以基于单节点的数据量和性能,推断一定场景下整个集群的情况。

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

  • ClickHouse PageCache缓存查询测试:

测试PageCache对查询性能的影响,首先清除所有缓存分别查询四个SQL,然后再重复执行一次,可以发现,PageCache对第二次查询的性能提高是影响巨大的。

ClickHouse充分利用了系统缓存(PageCache),对查询有数量级的性能提升作用。

测试明细:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

结果图形展示:

百分点大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)

五、各组件综合分析

通过上述测试结果和分析图表,结合我们查询各组件的开源介绍进行综合分析,如下:

HAWQ采用基于成本的SQL查询优化器,生成执行计划;同时在标准化SQL兼容性这方面表现突出(基于TPC-DS进行SQL兼容性测试)。数据存储直接使用HDFS,与其它SQL on Hadoop引擎不一样,HAWQ采用自己的数据模型及存储方式。在本次对单表的查询测试中,性能并不理想,并且我们发现对于表查询类似limit 1语句。HAWQ也会全表扫描,这个过程让我们感觉有点诧异。

Presto的综合能力对比其他SQLon Hadoop引擎还是比较突出的。我们在测试过程中发现,单节点的扫描速度达5000WRow/S。Presto是完全基于内存的并行计算,对内存有一定的要求。只装载数据到内存一次,其他都是通过内存、网络IO来处理,所以在慢速网络下是不适合的,所以它对网络要求也是很高。Presto只是查询引擎,不负责数据的底层持久化、装载策略。Presto支持丰富的多数据源,可跨多个数据源查询。另外,在我们测试的版本上没有本地数据读取优化策略,开源社区里在新版本上是支持的。

ClickHouse作为战斗民族的开源神器,是目前所有开源MPP计算框架中速度最快的。对比测试的结果表明,ClickHouse在单表的查询中性能十分优异。对多表的关联分析场景,查询其他报告并不十分理想,本次测试并不涉及,不做评论。ClickHouse性能很大程度上依赖于系统缓存。对完全非缓存,进行磁盘扫描的场景,性能也不是十分突出,二者也有数量级的性能差距。这也是我们在使用过程中的优化点。

最后,以上采用MPP架构的OLAP引擎,随着并发的提高,查询性能都出现了线性下降,Presto在这个问题上的尤为明显。CK由于单次查询速度快,所以一定程度上掩盖了这个问题。因此,大家在未来的业务中进行OLAP评估时,也需要将并发作为一个重要的考虑因素。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小米生态链战地笔记

小米生态链战地笔记

小米生态链谷仓学院 / 中信出版集团 / 2017-5 / 56.00

2013年下半年,小米开始做一件事,就是打造一个生态链布局IoT(物联网);2016年年底,小米生态链上已经拥有了77家企业,生态链企业整体销售额突破100亿元。这3年,是小米生态链快速奔跑的3年,也是小米在商场中不断厮杀着成长的3年。 3年,77家生态链企业,16家年销售额破亿,4家独角兽公司,边实战,边积累经验。 小米生态链是一个基于企业生态的智能硬件孵化器。过去的3年中,在毫无先......一起来看看 《小米生态链战地笔记》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具