当前位置: 首页 > 工具软件 > YCSB > 使用案例 >

YCSB测试levedb

何灿
2023-12-01

参考文献:

上述两个参考文献提出两种思路利用YCSB对leveldb进行测试,本质上均是将YCSB作为客户端,leveldb作为服务端,文献1利用simplehttp做中间件,文献2利用mapkeeper做中间件,文献2的过程太过繁琐,因此本文采用文献1的方法,但文献2的一些测试步骤依然可取。

YCSB的逻辑思路可以参考文献3的YCSB源码分析。

准备工作

编译leveldb,并且复制libleveldb.a/usr/local/lib,复制include/leveldb/usr/local/include

cp ./out-static/libleveldb.a /usr/local/include/
sudo cp -R ./include/leveldb/ /usr/local/lib

安装依赖库 JSON

 apt install libjson-c-dev

若进行压缩测试的话,则安装Snappy

apt install libsnappy-dev

安装依赖库libevent

需要是1.4的版本,版本下载链接

下面复制于文献1,相应版本号需与下载链接中保持一致。

cd libevent-1.4.14b-stable
./configure && make
sudo make install
sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

安装simplehttp

进入simplehttp/simplehttp

cd simplehttp
make
sudo make install

安装simpleleveldb

修改simpleleveldb的include和Makefile

## 文件 str_list_set.c 和 simpleleveldb.c

#include <json-c/json.h>

## Makefile

LIBS = -L. -L$(LIBSIMPLEHTTP_LIB) -L$(LIBEVENT)/lib -L/usr/local/lib -L$(LIBLEVELDB)/lib -levent -ljson-c -lsimplehttp -lleveldb -lm -lstdc++ -lsnappy -lpthread

安装

cd simpleleveldb
env LIBLEVELDB=/usr/local make
sudo make install

安装并允许YCSB客户端

git clone https://github.com/jtsui/ycsb-leveldb.git
cd ycsb-leveldb
mvn -pl com.yahoo.ycsb:leveldb-binding -am clean package

测试

./ycsb load leveldb -P workloads/workloada
./ycsb run leveldb -P workloads/workloada

注意: ycsb默认使用python2

可能出现的错误

  1. JAVA_HOME:
    https://docs.oracle.com/cd/E19182-01/821-0917/inst_jdk_javahome_t/index.html

Step:

  1. levelDB:
make clean && make
cp out-static/libleveldb.a /usr/local/lib/
cp -r include/leveldb /usr/local/include/
  1. simplehttp:
    2.1 compile and make
    in simplehttp/simpleleveldb
make clean
env LIBLEVELDB=/usr/local make
make install

2.2 run as server

simpleleveldb --address=localhost --port=8080 --db-file=test

# options:
  --address=<str>        address to listen on
                         default: 0.0.0.0
  --block-size=<int>     block size
                         default: 4096
  --compression=True|False snappy compression
  --create-db-if-missing=True|False Create leveldb file if missing
  --daemon               daemonize process
  --db-file=<str>        path to leveldb file
  --enable-logging       request logging
  --error-if-db-exists   Error out if leveldb file exists
  --group=<str>          run as this group
  --help                 list usage
  --leveldb-max-open-files=<int> leveldb max open files
                         default: 4096
  --paranoid-checks=True|False leveldb paranoid checks
  --port=<int>           port to listen on
                         default: 8080
  --root=<str>           chdir and run from this directory
  --user=<str>           run as this user
  --version              0.1
  --write-buffer-size=<int> write buffer size
                         default: 4194304
  1. ycsb-leveldb
    3.1 compile and make
mvn -pl com.yahoo.ycsb:leveldb-binding -am clean package

3.2 test as client

./ycsb load leveldb -P workloads/workloada
./ycsb run leveldb -P workloads/workloada
 类似资料: