一、hive和oracle的性能测试
环境如下:
oracle 三节点rac,使用共享存储
Hadoop&hive 一个主节点,5个数据节点。
两个环境每台服务器的配置基本一样,都是物理实机。
为比较hadoop和oracle性能
在oracle rac当中tbilllog中导入了20亿条日志记录,占用空间表500G;
在hadoop&hive当中,同样也建表tbilllog导入了20亿条日志记录,点用hdfs空间也大概500G
下面用同样的SQL查询,进行性能对比,发现在oracle中的性能明显还要比hive中的要好
Select substr(Bindingphone,1,3), Count(Callid)
From Members Join icd32.Tbilllog
On Members.Bindingphone = Tbilllog0.Callerno
Group By substr(Bindingphone,1,3);
在oracle数据库里,SQL查询时间是20多分钟
而在hive里要用上2个多小时
这个结果令人惊讶,难道是因为hadoop节点不够多,数据量还不够大,还是因为hadoop&hive性能参数设置的不太优化?
Oracle在500G的2亿行的数据里查询性能仍占优势,那hadoop&hive优势在哪呢?
二、查询MYSQL和查询HBASE速度比较
Mysql,关系型数据库;
HBase,NoSql数据库。
查询Mysql和查询HBase,到底哪个速度快呢?
与一些真正的大牛讨论时,他们说HBase写入速度,可以达到每秒1W。而HBase的理想速度为每秒10W。
来个实验说明一下,此实验只能表明,当前环境下运行状态。我的实验效果,没有到1W,还在优化中…
环境:
有3台虚拟机,运行Hadoop集群;3台虚拟机也在跑HBase:master,node1,node2
master上,同时安装了Mysql数据库。
目前有这样一个需求:
有一堆文本文件,每个文本文件内,存储着日志;
每一行为一条记录;
现在需要,逐行读取记录,并根据记录中的mac地址和sn号,去从HBase或Mysql中,获取账号信息。
然后合并成一条记录,写入HBase的“SHUJU”表内。
Mysql表结构:
id,mac,sn,addtime,account
HBase表结构:
ROWKEY为mac+sn,mac,sn,account,addtime
测试效果如下:
每隔一分钟,执行一次count操作,统计当前数据条数。
select count(1) from SHUJU
结果如下
=====================================
Mysql上,第一次测试。
开始时间11:03:15
28135(条数)
39014
49659
264564
274379
285174(条数)
结束时间11.26.15
285174 – 28135 = 257039
257039 / 23 = 11 175.608695652
也是1W以上。。。
=====================================
查询的 HBase库
开始时间14:43:00
5622(条数)
16671
25062
34848
46652
58001
69690
79908(条数)
结束 14:50:00
79908 – 5622 = 74 286
74286 /7 = 10 612 每分钟个数。
=====================================
mysql
开始 14:58:30
19248(条数)
26526
36389
45837
51945
62497
72319
82695(条数)
结束时间:15:04:30
间隔 七分钟
82695 – 19248 = 63 447
93447 / 7 = 9 063.8571428571
======================================
可以看出在HBase中速度,比mysql中速度略快一点。
但是总的速度,还是有待提高。。。
HBase与Oracle读写读写性能比较
在研究传统数据库(如Oracle)在数据存取过程中的表现时,采用了按照月进行分区、创建复杂查询条件索引、添加存储过程、避免全表扫描操作(如执行“like”语句)、建立缓存等设计。
研究发现索引过多则写入性能下降,而且对非结构化数据存储支持性能不佳,在整体大数据操作上编程和配置的复杂度提高。
研究测试了直接对GPS数据表进行插入和读取操作的速度情况:
在进行数据插入操作时(对比每分钟插入数据量),百万条以下的数据插入速度Oracle和HBase没有明显差异,但超过百万条以后,Oracle的数据插入速度逐步下降,千万条以上HBase数据插入速度比Oracle快2~7倍;
在进行数据读取操作时,HBase千万条以上数据读取速度是Oracle的5~15倍;
在同时进行插入和读取操作的过程时,HBase读取速度比Oracle快15~30倍。在相同的硬件和网络环境中分析对海量交通流数据的处理能力,HBase列式数据库无论从插入性能还是读取性能都可以调优到更高水平。