• HBase性能测试


    测试工具YCSB

    自带有hbase pe,但是pe只能统计每个线程执行的情况,不能统计整体的状态。所以还是推荐使用YCSB

    https://github.com/brianfrankcooper/YCSB

    使用参考文档:

    https://github.com/brianfrankcooper/YCSB/wiki

     

    前置准备

    一:首先确认集群配置,比如cpu、内存、磁盘、网络带宽

    二:创建hbase表,设置表重要属性,比如使用哪种压缩,哪种块编码等等。一般也会创建好预分区,在创建预分区的时候,由于YCSB默认生成的rowkey是以“user”开头的,所以创建预分区应做对应调整,比如:

    create 'ycsb01',{NAME => 'f1',COMPRESSION => 'SNAPPY'},SPLITS => ['user1','user2','user3','user4','user5','user6','user7','user8','user9']

    三:定义我们的workload,YCSB自带的也有几种workload,可以参照来定义我们自己的负载情况,

    比较核心的配置如下:

    recordcount: YCSB load命令的参数,指总数据条数 (default: 1000)
    Operationcount: YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。对于workloada这种测试场景,就意味着读数据在500左右,写数据也在500左右
    ​
    fieldcount: 字段个数 (default: 10)
    fieldlength: 每个字段的长度 (default: 100)
    minfieldlength: 每个字段最小的长度 (default: 1)
    readallfields: 是否读取所有字段(default: true)
    writeallfields: 是否写/更新所有字段 (default: false)
    readproportion: read操作比例 (default: 0.95)
    updateproportion: update操作比例 (default: 0.05)
    insertproportion: insert操作比例 (default: 0)
    scanproportion: scan操作比例 (default: 0)
    ​
    requestdistribution: 使用哪种数据分布方式,主要有uniform, zipfian, hotspot, sequential, exponential or latest可选 (default: uniform)
    Uniform(等概率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)。
    ​
    minscanlength: scan时候,最小的scan条数(default: 1)
    maxscanlength: scan时候,最大的scan条数(default: 1000)
    scanlengthdistribution: scan时候,怎么选择scan的条数,[scan的条数介于1到maxscanlength之间] (default: uniform)
    ​
    insertstart: 在并行执行loads和runs的时候,定义当前YCSB实例的起始数据 (default: 0)
    insertcount: 在并行执行loads和runs的时候,定义当前YCSB实例要操作的数据条数 (default: recordcount)
    ​
    fieldnameprefix: 字段名的前缀 (default: “field”)

    运行 Workload

    运行workload大概有以下几个步骤:

    1. 选择符合场景的workload

    2. 配置合适的参数(比如客户端线程数)

    3. 执行Load阶段数据加载(workload有两个阶段,一个是loading阶段加载数据,一个是transactions阶段在这些数据上执行操作)

    4. 执行workload

     

    执行Load

    nohup ycsb_home/bin/ycsb load hbase12 -P workloads/workloada -cp ycsb_home/hbaseconf -p table=ycsb01 -p columnfamily=f1 -threads 10 -s > ycsb_home/log/ycsb_load.log &

    load:表示的是执行的load阶段

    hbase12:对应hbase1.2版本

    -P workloads/workloada:指定负载配置

    -cp ycsb_home/hbaseconf:指定hbase client配置文件

    -p table=ycsb01:指定hbase表

    -p columnfamily=f1:指定hbase表的列簇

    -threads 10:指定ycsb线程数

    -s:status,每隔10秒输出状态日志

    日志分析

    [OVERALL], RunTime(ms), 16487.0
    [OVERALL], Throughput(ops/sec), 6065.384848668648
        [OVERALL] 区显示测试总体情况
            RunTime(ms) 运行总时间
            Throughput(ops/sec) 吞吐量,每秒操作数
    [TOTAL_GCS_PS_Scavenge], Count, 23.0
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 88.0
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.5337538666828411
    [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, 23.0
    [TOTAL_GC_TIME], Time(ms), 88.0
    [TOTAL_GC_TIME_%], Time(%), 0.5337538666828411
        [TOTAL_GC*] 区显示垃圾回收情况
        [TOTAL_GCS_PS_Scavenge], Count, 23.0 Parallel Scavenge 回收次数
        [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 88.0 Parallel Scavenge 回收时间
        [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.533 Parallel Scavenge 回收时间百分比
        [TOTAL_GCS_PS_MarkSweep], Count, 0.0 PS MarkSweep 回收次数
        [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0 PS MarkSweep 回收时间
        [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0 PS MarkSweep 回收时间百分比
        [TOTAL_GCs], Count, 23.0 全局 GC 次数
        [TOTAL_GC_TIME], Time(ms), 88.0 全局 GC 时间
        [TOTAL_GC_TIME_%], Time(%), 0.533753866 全局 GC 时间百分比
    [READ], Operations, 50011.0
    [READ], AverageLatency(us), 4418.49443122513
    [READ], MinLatency(us), 1584.0
    [READ], MaxLatency(us), 208895.0
    [READ], 95thPercentileLatency(us), 8207.0
    [READ], 99thPercentileLatency(us), 11463.0
    [READ], Return=OK, 50011
        [READ] 区显示读取操作的统计结果
            Operations 总操作数
            AverageLatency(us) 平均延迟(微秒)
            MinLatency(us) 最小延迟
            MaxLatency(us) 最大延迟
            95thPercentileLatency(us) p95延迟
            99thPercentileLatency(us) p99延迟
            Return=OK, 50011 结果(正确),总操作数
    ​
    [CLEANUP](清理操作)、[UPDATE](更新操作)等等和 [READ] 区类似

     

    执行Run

    nohup ycsb_home/bin/ycsb run hbase12 -P workloads/workloada -cp ycsb_home/hbaseconf -p table=ycsb01 -p columnfamily=f1 -threads 10 -s > ycsb_home/log/ycsb_run.log &

    注意:Load阶段其实就是装载数据即往hbase中插入数据,workload文件中的recordcount就是将要插入的条数。run阶段就是对hbase进行各种操作,operationcount就是操作数,因此load阶段必须要正确执行完成,否则在run阶段会有类似于[READ-FAILED]之类的错误。

    注意事项

    1.ycsb client尽量运行在非hbase集群节点,以减少ycsb client对regionserver资源的占用,影响测试结果。

    2.留意ycsb client网络IO情况,如果网络带宽被打满,测不出实际性能。这种情况可以设置多ycsb client并行运行

    3.多ycsb client并行运行,最后的执行结果综合多个取平均值即可,主要关注TPS(ops/sec)和平均延迟、p95、p99延迟。

  • 相关阅读:
    H5系列之drag拖放
    H5系列之contenteditable
    H5系列之新input
    利用css3和js实现旋转木马图片小demo
    利用css3实现照片列表展开小demo
    reduce()、filter()、map()、some()、every()、...展开属性
    ES6,ES7,ES8,ES9,ES10新特性
    Web Components 是什么?它为什么对我们这么重要?
    vscode常用快捷键以及插件
    使用for..in时会遍历对象原型中的自定义属性
  • 原文地址:https://www.cnblogs.com/zz-ksw/p/13724406.html
Copyright © 2020-2023  润新知