你好,游客 登录
背景:
阅读新闻

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

[日期:2014-07-02] 来源:风信网  作者:末信 [字体: ]

          测试工具 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

解压:tar xfvz ycsb-0.1.4

          这种方式简单易用。但对于不同的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来进行性能测试。

2. 对工具的定制开发和扩展

          以上的介绍都是基于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*英特尔分发版进行了优化,测试使用的是专用的测试系统,软件,硬件以及平台。上述任何要素的变动都有可能导致测试结果的变化。请参考其他信息及性能测试(包括结合其他产品使用时的运行性能)以对目标产品进行全面评估。





收藏 推荐 打印 | 录入: | 阅读:
相关新闻       HBase应用 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款