自带有hbase pe,可是pe只能统计每一个线程执行的状况,不能统计总体的状态。因此仍是推荐使用YCSBgit
https://github.com/brianfrankcooper/YCSBgithub
使用参考文档:数据库
https://github.com/brianfrankcooper/YCSB/wiki网络
一:首先确认集群配置,好比cpu、内存、磁盘、网络带宽工具
二:建立hbase表,设置表重要属性,好比使用哪一种压缩,哪一种块编码等等。通常也会建立好预分区,在建立预分区的时候,因为YCSB默认生成的rowkey是以“user”开头的,因此建立预分区应作对应调整,好比:oop
create 'ycsb01',{NAME => 'f1',COMPRESSION => 'SNAPPY'},SPLITS => ['user1','user2','user3','user4','user5','user6','user7','user8','user9']
三:定义咱们的workload,YCSB自带的也有几种workload,能够参照来定义咱们本身的负载状况,性能
比较核心的配置以下:测试
recordcount: YCSB load命令的参数,指总数据条数 (default: 1000) Operationcount: YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。对于workloada这种测试场景,就意味着读数据在500左右,写数据也在500左右 fieldcount: 字段个数 (default: 10) fieldlength: 每一个字段的长度 (default: 100) minfieldlength: 每一个字段最小的长度 (default: 1) readallfields: 是否读取全部字段(default: true) writeallfields: 是否写/更新全部字段 (default: false) readproportion: read操做比例 (default: 0.95) updateproportion: update操做比例 (default: 0.05) insertproportion: insert操做比例 (default: 0) scanproportion: scan操做比例 (default: 0) requestdistribution: 使用哪一种数据分布方式,主要有uniform, zipfian, hotspot, sequential, exponential or latest可选 (default: uniform) Uniform(等几率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)。 minscanlength: scan时候,最小的scan条数(default: 1) maxscanlength: scan时候,最大的scan条数(default: 1000) scanlengthdistribution: scan时候,怎么选择scan的条数,[scan的条数介于1到maxscanlength之间] (default: uniform) insertstart: 在并行执行loads和runs的时候,定义当前YCSB实例的起始数据 (default: 0) insertcount: 在并行执行loads和runs的时候,定义当前YCSB实例要操做的数据条数 (default: recordcount) fieldnameprefix: 字段名的前缀 (default: “field”)
运行workload大概有如下几个步骤:编码
选择符合场景的workloadspa
配置合适的参数(好比客户端线程数)
执行Load阶段数据加载(workload有两个阶段,一个是loading阶段加载数据,一个是transactions阶段在这些数据上执行操做)
执行workload
nohup ycsb_home/bin/ycsb load hbase12 -P workloads/workloada -cp ycsb_home/hbaseconf -p table=ycsb01 -p columnfamily=f1 -threads 10 -s > ycsb_home/log/ycsb_load.log &
load:表示的是执行的load阶段
hbase12:对应hbase1.2版本
-P workloads/workloada:指定负载配置
-cp ycsb_home/hbaseconf:指定hbase client配置文件
-p table=ycsb01:指定hbase表
-p columnfamily=f1:指定hbase表的列簇
-threads 10:指定ycsb线程数
-s:status,每隔10秒输出状态日志
[OVERALL], RunTime(ms), 16487.0 [OVERALL], Throughput(ops/sec), 6065.384848668648 [OVERALL] 区显示测试整体状况 RunTime(ms) 运行总时间 Throughput(ops/sec) 吞吐量,每秒操做数 [TOTAL_GCS_PS_Scavenge], Count, 23.0 [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 88.0 [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.5337538666828411 [TOTAL_GCS_PS_MarkSweep], Count, 0.0 [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0 [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0 [TOTAL_GCs], Count, 23.0 [TOTAL_GC_TIME], Time(ms), 88.0 [TOTAL_GC_TIME_%], Time(%), 0.5337538666828411 [TOTAL_GC*] 区显示垃圾回收状况 [TOTAL_GCS_PS_Scavenge], Count, 23.0 Parallel Scavenge 回收次数 [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 88.0 Parallel Scavenge 回收时间 [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.533 Parallel Scavenge 回收时间百分比 [TOTAL_GCS_PS_MarkSweep], Count, 0.0 PS MarkSweep 回收次数 [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0 PS MarkSweep 回收时间 [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0 PS MarkSweep 回收时间百分比 [TOTAL_GCs], Count, 23.0 全局 GC 次数 [TOTAL_GC_TIME], Time(ms), 88.0 全局 GC 时间 [TOTAL_GC_TIME_%], Time(%), 0.533753866 全局 GC 时间百分比 [READ], Operations, 50011.0 [READ], AverageLatency(us), 4418.49443122513 [READ], MinLatency(us), 1584.0 [READ], MaxLatency(us), 208895.0 [READ], 95thPercentileLatency(us), 8207.0 [READ], 99thPercentileLatency(us), 11463.0 [READ], Return=OK, 50011 [READ] 区显示读取操做的统计结果 Operations 总操做数 AverageLatency(us) 平均延迟(微秒) MinLatency(us) 最小延迟 MaxLatency(us) 最大延迟 95thPercentileLatency(us) p95延迟 99thPercentileLatency(us) p99延迟 Return=OK, 50011 结果(正确),总操做数 [CLEANUP](清理操做)、[UPDATE](更新操做)等等和 [READ] 区相似
nohup ycsb_home/bin/ycsb run hbase12 -P workloads/workloada -cp ycsb_home/hbaseconf -p table=ycsb01 -p columnfamily=f1 -threads 10 -s > ycsb_home/log/ycsb_run.log &
1.ycsb client尽可能运行在非hbase集群节点,以减小ycsb client对regionserver资源的占用,影响测试结果。
2.留意ycsb client网络IO状况,若是网络带宽被打满,测不出实际性能。这种状况能够设置多ycsb client并行运行
3.多ycsb client并行运行,最后的执行结果综合多个取平均值便可,主要关注TPS(ops/sec)和平均延迟、p9五、p99延迟。