參考?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 命令就知道了。
?