环境

首先确保安装了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-RedisYCSB-JDBC

05-11 09:39