Skip to content
Dave Parfitt edited this page Jul 15, 2013 · 11 revisions

#Testing the Riak YCSB Implementation

TODO

  • scan() needs updating, possibly with 2i instead of MR

###To build:

# Dependencies: Maven, Java 1.6+
git clone https://github.com/basho/YCSB.git
cd YCSB
mvn clean package
# see if the build worked using the "basic" driver (ie not Riak)
./bin/ycsb load basic -P workloads/workloada
./bin/ycsb run basic -P workloads/workloada

###To run against a cluster: Create and specify a comma separated list of ip:ports in a file named riak.props:

riak_cluster_hosts=127.0.0.1:10017, 192.168.1.6:10027, 192.168.1.7:10037

Next, specify the props file as an additional property to load + run:

bin/ycsb load riak-1.3 -P workloads/workloada -P ./path/to/riak.props
bin/ycsb run riak-1.3 -P workloads/workloada -P ./path/to/riak.props

###To run a larger test: Create a file called riak_large.props that contains the following:

riak_cluster_hosts=127.0.0.1:10017, 127.0.0.1:10027, 127.0.0.1:10037, 127.0.0.1:10047  
recordcount=1000009
threadcount=10
target=5000

target is the number of concurrent ops/sec we are trying to achieve

See: Running a workload for more information.

# you may want to start with a fresh install of Riak (or at least clear out the bitcask or leveldb dir)
bin/ycsb load riak-1.3 -P workloads/workloada -P riak_large.props > results_load
bin/ycsb run riak-1.3 -P workloads/workloada -P riak_large.props > results_run

###Index Scan Tests

workloads/workloade does a range scan, which is implemented in Riak using Map/Reduce. To allow this test to run, you'll need to enable LevelDB in Riak, and use the config option in your test properties:

riak_use_2i=true

Both tests phases use this param (load + run).

Clone this wiki locally