YCSB
一、背景概念
英文全称:Yahoo!CloudServing Benchmark(YCSB)。是Yahoo公司的一个用来对云服务进行基础测试的工具。目标是促进新一代云数据服务系统的性能比较。为四个广泛使用的系统:Cassandra、HBase、PNUTS和一个简单的片式MySQL执行,订了套核心基础测试和结果报告。
二、资源获取
首先在官网上下载源码编译或者直接下载软件包
https://github.com/brianfrankcooper/YCSB/releases/tag/0.10.0
编译的话需要maven工程和其他资源包的依赖比较麻烦,建议直接下载软件包。
补充一点编译的内容:
下载好最新源码
解压到本地并进入源码根目录YCSB-0.10.0
如果想编译出完整版的话直接输入
mvn clean package
编译成功的话,在YCSB-0.10.0/distribution目录下会有对应的ycsb的压缩包,拷贝解压即可使用
这种方法编译出的完整版ycsb适用于多种数据库所以依赖的库太多,目标文件太大,耗费时间太长,不建议用这种方式编译。
建议单独编一个只用于测试某个数据库(例如hbase)的ycsb可输入
mvn -pl com.yahoo.ycsb:hbase10-binding -am clean package #我就是用这种方法编的
编译结果节选:
….. [INFO] Building tar: /opt/YCSB-0.10.0/hbase10/target/ycsb-hbase10-binding-0.10.0.tar.gz [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] YCSB Root ......................................... SUCCESS [1.903s] [INFO] Core YCSB ......................................... SUCCESS [8.384s] [INFO] Per Datastore Binding descriptor .................. SUCCESS [0.497s] [INFO] YCSB Datastore Binding Parent ..................... SUCCESS [0.582s] [INFO] HBase 1.0 DB Binding .............................. SUCCESS [51.209s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1:03.143s [INFO] Finished at: Sat Jul 09 11:30:05 PHT 2016 [INFO] Final Memory: 52M/1694M [INFO] ------------------------------------------------------------------------
|
这种方法编译成功的话,在YCSB-0.10.0/hbase10/target 目录下会有
ycsb-hbase10-binding-0.10.0.tar.gz 压缩包即我们的目标文件,解压之后即可使用
环境中的mvn仓库使用的是172.7.1.216上的资源,在实际编译的过程中会遇到依赖包不匹配或者依赖包不存在的问题,可以手动的在search.maven.org上去搜索下载相应的资源放在本地的~/.m2/repository/ 的对应目录下即可
我们这里测的是hbase所以就是直接下载了ycsb-hbase10-binding-0.10.0.tar.gz(注意这个只是对hbase10即hbase1.0的适用,官网上有一个对所有数据库全适用的软件包,300M太大了网络不好没有必要去下)使用。
三、配置与使用
这里首先要去检查下hbase-site.xml中的配置是否正确,不然在运行ycsb时会报错
<property> <name>hbase.regionserver.global.memstore.size</name> <value>0.4</value> </property> . . . <property> <name>hfile.block.cache.size</name> <value>0.2</value> </property>
|
将下载好的ycsb-hbase10-binding-0.10.0.tar.gz解压使用
目录结构:
[root@node1 ycsb-hbase10-binding-0.10.0]# ll total 24 drwxr-xr-x 2 root root 46 Jul 8 15:12 bin drwxr-xr-x 2 root root 4096 Jul 8 15:12 lib -rw-r--r-- 1 root root 8082 Jul 7 20:45 LICENSE.txt -rw-r--r-- 1 root root 615 Jul 7 20:45 NOTICE.txt -rw-r--r-- 1 root root 5484 Jul 7 20:45 README.md drwxrwxr-x 2 root root 126 Jul 7 20:45 workloads
|
这里额外介绍一下一个完全版本的ycsb的目录结构
[root@node1 ycsb-0.1.4]# ll total 20 drwxrwxrwx 2 501 games 31 Feb 24 2012 bin drwxr-xr-x 3 root root 16 Jul 8 11:49 cassandra-binding -rw-r--r-- 1 501 games 2291 Feb 24 2012 CHANGELOG drwxr-xr-x 3 root root 16 Jul 8 11:49 core drwxr-xr-x 4 root root 27 Jul 8 11:49 gemfire-binding drwxr-xr-x 4 root root 27 Jul 8 11:49 hbase-binding drwxr-xr-x 4 root root 27 Jul 8 11:49 infinispan-binding drwxr-xr-x 4 root root 27 Jul 8 11:49 jdbc-binding -rw-r--r-- 1 501 games 8082 Feb 19 2012 LICENSE.txt drwxr-xr-x 3 root root 29 Jul 8 11:49 mapkeeper-binding drwxr-xr-x 3 root root 16 Jul 8 11:49 mongodb-binding drwxr-xr-x 4 root root 40 Jul 8 11:49 nosqldb-binding -rw-r--r-- 1 501 games 479 Feb 19 2012 NOTICE.txt -rw-r--r-- 1 501 games 952 Feb 24 2012 README drwxr-xr-x 3 root root 16 Jul 8 11:49 redis-binding drwxr-xr-x 2 root root 27 Jul 8 14:38 results drwxr-xr-x 4 root root 27 Jul 8 11:49 voldemort-binding drwxrwxrwx 2 501 games 102 Feb 22 2012 workloads
|
完整版需要手动去拷贝相关hbase库到hbase-binding的lib目录下,并将hbase-site.xml拷贝至hbase-binding的conf目录下。
而我们ycsb-hbase10-binding-0.10.0针对性更强更加精简,在lib目录下面有所需的各种库文件,无需手动从hba