2014-12-26 61 views
2

我想用ycsb來進行mongodb的基準測試。如何驗證數據加載到ycsb的負載生成階段後的mongodb?

我已經下載並安裝蒙戈DB按上YCSB MongoDB

指定的指令後,我用下面創建「YCSB」 MongoDB中指定的數據庫命令

1. use ycsb 
2. db.createCollection("ycsb") 

正如上面鏈接中指定,我跑下命令加載數據到ycsb數據庫,

./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://127.0.0.1:27017 -p mongodb.database=ycsb 

我只是想檢查加載階段執行,所以我沒有指定其他參數。我有以下登錄屏幕,

[email protected]:~/ycsb-0.1.4# ./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://127.0.0.1:27017 -p mongodb.database=ycsb 
java -cp /root/ycsb-0.1.4/gemfire-binding/conf:/root/ycsb-0.1.4/infinispan-binding/conf:/root/ycsb-0.1.4/nosqldb-binding/conf:/root/ycsb-0.1.4/core/lib/core-0.1.4.jar:/root/ycsb-0.1.4/hbase-binding/conf:/root/ycsb-0.1.4/mongodb-binding/lib/mongodb-binding-0.1.4.jar:/root/ycsb-0.1.4/voldemort-binding/conf:/root/ycsb-0.1.4/jdbc-binding/conf com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.MongoDbClient -s -P workloads/workloada -p mongodb.url=mongodb://127.0.0.1:27017 -p mongodb.database=ycsb -load 
YCSB Client 0.1 
Command line: -db com.yahoo.ycsb.db.MongoDbClient -s -P workloads/workloada -p mongodb.url=mongodb://127.0.0.1:27017 -p mongodb.database=ycsb -load 
Loading workload... 
Starting test. 
new database url = 127.0.0.1:27017/ycsb 
0 sec: 0 operations; 
mongo connection created with 127.0.0.1:27017/ycsb 
java.lang.NullPointerException 
0 sec: 0 operations; [INSERT AverageLatency(us)=28568] 
[OVERALL], RunTime(ms), 143.0 
[OVERALL], Throughput(ops/sec), 0.0 
[INSERT], Operations, 1 
[INSERT], AverageLatency(us), 28568.0 
[INSERT], MinLatency(us), 28568 
[INSERT], MaxLatency(us), 28568 
[INSERT], 95thPercentileLatency(ms), 28 
[INSERT], 99thPercentileLatency(ms), 28 
[INSERT], Return=1, 1 
[INSERT], 0, 0 
[INSERT], 1, 0 
[INSERT], 2, 0 
[INSERT], 3, 0 
[INSERT], 4, 0 
[INSERT], 5, 0 
[INSERT], 6, 0 
[INSERT], 7, 0 
[INSERT], 8, 0 
[INSERT], 9, 0 
[INSERT], 10, 0 
    . 
    . 
[INSERT], 999, 0 
[INSERT], >1000, 0 

這一步我只是想確認是否成功加載在DB或不是之後。我查使用,

1. use ycsb 
2. db.ycsb.find() 

,但搜索結果爲0。這可能是一個非常簡單的問題,但如果有人爲我提供了加載和DB驗證數據的正確方式,它會有所幫助。

感謝您的幫助。

+0

您可以通過查看命令參數文檔來驗證命令是否實際將數據加載到名爲'ycsb'或某個其他集合的集合中。 – BatScream

+0

是的。正如我提到的那樣,我嘗試使用db.ycsb.find()命令在db ycsb中找到名爲ycsb的集合。但它沒有顯示任何東西。 –

+0

日誌說載入時有'java.lang.NullPointerException'異常,你可以使它更詳細嗎? – BatScream

回答

3

問題出在加載數據時我沒有指定的一個必需參數。

mongodb.writeConcern是加載數據和運行工作負載時所需的參數。它應該具有以下值之一,

-p mongodb.writeConcern=none 
-p mongodb.writeConcern=strict 
-p mongodb.writeConcern=normal 

一般-p mongodb.writeConcern=strict的作品,因爲它使會議開和一致。這也停止了NPE錯誤。

加載MongoDB中的數據之後,數據可以在使用db.usertable.find()db.usertable.count()或命令usertable表/收集驗證。