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阶段必须要正确执行完成.