雅虎(ycsb)測試hbase(壓測)


 

 

一、下載ycsb 0.10包

https://github.com/brianfrankcooper/YCSB/releases/download/0.10.0/ycsb-0.10.0.tar.gz

二、上傳到linux,解壓

tar -zxvf  ycsb-0.10.0.tar.gz
三、YSCB壓力測試hbase流程
1、進入workloads目錄下進行文件配置:比如: workload_test,我們也可以根據下面進行自定義配置:

參數說明:

這里我根據workloads下的文件進行的配置:

 

#load階段插入的數據條數,可以在命令行設置,但是在命令行設置可以覆蓋這里的作用
recordcount=1000
#run階段(比如insert,update等操作)共計的操作次數
operationcount=1000
#核心框架配置
workload=com.yahoo.ycsb.workloads.CoreWorkload  
# true/false. 配置在讀取一行數據信息時,是否同時讀取所有列
readallfields=true
# 在整個run階段中,read操作應該占的比例(默認0.95).
readproportion=0.5
# 在整個run階段中,update操作應該占的比例(默認0.05).
updateproportion=0.5
# 在整個run階段中,scan操作應該占的比例(默認為0).
scanproportion=0
# 在整個run階段中,insert操作應該占的比例(默認0).
insertproportion=0
# 請求在keyspace中的分布情況,例如是否關注熱點還是平均取數據等場景。可以設置 zipfian,uniform,latest
requestdistribution=zipfian
還可以進行其他參數配置,我這里默認的是以workloads下解壓時就有的文件內容為准
 
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,讀改寫,客戶端讀出一個記錄,修改它並將被修改的記錄返回;
 
2、在hbase創建表:
hbase(main):005:0> create 'usertable',{NAME => 'f1'}
0 row(s) in 0.7650 seconds
 
3、加載數據:加載10W條數據記錄:
bin/ycsb load hbase098 -P workloads/workloadb -cp /etc/hyperbase1/conf  -p threads=10 -p table=usertable -p columnfamily=f1 -p recordcount=100000  -s > /yang/load.log
 
參數說明:
hbase098:加載數據時指明所用的數據庫類型
-P指明了所用的配置文件的路徑;
其中 -P 指定workload_test核心配置,-cp 指定的是 /etc/hyperbase1/conf 下的hbase-site.xml文件 -p 指定的參數覆蓋workloadb中的配置。threads指定client啟用多少個線程運行HBase client, 即對應HTable實例。
threads=10 配置了並發線程個數
table=usertable -p columnfamily=f1  Hbase中的表和列族
recordcount=100000  Load階段插入數據的條數
-s > /yang/load.log 將結果輸出到指定文件
 

加載數據時發生的錯誤:

經過百度查詢說:這個錯誤可以忽略不管:

 

因為出現錯誤的原因:

load加載數據的結果:

 

經過百度查詢結果的參數說明:

 到hbase shell下查看:load數據結果:這里我僅僅取了前5條記錄

 

4、運行run測試階段

bin/ycsb run hbase098 -P workloads/workloadb -cp /etc/hyperbase1/conf:/etc/hdfs1/conf -threads 10 -p table=usertable -p columnfamily=f1 -s > /yang/run1.log
 
這后面加了-s > /yang/run1.log將結果輸出到指定位置
參數說明:
-threads 10配置了並發線程個數
-p operationcount=1000000 覆蓋了workloada中operationcount=1000表示本次測試操作記錄數為1000000(可配,不配就以workloadb下的為准)
選擇配置:
-p measurementtype=timeseries -p timeseries.granularity=2000指明了YCSB客戶端多長時間匯總一次延時,timeseries.granularity屬性值的單位為1000milliseconds。所以這里的配置就表示2000s記錄一次本2000s的平均延時。

 

在run測試階段也會報和load數據階段一樣的錯誤,可以忽略不管:
run階段測試結果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM