HBase Random Read性能测试

HBase集群和HDFS集群共享6台机器,HBase和HDFS的Master共享一台机器,其余为HBase的Region Server和HDFS的DataNode。
6台机器具有相同的硬件配置。CPU为32核的 Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz;内存32G;可用于HDFS的磁盘为13*550G;千兆网卡。6台机器均为Linux操作系统,内核为Linux 2.6.32-358.el6.x86_64。
当前使用的HBase版本为0.96.1.1-cdh5.0.0。
测试的HBase表有两个列族(f1和f2),压缩后的表数据大小为230G左右,压缩率大约为1/5,也就是说原始数据大约为1T。测试的rowkey是Hash后的长度为32的字符串,所以数据在集群端分布比较均匀,f1的Value平均不超过200字符。
测试程序采用多线程的方式模拟并发读的场景,即测试程序启动时创建多个线程,每个线程持续进行多次查询,每次只查询一个rowkey。客户端连续的密集访问,将触发集群端密集的并发读请求。由于测试数据在集群端也分布比较均匀,所以当客户端均匀的发送查询请求时,集群端也会形成比较均匀的并发读请求。
每轮测试中,客户端将创建不同的线程数,并将均匀的发送25926672次查询请求,集群端将形成均匀的并发读请求。测试程序将记录每次查询的耗时(ms),并据此统计平均耗时、最大耗时和耗时的分段比例。

测试程序每次查询将获取一个rowkey对应的Cell的所有版本个数,但不要求返回对应的Value。表定义的Cell版本数为10000,测试数据中发现实际的版本数平均不超过50.

QPS为700

此轮测试中,客户端测试程序启动5个线程,这些线程持续的完成25926672次查询请求。此时,集群端显示的QPS大约为700,如下图所示。


本轮测试耗时约12.5小时,结果表明:在集群端QPS达到700左右时,客户端查询平均响应时间为8.6ms,最大响应时间4220ms,至少99%的响应时间都在100ms以内,只有大约0.00001%的请求响应超过了1s。

集群端每个Regsion Server的5分钟的Load average大约在2左右。

QPS为7K

此轮测试中,客户端测试程序启动80个线程,这些线程持续的完成25926672次查询请求。此时,集群端显示的QPS大约为7K。

本轮测试耗时约70分钟,结果表明:在集群端QPS达到7K左右时,客户端查询平均响应时间为12.5ms,最大响应时间5337ms,至少99%的响应时间都在100ms以内,只有大约0.00009%的请求响应超过了1s。

集群端每个RegionServer的5分钟Load average接近于20。

QPS为9K

此轮测试中,客户端测试程序启动150个线程,这些线程持续的完成25926672次查询请求。此时,集群端显示的QPS大约为9K。

本轮测试耗时约55分钟,结果表明:在集群端QPS达到9K左右时,客户端查询平均响应时间为17.8ms,最大响应时间4696ms,并且至少98%的响应时间都在100ms以内,只有大约0.00009%的请求响应超过了1s。

集群端每个Region Server 5分钟的Load average已经达到了25左右。由于查询请求比较持续和均匀,所以实际上15分钟的Load average也达到了25左右。对于32核的CPU来说,这已经算是接近上限了。

测试结论

1.      在集群QPS(Queries Per Second,每秒查询次数)不大于7K时,99.9%以上查询请求响应时间将在100ms内,并且所有查询请求的平均耗时不超过13ms;

2.      本集群的QPS上限可以达到10K,如果持续超过此上限,集群将会工作于超负荷状态;

3.      考虑到QPS为7K时集群的负载,以及集群上同时运行的其它程序,可认为本集群实际并发查询数7K为宜。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值