1. 程式人生 > >雅虎(ycsb)測試hbase(壓測)

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

數據 down linu etc 雅虎 階段 情況 混合 ase

一、下載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階段測試結果: 技術分享圖片

技術分享圖片技術分享圖片

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