Giter Site home page Giter Site logo

ycsb's Introduction

YCSB

Build Status

Links

Getting Started

  1. Download the latest release of YCSB:

    curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
    tar xfvz ycsb-0.17.0.tar.gz
    cd ycsb-0.17.0
  2. Set up a database to benchmark. There is a README file under each binding directory.

  3. Run YCSB command.

    On Linux:

    bin/ycsb.sh load basic -P workloads/workloada
    bin/ycsb.sh run basic -P workloads/workloada

    On Windows:

    bin/ycsb.bat load basic -P workloads\workloada
    bin/ycsb.bat run basic -P workloads\workloada

Running the ycsb command without any argument will print the usage.

See https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload for a detailed documentation on how to run a workload.

See https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties for the list of available workload properties.

Building from source

YCSB requires the use of Maven 3; if you use Maven 2, you may see errors such as these.

To build the full distribution, with all database bindings:

mvn clean package

To build a single database binding:

mvn -pl site.ycsb:mongodb-binding -am clean package

ycsb's People

Contributors

allanbank avatar benstopford avatar bigbes avatar brianfrankcooper avatar busbey avatar cmatser avatar cmccoy avatar danielpoltx avatar daschl avatar gse89 avatar jaemyoun avatar jasontedor avatar johanoskarsson avatar jyemin avatar kirill-vlasov avatar kruthar avatar lehmannro avatar manolama avatar mbrukman avatar nitsanw avatar nono avatar risdenk avatar sitano avatar steffenfriedrich avatar stfeng2 avatar sudiptodas avatar toddlipcon avatar uncle-betty avatar westonplatter avatar yuyantingzero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ycsb's Issues

YCSB Client for MongoDB

Hi,

I have been running few benchmark tests on MongoDB in linux environment and using YCSB for data insertion and execution of workloads provided by YCSB.
Execution of workloads a, b & c is fine. When it came to exectution of workloads d & e, I'm facing issue of duplicate key exception.
When I tried again after specifying variable "recordcount" and insertstart" in the workloadd file I got same exception for few seconds and then later execution is successful and .out file is generated with the execution stats.
.out file stats show that 253000 records have been inserted as workloadd has 5% insert operations. But when I checked the record count in the mongodb using the db..count() command, the record count is same as before this execution.
Can you please elaborate why this has happend? If 5% records are inserted as part of workloadd execution in the MongoDB database then the record count also has to increase accordingly??

[documentation] threads paramater does not exist -> threadcount

The documentation often refers to a 'threads' parameter. This parameter does not exist. The 'threadcount' parameter does exist however.

Please fix this, it took me more than a day to figure out why I wasn't sending more than 3500 requests per second to my cluster...

RedisDB issue: Exception in thread "main" java.lang.IllegalArgumentException: hostname can't be null

Hi everyone,

I am trying to run "./bin/ycsb shell redis" to check if I can connect to my RedisDB server through the interactive shell.

However, I encounter this error message.

Exception in thread "main" java.lang.IllegalArgumentException: hostname can't be null
at java.net.InetSocketAddress.(InetSocketAddress.java:139)
at redis.clients.jedis.Connection.connect(Connection.java:119)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:54)
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1657)
at com.yahoo.ycsb.db.RedisClient.init(RedisClient.java:49)
at com.yahoo.ycsb.CommandLine.main(CommandLine.java:210)

any ideas?

Thank you.

Kind regards,
Cornelius

Test issue

Test issue to see how GitHub's issues tracker works

Problem with ant dbcompile-cassandra-0.7

Hi,

I am using ant 1.8.0, on an Ubuntu machine, and I am trying to build db layer for Cassandra.
I have used Cassandra releases 0.7.8 and 0.7.6-2 and 0.7.0 but I constantly getting build failures. I have noticed that there was an already closed issue (issue #25) on this problem, which claims that the problems are solved for the versions I am using.

Below you can see the detailed failure message I am getting.
Any help/hint would be great, as I really wanna use YCSB for benchmarking some KVS systems.

dbcompile:
[javac] /home/pouria/KVS/YCSB/build.xml:63: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /home/pouria/KVS/YCSB/build/classes
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:209: setColumn_names(java.util.List<java.nio.ByteBuffer>) in org.apache.cassandra.thrift.SlicePredicate cannot be applied to (java.util.ArrayList<byte[]>)
[javac] predicate.setColumn_names(fieldlist);
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:213: get_slice(java.nio.ByteBuffer,org.apache.cassandra.thrift.ColumnParent,org.apache.cassandra.thrift.SlicePredicate,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (byte[],org.apache.cassandra.thrift.ColumnParent,org.apache.cassandra.thrift.SlicePredicate,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] List results = client.get_slice(key.getBytes("UTF-8"), parent, predicate,
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:224: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] result.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:224: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] result.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:228: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] System.out.print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:228: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] System.out.print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:310: setColumn_names(java.util.List<java.nio.ByteBuffer>) in org.apache.cassandra.thrift.SlicePredicate cannot be applied to (java.util.ArrayList<byte[]>)
[javac] predicate.setColumn_names(fieldlist);
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:329: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] tuple.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:329: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] tuple.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:334: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] .print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:334: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] .print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:423: cannot find symbol
[javac] symbol : constructor Column(byte[],byte[],long)
[javac] location: class org.apache.cassandra.thrift.Column
[javac] Column col = new Column(field.getBytes("UTF-8"), val.getBytes("UTF-8"), timestamp);
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:433: batch_mutate(java.util.Map<java.nio.ByteBuffer,java.util.Map<java.lang.String,java.util.List<org.apache.cassandra.thrift.Mutation>>>,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (java.util.Map<byte[],java.util.Map<java.lang.String,java.util.List<org.apache.cassandra.thrift.Mutation>>>,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] client.batch_mutate(batch_mutation, ConsistencyLevel.ONE);
[javac] ^
[javac] /home/pouria/KVS/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:485: remove(java.nio.ByteBuffer,org.apache.cassandra.thrift.ColumnPath,long,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (byte[],org.apache.cassandra.thrift.ColumnPath,long,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] client.remove(key.getBytes("UTF-8"), new ColumnPath(column_family), System.currentTimeMillis(),
[javac] ^
[javac] 14 errors

BUILD FAILED

additional stuff and thinking

Hi
I begun to work with ycsb and it is very nice, so first thanks.
While playing around a little to evaluate Cassandra, i noticed the following

  1. There is no support for batch - that is instead of sending values for a certain key it should be possible to send several keys at once.
  2. There is no support for consistency level and replication factor setup
  3. The setup of the db can usually be performed by the benchmark, instead of manually (i know that in the document it was especially written as design purpose, but i think it is still possible to allow a db manager to be invoked at the beginning if the db support it)
  4. It think that the latency bound used is not exact, since there is an extra time used to convert the data created by the workload, to the appropriate structure used by the db and this time is counted as the db operation.
  5. The keys generated by the different threads are the same (for insert), in fact i think that the range of values should be spread among the threads.
    I plan to add support for the above items (1,2,3 and 5), if so are you interested in patches?
    1 - db interface and workload change,
    2 - for cassandra db
    3 - in db interface
    5 - workload interface changes

benchmarking and performance debugging advanced features in scalable table stores

A variety of scalable, semistructured, weak-semantic table stores have been developed and optimized for different priorities such as query speed, ingest speed, availability, and interactivity. As these systems mature, performance benchmarking will advance from measuring the rate of simple workloads to understanding and debugging the performance of advanced features such as ingest speed-up techniques and function shipping filters from client to servers.

We implement a set of extensions to the Yahoo! Cloud Serving Benchmark (YCSB) to improve performance understanding and debugging of these advanced features. The extensions include multi-tester coordination for increased load and eventual consistency measurement, multi-phase workloads to quantify the consequences of work deferment and the benefits of anticipatory configuration optimization such as B-tree pre-splitting or bulk loading, and abstract APIs for explicit incorporation of advanced features in benchmark tests. To enhance performance debugging, we customized an existing cluster monitoring tool to gather the internal statistics of YCSB, table stores, system services like HDFS, and operating systems, and to offer easy post-test correlation and reporting of performance behaviors.

Get "hosts" missing for CassandraClient Exception

When I attempt to load the data in Cassandra-0.7, I get the previous exception. What's wrong with my operation? I started Cassandra, and there were corresponding keyspace and column family inside it. Should I modify some configuration information?

Make YCSB compatible with Java 1.5

Client.java uses Properties.stringPropertyNames() which is 1.6 only. Remove this call, and investigate any other incompatibilities with 1.5, so YCSB can be compiled in 1.5 environments.

HBase 0.92.1

As I was not able to make YCSB working with the binaries from the download section, I tried to build YCSB against HBase 0.92.1 myself. For this I had to adjust the following things to make the maven build work:

In the root pom.xml: Set the hbase.version property to 0.92.1

In the hbase-binding pom.xml I had to add the following dependency:

org.apache.hadoop hadoop-core 1.0.2

Using the downloadable binaries from here, the exception I got was something like:

"Not a host:port pair"

Maybe this can be usefull for somebody.

ycsb on hbase fails with java.io.EOFException

Hi,

I am trying to install ycsb for benchmarking hbase.

./bin/ycsb load hbase -p columnfamily=family -P workloads/workloada > /tmp/loaddata.tmp

Loading workload...
Starting test.
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.3-1240972, built on 02/06/2012 10:48 GMT
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:host.name=<..hostname..>
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.version=1.6.0_24
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Sun Microsystems Inc.
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.home=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.class.path=/<..path..>/ycsb-0.1.4/hbase-binding/conf:/<..path..>/ycsb-0.1.4/hbase-binding/lib/hbase-binding-0.1.4.jar:/<..path..>/ycsb-0.1.4/core/lib/core-0.1.4.jar:/<..path..>/ycsb-0.1.4/voldemort-binding/conf:/<..path..>/ycsb-0.1.4/jdbc-binding/conf:/<..path..>/ycsb-0.1.4/infinispan-binding/conf
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.library.path=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=/tmp
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:java.compiler=
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:os.name=Linux
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:os.version=2.6.32-279.el6.x86_64
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:user.name=hbase
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:user.home=/var/run/hbase
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Client environment:user.dir=/<..path..>/ycsb-0.1.4
13/05/15 11:31:50 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=<..hostname..>:2181 sessionTimeout=180000 watcher=hconnection
13/05/15 11:31:50 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 24314@<..hostname..>
13/05/15 11:31:50 INFO zookeeper.ClientCnxn: Opening socket connection to server /:2181
13/05/15 11:31:50 INFO client.ZooKeeperSaslClient: Client will not SASL-authenticate because the default JAAS configuration section 'Client' could not be found. If you are not using SASL, you may ignore this. On the other hand, if you expected SASL to work, please fix your JAAS configuration.
13/05/15 11:31:50 INFO zookeeper.ClientCnxn: Socket connection established to <..hostname..>/<..IP..>:2181, initiating session
13/05/15 11:31:50 INFO zookeeper.ClientCnxn: Session establishment complete on server <..hostname..>/<..IP..>:2181, sessionid = 0x3ea192c11c1bff, negotiated timeout = 180000

Error accessing HBase table: java.io.IOException: Call to <..hostname..>/<..IP..>:60020 failed on local exception: java.io.EOFException

My HBase+Zookeeper is running fine and i am able to perform all operations on it. The problem arises only when i use YCSB.

Some background info:

netstat -ntpl | grep 60020

tcp 0 0 ::ffff: :60020 :::* LISTEN 115262/java

created user table with,

hbase org.apache.hadoop.hbase.util.RegionSplitter usertable UniformSplit -c 200 -f family

Can someone point me in the right direction?

Thanks in advance for the help!

-Manoj

Building YCSB code

Hi,

I was trying to build the YCSB code in Ubuntu 12 64 bit and came across a lot of issues. There were a few packages missing. I have installed Maven 2 and all its dependencies. It is now complaining of some java jar files missing in classpath like slf4j etc. Can you please give me some information as to what should I do.

Also, I want the MongoDB version built only. Is there some build time flags that I can use?

Thanks and Regards,
Mainak.

cleanup code for HBase client

We got a bug report from Tatsuya Kawano on the HBase list. He points out that the last few inserts done on HBase are not flushed, without some explicit flushing code. His suggestion for the cleanup function is below. The fix looks correct to me and we should adopt it.

public void cleanup() throws DBException {
try {
if (_hTable != null) {
_hTable.flushCommits();
}
} catch (IOException e) {
throw new DBException(e);
}
}

Consider adding "insert_or_overwrite" call to DB

Rusty suggested that some databases could optimize blind writes by logging the change without reading the old value. But to do so, you need to tell the database that the write is intended to obliterate any existing records with the same key. A new call is needed to do this.

Client.java - Thread Throughput

If per thread throughput per ms (_target) is greater than 1 [possible scenario], line 212 of Client.java throws an Exception since random.nextInt(0) is not allowed.

Sub-Millisecond latencies are reported as taking 0 milliseconds

Many NoSQL databases are able to produce responses in less than a millisecond. When this happens YCSB places the result in the 0 millisecond slot in the histogram array and the latency value not increased (since the latency is reported as zero) and the operations variable is incremented. As a result this causes data for some datastores to be skewed. I suggest using System.nanoTime() and then dividing by 1000 to get the time in microseconds. The histogram will still look the same, but the average latency reported will be much more accurate. Then the documentation could be updated to say that when reading the histogram the value for each slot is between the time of that slot and the next greatest slots time. For example, if there were 1000 operations that were recorded in the 0 slot in the histogram then we would interpret that as "1000 operation completed in less than 1 millisecond, but greater than 0 milliseconds.

Also, for machines that cannot produce time results in the microsecond range we could log a warning that says that that granularity is not supported. I can also submit a patch for this if you are open to the idea.

Cassandra - FamilyColumn="data"'

in your files for running the db cassandra, you force to have only one familycolumn seted to "data". We can't work with more columnfamily. What a pitty. I'm working on extending it for my tests !

issues running ycsb client

I am having issues running the YCSB shell. When i run any shell command, the J2SE binary dies. Any inputs. ?Please let me know if you need any more details. I am trying to run the YCSB Shell on a windows machine

dbcompile-cassandra-0.7 errors

I use the latest version of YCSB to connect to the cassandra (0.7.10) with ant 1.8.2 and jdk 1.6, but get some errors:

dbcompile:
[javac] /home/mangobatao/Downloads/YCSB/build.xml:63: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /home/mangobatao/Downloads/YCSB/build/classes
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:209: setColumn_names(java.util.List<java.nio.ByteBuffer>) in org.apache.cassandra.thrift.SlicePredicate cannot be applied to (java.util.ArrayList<byte[]>)
[javac] predicate.setColumn_names(fieldlist);
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:213: get_slice(java.nio.ByteBuffer,org.apache.cassandra.thrift.ColumnParent,org.apache.cassandra.thrift.SlicePredicate,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (byte[],org.apache.cassandra.thrift.ColumnParent,org.apache.cassandra.thrift.SlicePredicate,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] List results = client.get_slice(key.getBytes("UTF-8"), parent, predicate,
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:224: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] result.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:224: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] result.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:228: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] System.out.print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:228: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] System.out.print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:310: setColumn_names(java.util.List<java.nio.ByteBuffer>) in org.apache.cassandra.thrift.SlicePredicate cannot be applied to (java.util.ArrayList<byte[]>)
[javac] predicate.setColumn_names(fieldlist);
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:329: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] tuple.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:329: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] tuple.put(new String(column.name), new String(column.value));
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:334: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] .print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:334: cannot find symbol
[javac] symbol : constructor String(java.nio.ByteBuffer)
[javac] location: class java.lang.String
[javac] .print("(" + new String(column.name) + "=" + new String(column.value) + ")");
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:423: cannot find symbol
[javac] symbol : constructor Column(byte[],byte[],long)
[javac] location: class org.apache.cassandra.thrift.Column
[javac] Column col = new Column(field.getBytes("UTF-8"), val.getBytes("UTF-8"), timestamp);
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:433: batch_mutate(java.util.Map<java.nio.ByteBuffer,java.util.Map<java.lang.String,java.util.List<org.apache.cassandra.thrift.Mutation>>>,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (java.util.Map<byte[],java.util.Map<java.lang.String,java.util.List<org.apache.cassandra.thrift.Mutation>>>,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] client.batch_mutate(batch_mutation, ConsistencyLevel.ONE);
[javac] ^
[javac] /home/mangobatao/Downloads/YCSB/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:485: remove(java.nio.ByteBuffer,org.apache.cassandra.thrift.ColumnPath,long,org.apache.cassandra.thrift.ConsistencyLevel) in org.apache.cassandra.thrift.Cassandra.Client cannot be applied to (byte[],org.apache.cassandra.thrift.ColumnPath,long,org.apache.cassandra.thrift.ConsistencyLevel)
[javac] client.remove(key.getBytes("UTF-8"), new ColumnPath(column_family), System.currentTimeMillis(),
[javac] ^
[javac] 14 errors

I see other people have the same problems, could someone tell me how could I solve this kind of problem?

How can I use YCSB to evaluate Oracle's performance?

I have set the classpath included with 'ojdbc14' and I also move it to the directory ~/ycsb-0.1.4/jdbc-binding/lib.

I have create a table called 'usertable' in oracle.When use the command
./ycsb load jdbc -P ../workloads/workloada -p threads=1 -p columnfamily=f1 -p recordcount=10000 -s > load.dat

issues appeared as below:

Loading workload...
Starting test.
0 sec: 0 operations;
Error in database operation: java.sql.SQLException: No suitable driver found for
com.yahoo.ycsb.DBException: java.sql.SQLException: No suitable driver found for
at com.yahoo.ycsb.db.JdbcDBClient.init(JdbcDBClient.java:203)
at com.yahoo.ycsb.DBWrapper.init(DBWrapper.java:63)
at com.yahoo.ycsb.ClientThread.run(Client.java:189)
Caused by: java.sql.SQLException: No suitable driver found for
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.yahoo.ycsb.db.JdbcDBClient.init(JdbcDBClient.java:187)
... 2 more
0 sec: 0 operations;

my conf file under /jdbc-binding:
[hadoopcdh@mastersrv conf]$ cat db.properties

Properties file that contains database connection information.

jdbc.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@192.168.1.65:1521:kakou
db.user=kakou
db.passwd=kakou
[hadoopcdh@mastersrv conf]$ cat h2.properties

Properties file that contains database connection information.

jdbc.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@192.168.1.65:1521:kakou
db.user=kakou
db.passwd=kakou

java.lang.NullPointerException while loading/running workload on MongoDB

Hello,
i'm having problems benchmarking MongoDB with YCSB.

This is what i've done:
1)installed MongoDB (2.0.4) and started bin/mongod (i can connect with shell to this instance)
2)git clone .../YCSB.git and then "mvn clean package". Build was successful.

Loading workload ends with this:
[root@serv1 YCSB]# bin/ycsb load mongodb -P workloads/workloada -p mongodb.url=mongodb://localhost:27017 -p mongodb.database=mytestdb -p debug=true -s > s1.txt (s1.txt content is here: http://pastebin.com/QNLLB1K4)
Loading workload...
Starting test.
0 sec: 0 operations;
java.lang.NullPointerException
0 sec: 0 operations; [INSERT AverageLatency(us)=28605]

Starting workload ends with this:
[root@serv1 YCSB]# bin/ycsb run mongodb -P workloads/workloada -p mongodb.url=mongodb://localhost:27017 -p mongodb.database=mytestdb -p debug=true -s > s2.txt (http://pastebin.com/7G0iHUQr)
Loading workload...
Starting test.
0 sec: 0 operations;
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
...
...
java.lang.NullPointerException
java.lang.NullPointerException
1 sec: 1000 operations; 759.3 current ops/sec; [UPDATE AverageLatency(us)=609.74] [READ AverageLatency(us)=1300.77]

I got benchmark running on cassandra, redis, hbase so far. I spent countless hours trying to figure out what do i do wrong with MongoDB.

consistent logging

I like to clean up logging so that it's consistent across all the db drivers.

--Michi

Better model of request rates?

Rusty pointed out that if we have a fixed number of client threads (say, 100), and the database is slow or down for a short period, then those 100 threads will wait and we'll see high latencies for 100 requests. But in reality, a real application would have a larger number of users with waits or timeouts, because they'll be waiting on the app server for a thread or a process but can't get one because all the threads/processes are busy. So we could enhance the request rate model to track requests that would have executed in a given time tick, but cannot because all the YCSB threads are busy. Possibly, this is equivalent to counting the number of requests that would have been executed by a given thread in a given 1 second period, but could not because the thread was waiting for the database.

Some doubts

Hi! I am just starting to use YCSB. I want to create a new DBClient but it seems that the documentation regarding this issue it is not up to date in the wiki.

I cannot even execute:
java com.yahoo.ycsb.CommandLine -db com.yahoo.ycsb.db.MongoDbClient -p mongodb.url=mongodb://localhost:27017 -p mongodb.database=ycsb

Sorry for my ignorance.

root cause of unknown column 'YCSB_KEY'

When I used ycsb to run against mysql through jdbc, it throws error com.mysql.jdbc.exceptioinsert v2key ip=vip ountry=vc v2 field3=v3 field4=vvv4 field5=v5 field6=v6 field7=v7 field8=v8 field9=v9
ns.jdbc4.MySQLSyntaxErrorException: Unknown column 'YCSB_KEY' in 'where clause'. what is the root cause of it?

MongoDB client throwing NullPointerException

Hi,

I'm trying to run some MongoDB tests and I keep running into a NullPointerException without a stack trace. I tried building from source, which fails as well, but that's a different bug report (similar to issue #96)

$ ./bin/ycsb load mongodb -P workloads/workloada -P test1.dat -s > load.dat
Loading workload...
Starting test.
 0 sec: 0 operations;
java.lang.NullPointerException
 0 sec: 0 operations; [INSERT AverageLatency(us)=20256]

test1.dat contains

threadcount=1
mongodb.url=localhost:27017
mongodb.maxconnections=10
mongodb.writeConcern=safe
mongodb.database=ycsb

In MongoDbClient.java, all exceptions are caught, printed and ignored, so I have no way of finding out which piece of code throws this error.

How is read implemented

I'm able to load a workload without problems, but when I'm running it I get unexpected results. Read takes 1000x more time than an update/insert record. How are the keys for read() generated? If they are randomized on the fly that would be an explanation since a "MISS" takes much more time than a "HIT".

update method in JdbcDBClient.java

In update method of JdbcDBClient.java, following lines of code get values from a map in order of entries:
for (Map.Entry<String, ByteIterator> entry : values.entrySet()) {
updateStatement.setString(index++, entry.getValue().toString());
}
Since, Map does not guarantee order of entries, though, it doesn't make a big difference for usertable as all the columns are of the same type, varchar and random values are passed, however, while verification, corresponding values are not reflected . It would be good to get the corresponding values from the map for desired fields.

Following is a excerpt from update() method:

public int update(String tableName, String key, HashMap<String, ByteIterator> values) {
........
.......
PreparedStatement updateStatement = cachedStatements.get(type);
....
......
int index = 1;
for (Map.Entry<String, ByteIterator> entry : values.entrySet()) {
updateStatement.setString(index++, entry.getValue().toString());
}
updateStatement.setString(index, key);

Cassandra Support

Hi,

I noticed that in the Cassandra Client patch 5 months ago (012873a),
the Cassandra client version was downgraded from 1.0.7 to 0.7.0, in order to ensure backward compatibility in compiling CassandraClient7.java and CassandraClient8.java.

I was wondering if using the older version of the client wouldn't be ideal for benchmarking purposes?

Thanks,
minghan

Cassandra1.06:InvalidRequestException(why:Keyspace user table doesn't exist)

Hi m1ch1 and everyone,

I am trying out ycsb with mongdodb and have managed to benchmark it with the help of my own perl script.

However, now that I am benchmarking cassandra v1.0.6 in that same perl script, I encountered this error with not much of a help.

Loading workload...
Starting test.
0 sec: 0 operations;
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
InvalidRequestException(why:Keyspace usertable does not exist)
at org.apache.cassandra.thrift.Cassandra$set_keyspace_result.read(Cassandra.java:4816)
at org.apache.cassandra.thrift.Cassandra$Client.recv_set_keyspace(Cassandra.java:451)
at org.apache.cassandra.thrift.Cassandra$Client.set_keyspace(Cassandra.java:426)
at com.yahoo.ycsb.db.CassandraClient10.insert(CassandraClient10.java:437)
at com.yahoo.ycsb.DBWrapper.insert(DBWrapper.java:145)
at com.yahoo.ycsb.workloads.CoreWorkload.doInsert(CoreWorkload.java:461)
at com.yahoo.ycsb.ClientThread.run(Client.java:269)
0 sec: 0 operations; [INSERT AverageLatency(us)=25297]

any ideas, please?

Thank you.

Kind Regards,
Cornelius

Mavenise the build infrastructure

With Maven, the dependency management can be easier and cleaner.
The DB libraries can be configured & compiled with default versions(latest).
There is always an option to override with custom or lower versions as desired.

Less no of records being inserted in cassandra DB

Hi,
I am trying to insert 1 Billion records to stress test Cassandra DB using multiple ycsb clients. I observe that less than 1 Billion records are inserted when i sum up the insert record count from each individual client. Is it a know issue with ycsb?? there is a loss of about 100 to 500 records overall.

All subsequent Cassandra inserts fail after one insert fails due to an UnavailableException

This is the first time I am submitting an issue and my explanation may seem convoluted. I apologize before hand for the same. Feel free to edit the contents of this description.

There is an error in the Cassandra driver which causes all inserts to fail after one insert fails due to UnavailableException (the execption that occurs when not enough nodes are up to serve the write request with a consistency level which is not ANY). Please refer to the src file: cassandra/src/main/java/com/yahoo/ycsb/db/CassandraClient10.java

The problem is that the Cassandra client stores all the mutations that it needs to perform on the columns of one key as one operation in List mutations, Map<String, List> mutationMap and Map<ByteBuffer, Map<String, List>> record member variables (Line 89-91).

After an insert is performed, these variable have to be cleared (Line 479-481). However if an exception is thrown in the client.batch_mutate(record, writeConsistencyLevel) call (Line 477) then these variables don't get cleared as the flow directly jumps to the corresponding catch block.

Since these variables are not cleared, the next batch_mutate also causes all subsequent writes to fail because though it adds new writes to mutation variables, it still tries to perform the old failed mutation again and again which is not going to succeed as not enough nodes are up.

Error in 'ant dbcompile-cassandra-0.7'

I'm using Ant 1.8.2, I googled and it is possible the following problem is related to this specific ant version.
I have copied all cassandra jars in db/cassandra-0.7/lib/.
Executing 'ant' is ok, executing 'ant dbcompile-cassandra-0.7' gives the following (sorry if this is an-easy-to-fix error but Im not keen on java/ant):

compile:

makejar:

dbcompile-cassandra-0.7:

dbcompile:
[javac] /index/YCSB-0.1.3-0-geb1597f/build.xml:63: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /index/YCSB-0.1.3-0-geb1597f/build/classes
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:37: package org.apache.cassandra.thrift does not exist
[javac] import org.apache.cassandra.thrift.*;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:67: package Cassandra does not exist
[javac] Cassandra.Client client;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:104: package Cassandra does not exist
[javac] client = new Cassandra.Client(proto);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:135: cannot find symbol
[javac] symbol : class AuthenticationRequest
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] AuthenticationRequest req = new AuthenticationRequest(cred);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:135: cannot find symbol
[javac] symbol : class AuthenticationRequest
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] AuthenticationRequest req = new AuthenticationRequest(cred);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:189: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SlicePredicate predicate;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:193: cannot find symbol
[javac] symbol : class SliceRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SliceRange sliceRange = new SliceRange();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:193: cannot find symbol
[javac] symbol : class SliceRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SliceRange sliceRange = new SliceRange();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:198: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] predicate = new SlicePredicate();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:208: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] predicate = new SlicePredicate();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:212: cannot find symbol
[javac] symbol : class ColumnParent
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnParent parent = new ColumnParent(column_family);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:212: cannot find symbol
[javac] symbol : class ColumnParent
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnParent parent = new ColumnParent(column_family);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:213: cannot find symbol
[javac] symbol : class ColumnOrSuperColumn
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] List results = client.get_slice(key.getBytes("UTF-8"), parent, predicate,
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:214: cannot find symbol
[javac] symbol : variable ConsistencyLevel
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ConsistencyLevel.ONE);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:221: cannot find symbol
[javac] symbol : class ColumnOrSuperColumn
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] for (ColumnOrSuperColumn oneresult : results)
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:223: cannot find symbol
[javac] symbol : class Column
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Column column = oneresult.column;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:293: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SlicePredicate predicate;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:296: cannot find symbol
[javac] symbol : class SliceRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SliceRange sliceRange = new SliceRange();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:296: cannot find symbol
[javac] symbol : class SliceRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] SliceRange sliceRange = new SliceRange();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:300: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] predicate = new SlicePredicate();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:309: cannot find symbol
[javac] symbol : class SlicePredicate
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] predicate = new SlicePredicate();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:312: cannot find symbol
[javac] symbol : class ColumnParent
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnParent parent = new ColumnParent(column_family);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:312: cannot find symbol
[javac] symbol : class ColumnParent
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnParent parent = new ColumnParent(column_family);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:313: cannot find symbol
[javac] symbol : class KeyRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] KeyRange kr = new KeyRange().setStart_key(startkey.getBytes("UTF-8")).setEnd_key(new byte[] {}).setCount(recordcount);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:313: cannot find symbol
[javac] symbol : class KeyRange
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] KeyRange kr = new KeyRange().setStart_key(startkey.getBytes("UTF-8")).setEnd_key(new byte[] {}).setCount(recordcount);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:315: cannot find symbol
[javac] symbol : class KeySlice
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] List results = client.get_range_slices(parent, predicate, kr, ConsistencyLevel.ONE);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:315: cannot find symbol
[javac] symbol : variable ConsistencyLevel
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] List results = client.get_range_slices(parent, predicate, kr, ConsistencyLevel.ONE);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:322: cannot find symbol
[javac] symbol : class KeySlice
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] for (KeySlice oneresult : results)
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:326: cannot find symbol
[javac] symbol : class ColumnOrSuperColumn
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] for (ColumnOrSuperColumn onecol : oneresult.columns)
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:328: cannot find symbol
[javac] symbol : class Column
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Column column = onecol.column;
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:414: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Map<byte[], Map<String, List>> batch_mutation = new HashMap<byte[], Map<String, List>>();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:414: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Map<byte[], Map<String, List>> batch_mutation = new HashMap<byte[], Map<String, List>>();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:415: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ArrayList v = new ArrayList(values.size());
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:415: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ArrayList v = new ArrayList(values.size());
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:416: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Map<String, List> cfMutationMap = new HashMap<String, List>();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:416: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Map<String, List> cfMutationMap = new HashMap<String, List>();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:423: cannot find symbol
[javac] symbol : class Column
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Column col = new Column(field.getBytes("UTF-8"), val.getBytes("UTF-8"), timestamp);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:423: cannot find symbol
[javac] symbol : class Column
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Column col = new Column(field.getBytes("UTF-8"), val.getBytes("UTF-8"), timestamp);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:425: cannot find symbol
[javac] symbol : class ColumnOrSuperColumn
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnOrSuperColumn c = new ColumnOrSuperColumn();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:425: cannot find symbol
[javac] symbol : class ColumnOrSuperColumn
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ColumnOrSuperColumn c = new ColumnOrSuperColumn();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:428: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Mutation m = new Mutation();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:428: cannot find symbol
[javac] symbol : class Mutation
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] Mutation m = new Mutation();
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:433: cannot find symbol
[javac] symbol : variable ConsistencyLevel
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] client.batch_mutate(batch_mutation, ConsistencyLevel.ONE);
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:485: cannot find symbol
[javac] symbol : class ColumnPath
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] client.remove(key.getBytes("UTF-8"), new ColumnPath(column_family), System.currentTimeMillis(),
[javac] ^
[javac] /index/YCSB-0.1.3-0-geb1597f/db/cassandra-0.7/src/com/yahoo/ycsb/db/CassandraClient7.java:486: cannot find symbol
[javac] symbol : variable ConsistencyLevel
[javac] location: class com.yahoo.ycsb.db.CassandraClient7
[javac] ConsistencyLevel.ONE);
[javac] ^
[javac] 45 errors

BUILD FAILED
/index/YCSB-0.1.3-0-geb1597f/build.xml:30: The following error occurred while executing this line:
/index/YCSB-0.1.3-0-geb1597f/build.xml:63: Compile failed; see the compiler error output for details.

Total time: 1 second

IllegalArgumentException with MongoDB

Hi!
I've installed YCSB and MongoDB 1.8.1 (and later on 1.4.2), and tried to execute a workload according to the steps in the "Running a Workload" wiki page, but couldn't get it working.

I successfully tested YCSB with Cassandra, so I'm guessing the problem must be related to the MongoDB driver for YCSB.

Here are my steps:

  1. Install and run MongoDB 1.8.1 on localhost (later on I also tried with version 1.4.2, but got the same results)
  2. Setup YCSB according the Getting Started wiki
  3. Attempt to execute workload "workloada" using:

$ java com.yahoo.ycsb.Client -load -db com.yahoo.ycsb.db.MongoDbClient -P workload/workloada -P mongo.opt

where the mongo.opt contains:

recordcount=1000000
mongodb.database=mytestdb
mongodb.url=mongodb://localhost:27017

The output I get (truncated):

YCSB Client 0.1
Command line: -load -db com.yahoo.ycsb.db.MongoDbClient -P workloads/workloada -P mongo.opt
Loading workload...
Starting test.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/roi.avidan/YCSB/db/mongodb/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/roi.avidan/YCSB/db/mongodb/lib/slf4j-simple-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
2 [Thread-1] ERROR com.yahoo.ycsb.db.MongoDbClient - java.lang.IllegalArgumentException: invalid ObjectId [user1268118805]
java.lang.IllegalArgumentException: invalid ObjectId [user1268118805]
at org.bson.types.ObjectId.(ObjectId.java:130)
at org.bson.types.ObjectId.(ObjectId.java:124)
at com.yahoo.ycsb.db.MongoDbClient.insert(Unknown Source)
at com.yahoo.ycsb.DBWrapper.insert(Unknown Source)
at com.yahoo.ycsb.workloads.CoreWorkload.doInsert(Unknown Source)
at com.yahoo.ycsb.ClientThread.run(Unknown Source)
[OVERALL], RunTime(ms), 430.0
[OVERALL], Throughput(ops/sec), 2325581.395348837
[INSERT], Operations, 1
[INSERT], AverageLatency(ms), 15.0
[INSERT], MinLatency(ms), 15
[INSERT], MaxLatency(ms), 15
[INSERT], 95thPercentileLatency(ms), 15
[INSERT], 99thPercentileLatency(ms), 15
[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], 11, 0
[INSERT], 12, 0
[INSERT], 13, 0
[INSERT], 14, 0
[INSERT], 15, 1
[INSERT], 16, 0
[INSERT], 17, 0
[INSERT], 18, 0
[INSERT], 19, 0
[INSERT], 20, 0
[INSERT], 21, 0
[INSERT], 22, 0
[INSERT], 23, 0
[INSERT], 24, 0
[INSERT], 25, 0
[INSERT], 26, 0
[INSERT], 27, 0
[INSERT], 28, 0
[INSERT], 29, 0
[INSERT], 30, 0

What am I doing wrong?

Thanks in advance,

Roi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.