YCSB是雅虎开源的NoSQL测试工具,本篇以对HBase的调优测试为例介绍其运行流程。
一、准备工作
下载安装: YCSB提供编译后的安装文件,只要下载安装包解压就好。
踩过的坑:
(1) 目前最新的版本为0.11.0。但是我在使用的过程中使用官网推荐的两种方法均不能正常使用:
- 直接下载安装包,解压过程中有文件损坏,文件不完整
- 下载源码包用mvn clean package自编译时,进行到83%之后便不再变化
解决办法:转而使用上一个稳定版本0.10.0。这里给出YCSB各个历史版本的下载索引
(2) 网上很多给出的ycsb的用例都是较早版本的,新版本的命令行参数中数据库对应的参数不再是hbase而是hbase094或者hbase098或者hbase10。分别对应测试数据库版本为0.98.x, 0.98.x, 1.0.x。我的hbase版本是1.2.2,显然不符合以上版本要求
解决办法:命令行使用hbase10,同时将$HBASE_HOME/lib目录下的所有文件拷贝到$YCSB_HOME/hbase10-binding/lib中
二、初探
2.1. 安装后的YCSB目录结构如下:
所有文件可以分为以下几种类型:
- bin,logs,lib,LICENSENSE.txt
是一般软件安装后都有的,作用不赘述 - 红框中的目录:
命名规则均为NOSQL数据库名+’-binding’后缀。这些目录也即表示了YCSB支持的所有的NOSQL数据库类型(当然你也可以按照规范加入新的数据库类型)。每个bindings目录内部都有lib子目录,用于存放YCSB对访问这些数据库所需要的一些jar包依赖。这也是之前提到的我的hbase版本是1.2.2时的,将$HBASE_HOME/lib目录下的所有jar包拷贝到$YCSB_HOME/hbase10-binding/lib中原因。这其实是一种偷懒的做法。另一种做法可以是为hbase1.2.2定制自己的访问接口(有时间再写这部分)。 - workloads目录:
里面包含一些压力测试的场景文件。YCSB自带了6中压力测试场景,文件和相应场景的对应关系如下:
- workloada: 读写均衡型,50%/50% Reads/Writes
- workloadb: 读多写少型,95%/5% Reads / Writes
- workloadc:只读型,100% Reads
- workloadd:读最近写入记录型
- workloade:扫描小区间型
2.1. workload文件说明:
这里给出文件workloada的内容,看下其内容如下:
- recordcound 是YCSB load(加载元数据)命令的参数,默认值1000表示默认加载的记录条数,可以在命令行显示修改该值(后面介绍)。
- Operationcount 是YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。对于workloada这种测试场景,就意味着读数据在500左右,写数据也在50