官方工具下载链接:
https://github.com/brianfrankcooper/YCSB/releases
官方使用文档:
https://github.com/brianfrankcooper/YCSB/tree/master/hbase2
- YCSB workload策略
workloada | read50%,update50% | 重更新 |
---|---|---|
workloadb | read95%,update5% | 读多写少 |
workloadc | read100% | 只读 |
workloadd | read95%, insert5% | 读最近更新:这个 workload 会插入新纪录,越新的纪录读取概率越大 |
workloade | scan95%, insert5% | 小范围查询:这个 workload 会查询小范围的纪录,而不是单个纪录 |
workloadf | read50%, readmodifywrite50% | 读取-修改-写入:这个 workload 会读取一个纪录,然后修改这个纪录,最后写回 |
可通过以下参数修改测试数据的大小
fieldcount:一条记录中的字段数(默认:10)
fieldlength:每个字段的大小(默认:100)
-
测试实施
-
首先下载与HBase版本对应的工具包。
ycsb-hbase20-xxx.tar.gz对应的为HBases2.x版本工具。
- 上传工具包到测试集群并解压。
- 新建conf文件夹,并将hbase配置文件hbase-site.xml放到conf文件夹中。
- 测试前需要新建hbase表
官方建议使用预分区策略。
hbase(main):001:0> n_splits = 200 # HBase recommends (10 * number of regionservers)
hbase(main):002:0> create 'usertable', 'family', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}
- 创建完表之后,使用ycsb工具加载数据到新创建的表中。
新建 logs文件夹存放测试结果。
进入ycsb目录运行以下语句加载数据:
./bin/ycsb load hbase20 -P workloads/workloada -p table=usertable -p columnfamily=family -p recordcount=64000000 -p operationcount=64000000 -threads 200 -s > logs/load.log
参数解释:
recordcount | 测试数据集记录总数 |
---|---|
operationcount | 测试过程总的测试条数 |
threads | 开启的线程数 |
- 加载完数据就可以使用不同的workload进行性能测试了。
./bin/ycsb.sh run hbase20 -P workloads/workloada -p table=usertable -p columnfamily=family -p operationcount=64000000 -threads 200 -s > logs/a.log
./bin/ycsb.sh run hbase20 -P workloads/workloadb -p table=usertable -p columnfamily=family -p operationcount=64000000 -threads 200 -s > logs/b.log
./bin/ycsb.sh run hbase20 -P workloads/workloadc -p table=usertable -p columnfamily=family -p operationcount=64000000 -threads 200 -s > logs/c.log
./bin/ycsb.sh run hbase20 -P workloads/workloadd -p table=usertable -p columnfamily=family -p operationcount=64000000 -threads 200 -s > logs/d.log
Tips:每天测试前需要使用kinit -kt进行认证,或者在执行是指定keytab文件。