【问题标题】:How to verify data is loaded into mongodb after load generation phase in ycsb?如何在 ycsb 中的负载生成阶段后验证数据是否已加载到 mongodb?
【发布时间】:2015-02-23 14:31:54
【问题描述】:

我正在尝试使用 ycsb 对 mongodb 进行基准测试。

我已按照YCSB MongoDB 中指定的说明下载并安装了 mongo db

之后,我使用以下命令在 mongodb 中创建了名为“ycsb”的数据库

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

我只是想检查加载阶段的执行,所以我没有指定其他参数。我在登录屏幕下方,

root@pegdb2:~/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

在这一步之后,我只想检查是否在数据库中成功加载。我检查了使用,

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

但搜索结果为 0。这可能是一个非常简单的问题,但如果有人为我提供加载和验证数据库中数据的正确方法,将会很有帮助。

感谢您的帮助。

【问题讨论】:

  • 您可以通过查看命令参数文档来验证该命令是否实际将数据加载到名为 ycsb 的集合或其他集合中。
  • 是的。正如我在问题中提到的,我尝试使用 db.ycsb.find() 命令在 db ycsb 中查找名为 ycsb 的集合。但它什么也没显示。
  • 日志说加载时有java.lang.NullPointerException异常,能不能再详细点?
  • 我不知道如何让它变得冗长。你能给我命令吗?
  • github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload - 请看看这是否有助于识别需要查看的表。

标签: performance mongodb benchmarking ycsb


【解决方案1】:

问题在于我在加载数据时没有指定一个必需参数。

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表/集合中的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多