1.簡介node
ycsb 它是一個數據庫測試工具,全稱爲「Yahoo! Cloud Serving Benchmark」。它內置了對常見NoSQL數據庫和數據網格產品的支持,如Cassandra、MongoDB、HBase、Redis、Infinispan等等不少的主流產品,並且不只安裝使用簡單,還能自由擴展測試數據類型和支持的數據庫產品。產品介紹:https://s.yimg.com/ge/labs/v1/files/ycsb-v4.pdfpython
2.編譯git
安裝github
下載地址: https://github.com/brianfrankcooper/YCSB/releases/download/0.6.0/ycsb-0.6.0.tar.gz 數據庫
源碼地址:https://github.com/brianfrankcooper/YCSBbash
wiki地址:https://github.com/brianfrankcooper/YCSB/wiki服務器
編譯maven
所有database build工具
mvn clean package
單個database buildoop
mvn -pl com.yahoo.ycsb:hbase10-binding -am clean package
安裝包位置
(注意:不一樣版本的工程編譯完成後可能不太一致,可是大致上都是一致的)
3.如何使用
編譯tar.gz包以後目錄以下:(我下載的最新的非發行版是0.7)
解釋:
目錄中包含 lib,bin,workloads和數據庫的目錄。
-- lib 是ycsb的核心jar所在位置 (當你運行時可能會遇到log4j版本不夠高,此時把高版本的jar copy到此處)
-- bin 是運行到啓動腳本 (此腳本是python寫的,可能會遇到你的缺失python的一些組件,請自行安裝)
-- workloads 是測試的一些模版 (固然你能夠本身寫,或者是修改它)
--數據庫的一些配置和依賴的jar包 (手動編譯可能不會去少jar,可是有的發行版本缺乏一些jar致使運行不成功,好比網上比較多的 0.1.4 版本)
Workloads講解
默認提供的模版爲
workloada解讀
# Yahoo! Cloud System Benchmark # Workload A: Update heavy workload # Application example: Session store recording recent actions # # Read/update ratio: 50/50 # Default data size: 1 KB records (10 fields, 100 bytes each, plus key) # Request distribution: zipfian #記錄條數 recordcount=1000 #操做次數 operationcount=1000 #核心模版類(通常請不用修改,若是是自定義workload則須要修改) workload=com.yahoo.ycsb.workloads.CoreWorkload #是否讀取全部字段 readallfields=true #讀取百分比 readproportion=0.5 #更新百分比 updateproportion=0.5 #全表查詢百分比 scanproportion=0 #插入百分比 insertproportion=0 #請求數據訪問數據的分佈規則 requestdistribution=zipfian
具體參數
安裝
安裝很簡單,直接將包copy到服務器解壓便可。
tar -zxvf ycsb-0.7.0.tar.gz cd ycsb-0.7.0
4.運行調試
本文只講解HBase導入性能調試。(在每次測試前請,清空測試表)
--解壓以後,在測試以前須要作3步驗證,不然不能運行(前提是保證HBase正常運行)
--須要提早建表,默認表名稱是 「usertable」 create ‘usertable’,’f1'
1.關於log4j
core/lib 目錄下須要log4j 1.6版本以上的版本,不然着添加相關jar
2.關於NoSQL配置
hbase-binding/conf 目錄下須要將集羣hbase的hbase-site.xml copy到這個目錄(注意 hbase.rootdir這個參數要寫成namenode節點加端口,由於有些HBase HA設置這裏寫到不符合要求)
hbase-binding/lib 目錄下須要包含hbase的全部jar包 和 hadoop相關jar hadoop-hdfs /hadoop-
auth/hadoop-common/hadoop-annotations
運行命令
導入數據
./bin/ycsb load hbase -P workloads/workloada -p columnfamily=f1 -s > load.dat
運行測試模版
./bin/ycsb run hbase -P workloads/workloada -p columnfamily=f1 -s > run.dat
解釋:load表示導入 run表示運行
hbase導入到類型
-P 是YCSB提供的一個測試模版(能夠修改,也能夠本身寫一個,也能夠經過 -p 參數覆蓋)
-s > load.dat 表示將結果寫到文件load.dat裏
workloads 詳細配置請看:https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload
運行參數 詳細請看:https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties
日誌以下:
數據導入log
Command line: -db com.yahoo.ycsb.db.HBaseClient -P ../workloads/workloada -p columnfamily=f1 -s -load [OVERALL], RunTime(ms), 2266.0 [OVERALL], Throughput(ops/sec), 441.306266548985 [INSERT], Operations, 1000 [INSERT], AverageLatency(us), 1555.866 [INSERT], MinLatency(us), 106 [INSERT], MaxLatency(us), 1316612 [INSERT], 95thPercentileLatency(ms), 0 [INSERT], 99thPercentileLatency(ms), 0 [INSERT], Return=0, 1000 [INSERT], 0, 997 [INSERT], 1, 2 [INSERT], 2, 0 [INSERT], 3, 0 [INSERT], 4, 0 [INSERT], 5, 0 ...
測試模版運行log
Command line: -db com.yahoo.ycsb.db.HBaseClient -P ../workloads/workloada -p columnfamily=f1 -s -t [OVERALL], RunTime(ms), 7899.0 [OVERALL], Throughput(ops/sec), 126.59830358273199 [UPDATE], Operations, 514 [UPDATE], AverageLatency(us), 2788.3696498054474 [UPDATE], MinLatency(us), 59 [UPDATE], MaxLatency(us), 1353466 [UPDATE], 95thPercentileLatency(ms), 0 [UPDATE], 99thPercentileLatency(ms), 0 [UPDATE], Return=0, 514 [UPDATE], 0, 512 [UPDATE], 1, 1 [UPDATE], 2, 0 ... [UPDATE], 999, 0 [UPDATE], >1000, 1 [READ], Operations, 486 [READ], AverageLatency(us), 12840.707818930041 [READ], MinLatency(us), 1491 [READ], MaxLatency(us), 348069 [READ], 95thPercentileLatency(ms), 38 [READ], 99thPercentileLatency(ms), 59 [READ], Return=0, 486 [READ], 0, 0 [READ], 1, 37 [READ], 2, 98 ...
5.結構分析
因爲YCSB能夠本身擴展數據庫類型,因此這裏簡單講解下結構。
運行機制
其中DB client就是咱們能夠自行擴展的組件。
新建DB Client
1.新建工程:在YCSB根目錄下,新建一個maven工程,子工程會自動加載到parents 工程中。
2.添加依賴:將core包和其餘依賴包寫入pom文件中,並加入build配置。(能夠參照其餘子工程)
3.添加子類:新工程下的類須要繼承core包下的DB類
4.執行:能夠經過-db指定咱們的DB類,或者在啓動腳本中加入新工程DB類的別名