自帶有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延遲。