2015-01-06 22:43:00
来 源
中存储网
HBase
测试工具 YCSB 的安装     YCSB介绍:YCSB(Yahoo! Cloud Serving Benchmark)是Yahoo开源的一款通用的性能测试工具。可以用于测试多种 NoSQL 产品进行测试。相关说明可以参考 https://github.co

测试工具 YCSB 的安装

YCSB介绍:YCSB(Yahoo! Cloud Serving Benchmark)是Yahoo开源的一款通用的性能测试工具。可以用于测试多种 NoSQL 产品进行测试。相关说明可以参考 https://github.com/brianfrankcooper/YCSB/wiki.

Hadoop参考设计的实现及性能:HBase应用性能测试方法

YCSB的工作原理如上图所示,主要的模块包括workload和DB Interface:

Workload:通过配置文件,定义读写比例,数据的大小等DB Interface:通过接口连接并操作各种Cloud Serving Store,也就是各种NoSQL产品包括HBase在内。在运行YCSB的时候,可以配置不同的workload和DB interface,同时可以定义线程数等其他参数。

安装方式一:直接下载已经编译过的程序包

下载地址:https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4.tar.gz

 

这种方式简单易用。但对于不同的HBase版本,可能会有问题。需要手工编译安装。

安装方式二:源码编译安装

从github下载源码:git clone https://github.com/brianfrankcooper/YCSB.git

配置相应的HBase的版本:修改YCSB/pom.xml,更新hbase.version这个属性。

编译:cd YCSB, mvn install

生成YCSB的程序包:distribution/target/ ycsb-0.1.4.tar.gz

解压:tar xfvz ycsb-0.1.4

1. 测试步骤

a) 配置HBase连接和classpath

最简单的办法是将HBase Server的配置文件{$HBase_home}/conf/hbase-site.xml直接拷贝到YCSB的目录{$YCSB_HOME}/hbase-binding/conf。

将HBase的jar文件拷贝到{$YCSB_HOME} /hbase-binding/lib,这样当执行ycsb命令时,可以保证所需的jar在classpath上。

b) YCSB命令简介

Hadoop参考设计的实现及性能:HBase应用性能测试方法

直接执行ycsb命令,可以看到用法的介绍,主要有3类的参数:

Commands:执行什么命令,load-加载数据,run-运行测试,shell-交互模式;

Databases:使用什么DB Interface;

Options:包括属性参数和线程参数。

https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties

参考以上的链接,可以发现workload的核心属性参数。

c) 加载数据

bin/ycsb load hbase -P workloads/workloada -p columnfamily=f1 -p recordcount=10000 -s -threads 10

向HBase Server下的usertable,f1插入10000条数据,并将执行的情况打印到屏幕上。对于HBase数据库,数据是以字节码数组byte[]的方式进行读取,对于不同的数据源,无论是车牌号这种String类型的,还是电子图片这种Binary类型的,在从HBase数据库读取的时候都是以byte[]类型,不同的是数组的长度。

对于一个“京K12345”的车牌,它的长度是8位,对于一个5M左右的图片,它的长度是2326122。我们可以通过workload的核心属性fieldlength来设置。

d) 性能测试

YCSB自带有6中workload配置文件,模拟不同的压力场景

Hadoop参考设计的实现及性能:HBase应用性能测试方法

Hadoop参考设计的实现及性能:HBase应用性能测试方法

以上是workloadc的内容,模拟的是100% read操作的场景。

bin/ycsb run hbase -P workloads/workloadc -p columnfamily=f1 -s -threads 10

根据workloadc来进行性能测试。

 

以上的介绍都是基于YCSB的自带功能。在有些情况下,我们需要扩展和定制测试的方法,YCSB是开源的纯JAVA的解决方案,可以充分满足特殊的要求。下面分析一下YCSB的相关JAVA Class。

a) Workload的定义: com.yahoo.ycsb.workloads.CoreWorkload

b) HBase DB Interface的定义:com.yahoo.ycsb.db.HBaseClient

c) 数据生成器Generator:com.yahoo.ycsb.generator.*

d) YCSB的主程序:com.yahoo.ycsb.Clien

压力测试参数与说明

测试分成两部分,小数据表和大数据表。所谓的大小表示单条记录的大小,测试中,小数据表的单条记录大小为8Byte,大数据表的单条记录大小为2MB。通过YCSB数据库测试工具,我们对数据库的各种操作进行了压力测试,包括read, insert, update, scan以及read-modify-write。这些测试反映了hadoop hbase的性能,同时也对实际应用的操作

进行了模拟。

操作说明:

Read: 读取某一条记录。速度和系统的io速率有关,系统读取速率越快,read速率越快。

Insert:插入一条记录。速度和系统的io速率有关,系统写入速率越快,read速率越快。

Update:更新一条记录,本质和insert操作相同。

Scan:扫描整个表,速率由读取速率和整个表的大小有关,表越大,单次scan速率越慢。

测试环境:

硬件:

Hadoop参考设计的实现及性能:HBase应用性能测试方法

软件:

Hadoop参考设计的实现及性能:HBase应用性能测试方法

*注:除非文中特别标注, 其他参数均采用 Apache Hadoop 英特尔分发版 2.3 的缺省参数。

YCSB对Apache Hadoop*英特尔分发版测试结果

在以下测试中,我们通过设置不同的线程数,让YCSB客户端模拟不同的压力情况。

小数据表

参数:

单条数据大小(Byte):8

测试用表总条数:1000000

测试结果:

以下几幅图分别是线程数与执行操作速率的关系图、线程数与单条指令执行时间的关系图以及指令执行时间分布图。执行的操作为50%read,50%update。

Hadoop参考设计的实现及性能:HBase应用性能测试方法

压力(线程)增加对总操作数的影响

Hadoop参考设计的实现及性能:HBase应用性能测试方法

压力(线程)增加对总单条指令执行时间的影响

Hadoop参考设计的实现及性能:HBase应用性能测试方法

指令执行时间分布

详细测试结果数据表格:

1. Insert操作

Hadoop参考设计的实现及性能:HBase应用性能测试方法

2. 50% read, 50% update

Hadoop参考设计的实现及性能:HBase应用性能测试方法

3. 95% read, 5% update

4. 100% read

Hadoop参考设计的实现及性能:HBase应用性能测试方法

5. 95% read,5% insert

Hadoop参考设计的实现及性能:HBase应用性能测试方法

6. 95%scan,5% insert

Hadoop参考设计的实现及性能:HBase应用性能测试方法

7. 50% read, 50% read-modify-write

Hadoop参考设计的实现及性能:HBase应用性能测试方法

大数据表

参数:

单条数据大小(Byte):2000000

测试用表总条数:50000

测试结果:

同样,以下几幅图分别是线程数与执行操作速率的关系图、线程数与单条指令执行时间的关系图以及指令执行时间分布图。执行的操作为50%read,50%update。由于单条数据较大,因此和小数据表相比,单条指令执行时间和所有指令执行速率都有明显下降。但系统的总吞吐量有所上升。

Hadoop参考设计的实现及性能:HBase应用性能测试方法

压力(线程)增加对总操作数的影响

Hadoop参考设计的实现及性能:HBase应用性能测试方法

压力(线程)增加对总单条指令执行时间的影响

Hadoop参考设计的实现及性能:HBase应用性能测试方法

指令执行时间分布

详细测试结果数据表格:

1. Insert操作

Hadoop参考设计的实现及性能:HBase应用性能测试方法

2. 50% read, 50% update

Hadoop参考设计的实现及性能:HBase应用性能测试方法

3. 95% read, 5% update

Hadoop参考设计的实现及性能:HBase应用性能测试方法

4. 100% read

Hadoop参考设计的实现及性能:HBase应用性能测试方法

5. 95% read,5% insert

Hadoop参考设计的实现及性能:HBase应用性能测试方法

6. 95%scan,5% insert

Hadoop参考设计的实现及性能:HBase应用性能测试方法

7. 50% read, 50% read-modify-write

Hadoop参考设计的实现及性能:HBase应用性能测试方法

在压力测试中使用的软件,硬件以及测试参数可能为Apache Hadoop*英特尔分发版进行了优化,测试使用的是专用的测试系统,软件,硬件以及平台。上述任何要素的变动都有可能导致测试结果的变化。请参考其他信息及性能测试(包括结合其他产品使用时的运行性能)以对目标产品进行全面评估。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。