参考 https://github.com/cloudius-systems/osv/wiki/Benchmarking-Cassandra-and-other-NoSQL-databases-with-YCSB

https://github.com/brianfrankcooper/YCSB/tree/master/cassandra  创建 表头

https://gist.github.com/pbailis/3978273  设置field参数 长度和个数

启动和 redis类似,只不过,参数不同。

比如redis指定主机的参数是 -p "redis.host=127.0.0.1"

而cassandra 是 -p hosts=127.0.0.1

这里hosts为什么是复数,应该是因为cassandra可以有多个服务节点。

在运行测试之前,必须先运行cassrandra客户端手动创建供ycsb使用的数据库和表。

数据库名叫ycsb,表名叫usertable,按照上面的参考进行。

create keyspace ycsb  WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1 };
USE ycsb;
 
create table usertable (
y_id varchar primary key,
field0 varchar,
field1 varchar,
field2 varchar,
field3 varchar,
field4 varchar,
field5 varchar,
field6 varchar,
field7 varchar,
field8 varchar,
field9 varchar);

create table usertable (
y_id varchar primary key,
field0 varchar); 这样在load时需要指定 -p fieldcount=1
ALTER TABLE usertable WITH COMPRESSION = {'sstable_compression': ''}; 

 

 
 

执行load测试后,可以在客户端使用 select * from usertable 查看插入的数据

示例:bin/ycsb load cassandra-cql  -P workloads/workloadc -p "hosts=127.0.0.1"  -p operationcount=90 -p recordcount=1000000 -p fieldlength=100 -p fieldcount=1  -threads 28

其中  -threads 28 表示使用28个线程,注意压力测试必须使用多个线程使服务端浸满,这样才可以类比leveldb的db_bench。

如果只用一个线程,那么客服交互将非常耗时。

如果出现错误,尝试使用cassandra2

bin/ycsb load cassandra2-cql  -P workloads/workloadc -p "hosts=127.0.0.1"  -p operationcount=90 -p recordcount=1000000 -p fieldlength=100 -p fieldcount=1  -threads 28

注意:

如果出现类似

File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

的错误,网上一般说是java没装或jdk版本配置不对。但其实可能是maven没装。

直接运行提示的 mvn 命令就知道了。

05-11 18:14