ycsb(雅虎)测试Hbase性能

1,284 阅读5分钟

GitHub项目地址以及下载地址

项目地址

软件下载地址

配置使用

  • 该项目提供了源码编译安装,教程在项目地址下方。本文采用直接下载ycsb-hbase10-binding-0.10.0.tar.gz压缩包的方式配置使用

一、解压压缩包

[root@CDH1 tmp]# tar -zxvf ycsb-hbase10-binding-0.10.0
[root@CDH1 tmp]# cd ycsb-hbase10-binding-0.10.0

二、目录结构

[root@CDH1 ycsb-hbase10-binding-0.10.0]# ll
总用量 24
drwxr-xr-x 2 root root    49 2月  20 13:39 bin
drwxr-xr-x 2 root root  4096 2月  20 13:39 lib
-rw-r--r-- 1  502 games 8082 3月   5 2016 LICENSE.txt
-rw-r--r-- 1  502 games  615 3月   5 2016 NOTICE.txt
-rw-r--r-- 1  502 games 5484 4月  29 2016 README.md
drwxr-xr-x 2  502 games  133 4月  30 2016 workloads

三、使用方法

1、输入hbase shell命令进入控制台创建表

hbase(main):01:0*>  n_splits=120
=> 120

hbase(main):02:0>  create 'usertable','family',{SPLITS => (1...n_splits).map{|i| "user#{1000+i*(9999-1000)/n_splits}"}}

0 row(s) in 18.3610 seconds
=> Hbase::Table - usertable

2、找到hbase的配置文件目录conf

[root@CDH1 /]# find / -name hbase

/etc/alternatives/hbase
/etc/hbase

[root@CDH1 /]# cd /etc/hbase
[root@CDH1 hbase]# ll

总用量 0
lrwxrwxrwx 1 root root  28 2月  18 11:40 conf -> /etc/alternatives/hbase-conf
drwxr-xr-x 2 root root 213 2月  18 11:40 conf.cloudera.hbase

[root@CDH1 hbase]# cd /etc/alternatives/hbase-conf
[root@CDH1 hbase-conf]# ll

3、使用以下命令测试

用户首先需要用load初始化数据库,然后用run运行负载。dbname指定了目标数据库。

[root@CDH1 ycsb-hbase10-binding-0.10.0]#ycsb-hbase10-binding-0.10.0]#bin/ycsb load hbase10 -P workloads/workloada -cp/etc/alternatives/hbase-conf -p table=usertable -p columnfamily=family -s -threads10 -p recordcount=100

[root@CDH1 ycsb-hbase10-binding-0.10.0]#ycsb-hbase10-binding-0.10.0]#bin/ycsb run hbase10 -P workloads/workloada -cp/etc/alternatives/hbase-conf -p table=usertable -p columnfamily=family -s -threads10 -p recordcount=100
  • -cp指定hbase的配置文件所在的路径
  • -P指定负载文件的位置。
  • -p用来设置一些参数,比如数据库的ip和port。测试完成后,YCSB会打印平均/最小/最大延迟等信息。
  • -s 输出运行状态

    可以跟路径:-s > /yang/load.log 将结果输出到指定文件

  • workloads目录下 :里面包含一些压力测试的场景文件。YCSB自带了6中压力测试场景,文件和相应场景的对应关系如下:

workloada:混合了50%的读和50%的写;
workloadb:Read mostly workload,混合了95%的读和5%的写,该workload侧重于测试集群的读能力;
workloadc:Read only,100%只读;
workloadd:Read latest workload,插入数据,接着就读取这些新插入的数据;
workloade:Short ranges,短范围scan,不同于随机读,每个测试线程都会去scan一段数据;
workloadf:Read-modiy-wirte,读改写,客户端读出一个记录,修改它并将被修改的记录返回;
  • threads=10 配置并发线程个数
  • table=usertable -p columnfamily=family Hbase中的表和列族
  • recordcount=100 Load阶段插入数据的条数

-p参数

  • -p operationcount=1000000 覆盖了workloada中operationcount=1000表示本次测试操作记录数为1000000

  • -p measurementtype=timeseries -p timeseries.granularity=2000指明了YCSB客户端多长时间汇总一次延时,timeseries.granularity属性值的单位为1000milliseconds。所以这里的配置就表示2000s记录一次本2000s的平均延时。

  • -p recordcound 是YCSB load(加载元数据)命令的参数,默认值1000表示默认加载的记录条数,可以在命令行显示修改该值。

  • -p Operationcount 是YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。

  • -P workload 指定了workload的实现类为 com.yahoo.ycsb.workloads.CoreWorkload

  • -p readallfields表示查询时是否读取记录的所有字段

  • -p readproportion表示读操作的比例,该场景为0.5

  • -p updateproportion表示更新操作的比例,该场景为0.5

  • -p scanproportion表示扫描操作的比例

  • -p Insertproportion表示插入操作的比例

  • -p Requestdistribution表示请求的分布模式,YCSB提供uniform, zipfian, latest三种分布模式

4、查看结果

[OVERALL], RunTime(ms), 1518.0 数据加载所用时间:1.518秒
[OVERALL], Throughput(ops/sec), 658.7615283267457  加载操作的吞吐量,平均并发量每秒659条
[READ], Operations, 496.0		执行read的操作总数,496
[READ], AverageLatency(us), 6491.352822580645  平均响应时间64.91ms
[READ], MinLatency(us), 350.0 最小响应时间0.35ms
[READ], MaxLatency(us), 164863.0  最大响应时间164.8ms
[READ], 95thPercentileLatency(us), 28063.0   95%的read操作延时在28.06ms以内
[READ], 99thPercentileLatency(us), 56607.0   99%的read操作延时在56.60ms以内
[READ], Return=OK, 496 
[CLEANUP], Operations, 20.0   执行cleanup的操作总数,20
[CLEANUP], AverageLatency(us), 5984.35平均响应时间5.98ms
[CLEANUP], MinLatency(us), 5.0		最小响应时间0.005ms
[CLEANUP], MaxLatency(us), 119167.0  最大响应时间119.16ms
[CLEANUP], 95thPercentileLatency(us), 302.0	 95%的CLEANUP操作延时在143.23ms以内
[CLEANUP], 99thPercentileLatency(us), 119167.0	99%的CLEANUP操作延时在119.16ms以内
[UPDATE], Operations, 504.0		执行read的操作总数,504
[UPDATE], AverageLatency(us), 9581.525793650793	 平均响应时间9.58ms
[UPDATE], MinLatency(us), 655.0		最小响应时间0.65ms
[UPDATE], MaxLatency(us), 145023.0	最大响应时间145.02ms
[UPDATE], 95thPercentileLatency(us), 33631.0	 95%的update操作延时在33.63ms以内
[UPDATE], 99thPercentileLatency(us), 101567.0	95%的update操作延时在101.56ms以内
[UPDATE], Return=OK, 504

四、注意

Load阶段其实就是装载数据即往hbase中插入数据,workload文件中的recordcount就是将要插入的条数,run阶段就是对hbase进行各种操作,operationcount就是操作数,因此load阶段必须要正确执行完成.