编者按
谈到大数据就会联想到Hadoop、Spark整个生态的技术栈。大家都知道开源大数据组件种类众多,其中开源OLAP引擎包含Hive、SparkSQL、Presto、HAWQ、ClickHouse、Impala、Kylin等。当前企业对大数据的研究与应用日趋理性,那么,如何根据业务特点,选择一个适合自身场景的查询引擎呢?本报告结合百分点在项目中的业务场景,对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、MongoDB、Redis等。
3.ClickHouse
ClickHouse是“战斗民族”俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向 OLAP 的分布式列式DBMS,圈内人戏称为“喀秋莎数据库”。ClickHouse有一个简称"CK",与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点包括:分布式、列式存储、异步复制、线性扩展、支持数据压缩和最终数据一致性,其数据量级在PB级别。

三 、测试环境
1.服务器硬件配置
大数据服务器:大数据网络增强型 d1ne

2.OLAP引擎环境
HAWQ环境

Presto环境

ClickHouse环境

3.测试数据

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

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

四、测试过程
1.HAWQ存储格式与性能评测
经过对比测试后,考虑数据的压缩比、数据的插入速度,以及查询时间这三个维度综合评估,我们的场景推荐HAWQ采用列式存储+Gzip5的压缩方式;如果大家对压缩没有非常高的要求,可以按照测试的详细数据采用其它的组合方式。
HAWQ压缩测试注意事项:只有当orientation=parquet的时候才能使用gzip进行压缩,orientation=row的时候才能使用zlib进行压缩,snappy不支持设置压缩级别。
详细的评测数据及图片展现如下文所示。
行式存储与压缩:
HAWQ的插入方式是将数据写入CSV文件后,Load到HAWQ表中。本次评测的是数据Load的过程和最终压缩比。可以发现,zlib压缩级别到5以后,压缩比的降低就不那么明显了。

测试明细:

结果图形展示:


行式存储查询性能:
测试明细:

结果图形展示:

列式存储与压缩:
测试明细:

结果图形展示:

列式存储查询性能:
测试明细:


结果图形展示:

2.Presto存储格式与性能评测
经过对比测试后,考虑数据的压缩比、数据的插入速度,以及查询时间这三个维度综合评估,我们的场景推荐Presto采用LZ4+ORC方式。这个结果也与各公司采用的格式一致。
存储与压缩:
测试方式,通过CSV文件Load到Hive表,原始数据总量为1440GB。

查询性能:


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查询性能:

并发10查询性能:

并发20查询性能:

4.其它扩展测试
Presto单机多Worker:
我们通过添加单机的Worker数量验证是否提高查询效率,提高单机的查询利用率。
单机增加Presto Worker,部署多Worker。测试结果:表现为CPU瓶颈,没有效果。如下图,可以发现每个Worker的吞吐也少了一半。

Presto扩容:
我们通过添加扩容机器并部署Worker,验证查询性能影响。
加入新的机器,部署Worker。测试结果:表现为性能基本线性增长,受限于数据节点的磁盘IO和网络。

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

测试明细:

结果图形展示:

ClickHouse PageCache缓存查询测试:

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

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

测试明细:

结果图形展示:

五、各组件综合分析

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

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评估时,也需要将并发作为一个重要的考虑因素

大数据评测报告:开源OLAP引擎综评(HAWQ、Presto、ClickHouse)相关推荐

  1. 分布式大数据多维数据分析(olap)引擎kylin[转]

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区.它能在亚秒内查询巨大的Hiv ...

  2. 开源OLAP引擎测评报告

    开源OLAP引擎测评报告 原创: 易观CTO 郭炜 Analysys易观 导读 现在大数据组件非常多,众说不一,在每个企业不同的使用场景里究竟应该使用哪个引擎呢?这是易观Spark实战营出品的开源Ol ...

  3. 阿里发布开源大数据热力报告2022——Flink,Superset,Datahub上榜

    近日阿里发布了<开源大数据热力报告2022>报告,分析近年来大数据项目的发展趋势. 在这当中听到了太多熟悉的名字,Kibana,Grafana,ClickHouse,Spark,Airfl ...

  4. 选择适合你的开源 OLAP 引擎

    摘要:本文主要介绍了主流开源的OLAP引擎:Hive.Sparksql.Presto.Kylin.Impala.Druid.Clickhouse 等,逐一介绍了每一款开源 OLAP 引擎,包含架构.优 ...

  5. 开源OLAP引擎对比

    文章目录 开源OLAP引擎对比 OLAP简介 分布式OLAP引擎分类及对比 基于MPP架构的ROLAP引擎 预计算引擎架构的MOLAP 搜索引擎架构 纯列存OLAP 基于内存的SnappyData 对 ...

  6. 2017年全球大数据产业报告之海外篇(第六集)

    本文作者│吴极 微信号│wujiwuji1023 本文转载自公众号星河融快(rongkuai888)  ,作者吴极(微信ID:wujiwuji1023)   中国软件网获授权转载. " 在& ...

  7. ApacheCON Asia 2021清华大学软件学院王建民:工业大数据软件与开源创新

    演讲人简介 王建民教授,清华大学软件学院院长.大数据系统软件国家工程实验室执行主任.清华大学大数据研究中心常务副主任,工业大数据系统与应用重点北京市重点实验室主任.国家工业互联网战略咨询专家委员会委员 ...

  8. 《大数据》2015年第3期“网络大数据专题”——大数据时代的互联网分析引擎...

    大数据时代的互联网分析引擎 窦志成,文继荣 (中国人民大学信息学院大数据管理与分析方法研究北京市重点实验室 北京 100872) 摘要:随着互联网尤其是移动互联网的高速发展,互联网文档的数量.内容的丰 ...

  9. 【ElasticSearch】大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

    1.概述 转载:大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk述 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望 ...

最新文章

  1. R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率
  2. JAVA线程池(ThreadPoolExecutor)源码分析
  3. 深入php内核一(概述)
  4. linux 农业分析,基于嵌入式Linux的农业信息采集系统设计与研究
  5. 在WordPress中添加简书风格的连载目录和文章导航...
  6. abv asp是静态网页吗_2019年seo动态网页优化“指南针”
  7. 一步步编写操作系统 2 部署工作环境 2
  8. 粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现
  9. Exchange2003的设定及安全管理
  10. 用Mindjet MindManager 15 打开文件后停止响应的解决方法
  11. OpenGL基础2:OpenGL简介
  12. 1.单进程SAPI生命周期
  13. Active Learning through label error statistical methods(ALSE)
  14. 文安三中电子计算机老师叫什么,顶岗实习周记:记我的第一次.doc
  15. 计算机音频视频格式名,MP3/MP4播放器固件知识常见问题解决
  16. 经典论文回顾:Decomposing Images into Layers via RGB-space Geometry
  17. 一个简单的天气预报APP
  18. Android camera预览流程
  19. RabbitVCS:ubuntu下svn可视化工具的安装和使用
  20. 攻防世界 sql注入

热门文章

  1. FL Studio水果萝卜编曲中文版软件V21版本详细功能介绍
  2. pythonML学习笔记ch2-perceptron
  3. 计量经济学 分布滞后模型案例
  4. MATLAB绘制WRF模拟区域和局部的放大
  5. Java程序定义一个继承Thread类,并覆盖run()方法,在run()方法中每隔100毫秒打印一句话。
  6. 如何实现在屏幕上有漂亮的刀光效果并有星星环绕
  7. Linux命令之dd
  8. 《玩转股票量化交易》开启股票数据远程下载服务
  9. 网站服务器和虚拟主机之间有什么区别?
  10. 研究生电子设计大赛参赛心得