環境
首先確保安裝了jdk和maven,我個人使用的是openjdk11和maven3,由於本人非常建議使用python版本的ycsb,建議安裝python。ubuntu 18.04下可以使用apt安裝:
apt install openjdk-11-jdk-headless maven python
時代問題
需要注意的是ycsb這個項目蠻老的,用的還是python2,用python3的話親測有語法錯誤。
如果你需要在ycsb中使用mongodb,或者想全部編譯,就需要注意這點,由於mongodb-async-driver已經廢棄了,YCSB無法編譯,如果不想費心思改代碼的話,就需要把這個jar包找到安裝到本地maven,jar包下載:
百度雲下載位置
之后安裝到本地
mvn install:install-file "-Dfile=mongodb-async-driver-2.0.1.jar" "-DgroupId=com.allanbank" "-DartifactId=mongodb-async-driver" "-Dversion=2.0.1" "-Dpackaging=jar"
不加引號的話Linux下沒問題,Windows會有問題。
使用YCSB
不建議使用官方編譯好的版本,建議自己編譯,地址在YCSB,clone的時候建議淺克隆
git clone --depth 1 https://github.com/brianfrankcooper/YCSB
cd YCSB
之后因為需要很多亂七八糟的庫,不建議直接mvn clean package
,部分編譯比較好,
如安裝Redis測試工具,則
mvn -pl site.ycsb:redis-binding -am clean package
對於所有需要jdbc的,則
mvn -pl site.ycsb:jdbc-binding -am clean package
之后,就可以使用ycsb了,因為不管是bat文件還是sh文件,維護都不夠,github上一堆相關issues,建議用python版本,就是./bin/ycsb
,以redis為例,方法為
bin/ycsb load redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379" > redis-load-workloada.log
bin/ycsb run redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379" >redis-run-workloada.log
測jdbc稍微復雜點,需要做以下三件事:
- 在數據庫中創建以下表:
CREATE TABLE usertable (
YCSB_KEY VARCHAR(255) PRIMARY KEY,
FIELD0 TEXT, FIELD1 TEXT,
FIELD2 TEXT, FIELD3 TEXT,
FIELD4 TEXT, FIELD5 TEXT,
FIELD6 TEXT, FIELD7 TEXT,
FIELD8 TEXT, FIELD9 TEXT
);
- 新建一個"db.properties"文件,內容類似於:
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/ycsb
db.user=admin
db.passwd=admin
- 手動指定數據庫Driver的位置
最終命令如下所示
bin/ycsb load jdbc -s -P workloads/workloada -P db.properties -cp mysql-connector-java.jar > mysql-load-workloada.log
bin/ycsb run jdbc -s -P workloads/workloada -P db.properties -cp mysql-connector-java.jar > mysql-run-workloada.log
如果本文中方法有問題可能是更新了,可以看官方YCSB-Redis和YCSB-JDBC。