ycsb使用指南

简介

YCSB(Yahoo! Cloud Serving Benchmark)是雅虎开源的一款通用的性能测试工具。
通过这个工具我们可以对各类NoSQL产品进行相关的性能测试,包括:PNUTS、BigTable 、HBase、Hypertable、Azure、Cassandra、CouchDB、Voldemort、MongoDb、Dynomite。

YCSB与HBase自带的性能测试工具(PerformanceEvaluation)相比,好处在于:

  • 扩展:进行性能测试的客户端不仅仅只是HBase一款产品,而且可以是HBase不同的版本。
  • 灵活:进行性能测试的时候,可以选择进行测试的方式:read+write,read+scan等,还可以选择不同操作的频度与选取Key的方式。
  • 监控:进行性能测试的时候,可以实时显示测试进行的进度:

下载

下载ycsb 0.6压缩包,解压即可
https://github.com/brianfrankcooper/YCSB/releases/download/0.6.0/ycsb-0.6.0.tar.gz

注:执行ycsb时,如果报python argparse模块异常,因为python版本低,需要安装python argparse模块 ,解压进入执行:

1
python setup.py install

创建Hbase表

1
2
n_splits = 200 
create 'usertable', 'family', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}

参数配置

Ycsb的执行配置在workload文件下,可以参考workloada和workload_template配置文件

  • Load配置
    Workload文件夹下新建workload_load文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #记录数
    recordcount=10000000
    #操作记录数
    operationcount=10000000
    # 测试类
    workload=com.yahoo.ycsb.workloads.CoreWorkload
    readallfields=true
    # read比例
    readproportion=0
    # update比例
    updateproportion=0
    # scan比例
    scanproportion=0
    # Load比例
    insertproportion=1
    requestdistribution=zipfian
    # The number of fields in a record
    fieldcount=10
    # The size of each field (in bytes)
    fieldlength=100
    # hbase表
    table=usertable
    columnfamily=family
  • Scan配置
    Workload文件夹下新建workload_scan文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    recordcount=10000000
    operationcount=10000000
    workload=com.yahoo.ycsb.workloads.CoreWorkload
    readallfields=true
    readproportion=0
    updateproportion=0
    scanproportion=1
    insertproportion=0
    requestdistribution=zipfian
    table=usertable
    columnfamily=family
    #必填
    hbase.usepagefilter=false
  • Read配置
    Workload文件夹下新建workload_read文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    recordcount=10000000
    operationcount=10000000
    workload=com.yahoo.ycsb.workloads.CoreWorkload
    readallfields=true
    readproportion=1
    updateproportion=0
    scanproportion=0
    insertproportion=0
    requestdistribution=zipfian
    table=usertable
    columnfamily=family

测试

  • Load

    1
    bin/ycsb load hbase098 -P workloads/workload_load -cp hbase098-binding/conf –threads 100
  • Scan

    1
    bin/ycsb load hbase098 -P workloads/workload_scan -cp hbase098-binding/conf –threads 100
  • Read

    1
    bin/ycsb load hbase098 -P workloads/workload_read -cp hbase098-binding/conf –threads 100

测试的时候可以在集群的节点上启多个客户端执行ycsb测试,如:Load测试,集群5个节点,各启动10个客户端,每个客户端启动100个线程,总共是5000个线程执行Load