Hbase性能测试2, 预分区

来源:互联网 发布:java actionperformed 编辑:程序博客网 时间:2024/06/10 18:42

上次通过HBASE自带测试工具,对比不同客户端数量及数据量的插入性能, 由于上次测试对表没有预分区,所以补一个预分区测试,对比一下在分区和不分区的情况下,有什么区别。

Hbase的线性扩展得益于多region同时工作,region越多,性能相比肯定越好,请求发到master之后,由master选取相关region server给客户端,之后就是客户端和region server直接通信,Master的工作相比少很多,负载也不会很大,这是HBASE线性扩展的根本。  但是前提是你的rowkey能随机同时随机分发到多台region server,否者HBASE底层提供负载均衡就白搭了。 预先分区的好处在于2个方面, 减少分裂,另外就是负载均衡,因为预先分区了,每个key落入不同的region 自然就负载均衡了。

测试命令:

time hbase org.apache.hadoop.hbase.PerformanceEvaluation --rows=1000000 sequentialWrite 10


预先分区表:

create 'TestTable',{SPLITS_FILE => 'split.txt'}, {NAME => 'info'}

[hdfs@namenode02 ~]$ cat split.txt 
0000000000000000000100000
0000000000000000000150000
0000000000000000000200000
0000000000000000000250000
0000000000000000000300000
0000000000000000000400000
0000000000000000000500000
0000000000000000000600000
0000000000000000000700000
0000000000000000000800000
0000000000000000000900000
0000000000000000001000000
0000000000000000002000000
0000000000000000003000000
0000000000000000004000000
0000000000000000005000000
0000000000000000006000000
0000000000000000007000000
0000000000000000008000000
0000000000000000009000000
0000000000000000010000000


预先分区测试:

                Row count=10000000
        File Input Format Counters 
                Bytes Read=455815
        File Output Format Counters 
                Bytes Written=1331


real    1m24.666s
user    0m21.816s
sys     0m2.465s


无预先分区测试:


                Row count=10000000
        File Input Format Counters 
                Bytes Read=455815
        File Output Format Counters 
                Bytes Written=1385


real    2m22.463s
user    0m20.386s
sys     0m2.168s


从上面数据可以看到,预分区比不分区要快将近1分钟,为了保证测试的准确性,每个测试我基本跑了3次。  


使用任何数据库,不管是DBRMS还是NO-SQL,我们都尽量要避免其软肋,每个数据库都有其实现原理,避开弱点,减少问题出现的概率。

原创粉丝点击