Clickhouse、Oracle、Spark、Hive性能对比测试

一、背景

首先明确下,拿Clickhouse这种OLAP来跟关系型数据库Oracle、内存MapReduce Spark、磁盘MapReduce Hive对比比性能,的确有点欺负人的感觉,但没办法,业务需求,为了说服IT部门给部署Clickhouse集群,千万级的数据量,他们动不动就上Hadoop体系,我实在看不下去了,撸起袖子自己来吧。

定性结论:

1、Clickhouse作为OLAP中的特立独行者,做数据分析真的是再合适不过了,丰富的分析函数可以节省大量时间,同时,性能在4个平台中,呈现碾压趋势。函数方面,举个例子:要实现Excel中的sumif函数功能,CH中直接有sumIf函数与之对应,Oracle、Spark、Hive都要借助sum(Case when...else...end)来实现,极其繁琐;类似的还有Mutiif、toDate、toYear等,简直不要太方便。

2、Oracle我一直以为是收费的,结果去官网一查,软件使用竟然是免费的,当然仅供学习和科研,商业还是要收费的,MySQL也被Oracle收购了,PG号称最好的关系型数据库,但明显干不过Oracle,关键原因在于Oracle后面有强大的团队支撑,保障数据不丢失,这一点,对于支撑事务的关系型数据库来说是至关重要的。Oracle的性能在千万级别下,中规中矩,跑点简单规则和指标加工还行。

3、Spark和Hive我放到一起说,我的建议,100亿级一下数据量,建议别上Hadoop体系,有那个资源上一套分布式Clickhouse集群,分分钟完成原来需要个把小时的计算任务,除非你要用Pyspark跑一些复杂模型,但现实告诉我,实际业务中复杂模型几乎没有用途,后面我会专门写一篇算法介绍的文章,其根本原因在于业务需要清晰的解释性,如果你的模型结果不能很好解释出因果关系,连搭上业务的机会都没有,当你研究出牛逼的模型的时候,先问问自己业务人员能听懂不?我自己能用清晰的逻辑解释清楚我的模型不?如果不能,想办法变成能吧,否则就只能躺在模型库里,发挥不出任何价值。扯远了。。。。 回归正题,Spark和Hive应对千万级数据,效率太低了,不建议采用,具体看测试报告。

二、测试环境

内存:64G

硬盘:2T机械

Cpu: 24  QEMU Virtual CPU

Cpu: 2095.072 MHz

Cache size : 16384 KB

操作系统:CentOS Linux 7.8.2003 Core

资源类型:KVM云主机 虚拟机

Oracle版本:19c(19.3.0.0.0)容器方式部署 单机

Clickhouse版本:21.8.10.19 容器方式部署 单机

Spark版本:2.4.0 容器方式部署 1master+2worker

Hive版本:2.3.7 容器方式部署

Hadoop版本:2.7.3 容器方式部署 1master+2slave

以上环境同时开启。

三、数据存储、Count对比测试:

为节省时间,仅测试了部分有代表性的表。CH的LZ4压缩比大概在8倍左右,另外,我发现Spark在生成RDD的时候也用了LZ4压缩算法,这个LZ4有时间真要好好研究下。

数据量(条)

Oracle存储(MB)

CH存储(MB)

HDFS存储(MB)

Count耗时(CH)

Count耗时(Oracle)

Count耗时(Spark

Count耗时(Hive

2,224,594

464

64

495.03

0.066

0.035

0.351

0.145

15.082

6.893

29.228

23.740

155,624

38

6.8

41.06

5,317,136

1800

392

2130

0.072

0.037

1.253

0.438

34.020

9.799

76

20.373

123,768

104

29

99.82

733,737

168

22

179.59

5,504,293

2200

445

2390

0.066

0.039

1.356

0.553

26.424

15.110

120

22.170

45,254,157

21000

2600

22860

0.062

0.035

406

414

668.5

670.8

755

695

924,963

112

18

120

0.068

0.126

7.545

22.290

 四、复杂指标加工测试:

数据量4500W+

五、复杂规则型模型测试: 

数据量4500W+ 、550W+ 有join操作

 六、几点结论

  1. 无论是简单的Count查询,复杂指标加工查询,还是带有join操作的复杂规则模型查询,Clickhouse这种OLAP平台都有压倒性优势;
  2. 无论从计算效率和存储效率来看,排名都是Clickhouse>Oracle>Spark>Hive;
  3. 从Count效率来看,当数据量在550W左右的时候,CH、Oracle、Spark的计算时间都在可接受范围内,首次查询能在30s内完成;但当数据量来到4500W+的时候,除CH外,其他平台效率均过低,此时,CH的首次查询效率是Oracle的6550倍,二次查询效率约为12000倍;
  4. 从指标加工效率来看,除CH外,其他平台用时均在500s以上,即8分钟以上,而CH首次可在8s内给出结果,此时,CH首次查询效率为Oracle的75倍,二次效率为1091倍;
  5. 从复杂规则模型来看,首次查询CH可以在15s内完成,其他平台均在400s以上,此时,CH首次查询效率为Oracle的31倍,二次效率为77倍;
  6. 同时,对比指标加工和模型用时,可以看出Oracle的指标加工效率要低于条件过滤效率,在各平台用时普遍增加的情况下,Oracle两种情景下用时不增反降;CH的指标加工效率较条件过滤更高。
  • 关于Oracle容器部署请参考这位老兄的,docker安装oracle19c_逝水无痕博客-CSDN博客_docker安装oracle19c,提醒一点,记得带上自动重启参数和网络参数,否则容易容器之间无法访问。我的启动命令如下,shadownet是我建Hadoop集群时候设置的影子网络,搜索docker network 命令就能查询到怎么用,这里不赘述。
  • docker run --restart=always --net shadownet --ip 172.18.0.96 --hostname oracle \
     -p 1521:1521 -p 5500:5500 \
    -e ORACLE_SID=orcl \
    -e ORACLE_PDB=orclpdb1 \
    -e ORACLE_PWD=123456 \
    -e ORACLE_CHARACTERSET=zhs16gbk \
    -e ORACLE_BASE=/opt/oracle \
    -e ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \
    -e PATH=/opt/oracle/product/19c/dbhome_1/bin:/opt/oracle/product/19c/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
    -v /data/oradata:/opt/oracle/oradata \
    --name myoracle \
    registry.cn/oracle:19c

  • 关于CH集群的部署,下周我会写一遍出来,目前我动手实现了基于Zookeeper的高可用集群,和丢弃Zookeeper,仅用两个节点实现的Clickhouse集群,两种方案在参数设置上略有不同,在后面的文章中我会详细阐述。这应该是新年前最后一篇博文了,祝各位技术大拿新年快乐,虎虎生威。
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据分析职业是一个多金的职业,数据分析职位是一个金饭碗的职位,前景美好,但是要全面掌握大数据分析技术,非常困难,大部分学员的痛点是不能快速找到入门要点,精准快速上手。本课程采用项目驱动的方式,以Spark3和Clickhouse技术为突破口,带领学员快速入门Spark3+Clickhouse数据分析,促使学员成为一名高效且优秀的大数据分析人才。学员通过本课程的学习,不仅可以掌握使用Python3进行Spark3数据分析,还会掌握利用Scala/java进行Spark数据分析,多语言并进,力求全面掌握;另外通过项目驱动,掌握Spark框架的精髓,教导Spark源码查看的技巧;会学到Spark性能优化的核心要点,成为企业急缺的数据分析人才;更会通过ClickhouseSpark搭建OLAP引擎,使学员对大数据生态圈有一个更加全面的认识和能力的综合提升。真实的数据分析项目,学完即可拿来作为自己的项目经验,增加面试谈薪筹码。课程涉及内容:Ø  Spark内核原理(RDD、DataFrame、Dataset、Structed Stream、SparkML、SparkSQL)Ø  Spark离线数据分析(千万简历数据分析、雪花模型离线数仓构建)Ø  Spark特征处理及模型预测Ø  Spark实时数据分析(Structed Stream)原理及实战Ø  Spark+Hive构建离线数据仓库(数仓概念ODS/DWD/DWS/ADS)Ø  Clickhouse核心原理及实战Ø  Clickhouse engine详解Ø  SparkClickhouse导入简历数据,进行数据聚合分析Ø  catboost训练房价预测机器学习模型Ø  基于Clickhouse构建机器学习模型利用SQL进行房价预测Ø  Clickhouse集群监控,Nginx反向代理Grafana+Prometheus+Clickhouse+node_exporterØ  Spark性能优化Ø  Spark工程师面试宝典       课程组件:集群监控:福利:本课程凡是消费满359的学员,一律送出价值109元的实体书籍.
ClickHouseHive都是大数据领域中广受欢迎的开源数据仓库,两者都针对海量数据处理提供了优秀的解决方案。然而,从多个方面来看,ClickHouse可以作为Hive的一种替代方案。 首先,ClickHouse具有更高的性能。相比于Hive基于MapReduce的处理方式,ClickHouse采用了列式存储和向量化处理等技术,能够更快地处理海量数据,而且还支持实时查询。同时,在处理复杂查询时,ClickHouse的查询性能也非常出色。 其次,ClickHouse具有更高的可扩展性。ClickHouse的设计考虑了高可用性和可扩展性,支持多节点的集群部署和横向扩展。这意味着,如果需要处理海量数据,ClickHouse可以更容易地进行水平扩展以满足需求,同时还可以保证高可用性。 再次,ClickHouse具有更灵活的数据模型。ClickHouse内置了支持嵌套数据结构的数据类型,例如array, tuple, map等,同时还支持JSON和XML格式等非结构化数据的处理。相比之下,Hive则需要通过复杂的UDF函数或者自定义SerDe实现复杂数据类型的支持。 因此,从性能、可扩展性和数据模型的角度来看,ClickHouse可以作为Hive的替代方案。但是,需要注意的是,ClickHouse主要适用于OLAP场景,而Hive更适合OLTP场景中需要用到复杂查询的情况。同时,在使用ClickHouse时,需要考虑到其对于数据存储的要求和技术栈的要求,需要有一定的技术和资源储备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值