zoukankan      html  css  js  c++  java
  • ycsb 测试Hbase性能

    下载

    github:https://github.com/brianfrankcooper/YCSB/releases/tag/0.10.0

    wget https://github.com/brianfrankcooper/YCSB/archive/0.10.0.tar.gz
    tar xvf 0.10.0.tar.gz

    编译:

    cd YCSB-0.10.0/

    编译所有的nosql

    mvn clean package

    只编译Hbase

    mvn -pl com.yahoo.ycsb:hbase10-binding -am clean package

     安装成功。

    cd hbase10/target/
    tar xvf ycsb-hbase10-binding-0.10.0.tar.gz
    cd ycsb-hbase10-binding-0.10.0

    测试:

    1 hive中建表

    hbase(main):01:0*>  n_splits=120

    => 120

    hbase(main):02:0>  create 'usertable','family',{SPLITS => (1...n_splits).map{|i| "user#{1000+i*(9999-1000)/n_splits}"}}

    0 row(s) in 18.3610 seconds

    => Hbase::Table - usertable

    1.1 完整版需要手动去拷贝相关hbase库到hbase-binding的lib目录下,并将hbase-site.xml拷贝至hbase-binding的conf目录下

    1.2 ycsb-hbase10-binding-0.10.0在lib目录下面有所需的各种库文件,无需手动从hbase的lib目录下去-cp过来了直接使用bin下面的ycsb,-cp指定即可。

     2 执行:

    load:装载数据
    bin/ycsb load hbase10 -P workloads/workloada -cp /usr/hdp/2.5.3.0-37/hbase/conf/ -p table=usertable -p columnfamily=family -s -threads 10 -p recordcount=100000 

     run:执行测试

    bin/ycsb run hbase10 -P workloads/workloada -cp /usr/hdp/2.5.3.0-37/hbase/conf/ -p table=usertable -p columnfamily=family -s -threads 10 -p recordcount=100000

    运行结果分析:

    [OVERALL], RunTime(ms), 2787.0 数据加载所用时间:2.787秒
    [OVERALL], Throughput(ops/sec), 35.88087549336204 加载操作的吞吐量,平均并发量每秒35.88条
    [TOTAL_GCS_PS_Scavenge], Count, 1.0
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 20.0
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.7176175098672408
    [TOTAL_GCS_PS_MarkSweep], Count, 0.0
    [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0
    [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
    [TOTAL_GCs], Count, 1.0
    [TOTAL_GC_TIME], Time(ms), 20.0
    [TOTAL_GC_TIME_%], Time(%), 0.7176175098672408
    [CLEANUP], Operations, 2.0 执行cleanup的操作总数,2
    [CLEANUP], AverageLatency(us), 63575.0 平均响应时间63.575ms
    [CLEANUP], MinLatency(us), 14.0 最小响应时间0.014ms
    [CLEANUP], MaxLatency(us), 127167.0 最大响应时间127.167ms
    [CLEANUP], 95thPercentileLatency(us), 127167.0 95%的cleanup操作延时在127.167ms以内
    [CLEANUP], 99thPercentileLatency(us), 127167.0 99%的cleanup操作延时在127.167ms以内
    [INSERT], Operations, 100.0 执行insert操作的总数,100
    [INSERT], AverageLatency(us), 13681.54 每次insert操作的平均时延,13.68154ms
    [INSERT], MinLatency(us), 5556.0 所有insert操作最小延时,5.556ms
    [INSERT], MaxLatency(us), 201343.0 所有insert操作最大延时,201.343ms
    [INSERT], 95thPercentileLatency(us), 30063.0 95%的insert操作延时在30.063ms以内
    [INSERT], 99thPercentileLatency(us), 53183.0 99%的insert操作延时在53.183ms以内
    [INSERT], Return=OK, 1000 成功返回数,1000


    [OVERALL], RunTime(ms), 6921.0 数据加载所用时间:6.921秒
    [OVERALL], Throughput(ops/sec), 144.48779078167894 加载操作的吞吐量,平均并发量每秒144.48条
    [TOTAL_GCS_PS_Scavenge], Count, 1.0
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 20.0
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.2889755815633579
    [TOTAL_GCS_PS_MarkSweep], Count, 0.0
    [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0
    [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
    [TOTAL_GCs], Count, 1.0
    [TOTAL_GC_TIME], Time(ms), 20.0
    [TOTAL_GC_TIME_%], Time(%), 0.2889755815633579
    [CLEANUP], Operations, 2.0 执行cleanup的操作总数,2
    [CLEANUP], AverageLatency(us), 71591.5 平均响应时间71.5915ms
    [CLEANUP], MinLatency(us), 15.0 最小响应时间0.015ms
    [CLEANUP], MaxLatency(us), 143231.0 最大响应时间143.231ms
    [CLEANUP], 95thPercentileLatency(us), 143231.0 95%的insert操作延时在143.231ms以内
    [CLEANUP], 99thPercentileLatency(us), 143231.0 99%的insert操作延时在143.231ms以内
    [READ], Operations, 480.0 执行read的操作总数,480
    [READ], AverageLatency(us), 5027.9625 平均响应时间5.027ms
    [READ], MinLatency(us), 2254.0 最小响应时间2.254ms
    [READ], MaxLatency(us), 158847.0 最大响应时间158.847ms
    [READ], 95thPercentileLatency(us), 10767.0 95%的read操作延时在10.767ms以内
    [READ], 99thPercentileLatency(us), 14599.0 99%的read操作延时在14.599ms以内
    [READ], Return=OK, 480 成功返回数,480
    [UPDATE], Operations, 520.0 执行read的操作总数,520
    [UPDATE], AverageLatency(us), 5812.123076923077 平均响应时间5.812ms
    [UPDATE], MinLatency(us), 3302.0 最小响应时间3.302ms
    [UPDATE], MaxLatency(us), 86207.0 最大响应时间86.207ms
    [UPDATE], 95thPercentileLatency(us), 9991.0 95%的read操作延时在9.991ms以内
    [UPDATE], 99thPercentileLatency(us), 11839.0 99%的insert操作延时在11.839ms以内
    [UPDATE], Return=OK, 520 成功返回数,520

    YCSB自带了6种负载(workloads/目录下)

    workloada:混合了50%的读和50%的写;
    workloadb:Read mostly workload,混合了95%的读和5%的写,该workload侧重于测试集群的读能力;
    workloadc:Read only,100%只读;
    workloadd:Read latest workload,插入数据,接着就读取这些新插入的数据;
    workloade:Short ranges,短范围scan,不同于随机读,每个测试线程都会去scan一段数据;
    workloadf:Read-modiy-wirte,读改写,客户端读出一个记录,修改它并将被修改的记录返回;

    你可自由修改测试策略:

    -threads 10配置了并发线程个数
    -p operationcount=1000000 覆盖了workloada中operationcount=1000表示本次测试操作记录数为1000000
    -p measurementtype=timeseries -p timeseries.granularity=2000 指明了YCSB客户端多长时间汇总一次延时,timeseries.granularity属性值的单位为ms。所以这里的配置就表示2s记录一次平均延时。 

    -p recordcound 是YCSB load(加载元数据)命令的参数,默认值1000表示默认加载的记录条数,可以在命令行显示修改该值。

    -p Operationcount 是YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。

    -P  workload 指定了workload的实现类为 com.yahoo.ycsb.workloads.CoreWorkload

    -p readallfields表示查询时是否读取记录的所有字段

    -p readproportion表示读操作的比例,该场景为0.5

    -p updateproportion表示更新操作的比例,该场景为0.5

    -p scanproportion表示扫描操作的比例

    -p Insertproportion表示插入操作的比例

    -p Requestdistribution表示请求的分布模式,YCSB提供uniform, zipfian, latest三种分布模式

    参考:https://blog.csdn.net/zx8167107/article/details/78753283

  • 相关阅读:
    Can we call an undeclared function in C++?
    Template Metaprogramming in C++
    Templates and Default Arguments
    Templates and Static variables in C++
    Default Assignment Operator and References
    Advanced C++ | Conversion Operators
    Use of explicit keyword in C++
    When should we write our own assignment operator in C++?
    Copy constructor vs assignment operator in C++
    VMWare关闭beep声
  • 原文地址:https://www.cnblogs.com/cyanrose/p/11882606.html
Copyright © 2011-2022 走看看