1 下载YCSB
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz
tar xfvz ycsb-0.12.0.tar.gz
cd ycsb-0.12.0
提供的已编译好的版本支持hbase1.0,如果hbase版本高于1.0,需要自己手动编译
2 运行压测
本次压测的hbase版本是1.0.0
(1) 配置ycsb
- 在hbase10-binding目录下新建conf目录,然后将hbase的hbase-site.xml拷贝进来
(2) 创建压测表
disable 'usertable'
drop 'usertable'
create 'usertable', 'family', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}
---n_splits=(10 * number of regionservers)
- 建表时需要预分区
(3) 加载数据
bin/ycsb load hbase10 -P workloads/workloada -p table=usertable -p columnfamily=family -p threads=1000 -p recordcount=200000000 -s > logs/load.log
load 表示这是一次加载数据操作
hbase10指明了所用的数据库类型
threads=100 配置并发线程个数
-P指明了所用的配置文件的路径
-p 可以显示修改YCSB内置的默认配置,例如这里配置recordcount=20000000来覆盖之前说过的workloada中默认的recordcount=1000
-s一次加载数据或执行测试的过程实践很长,YCSB客户端需要定时(默认10s)发送状态信息
logs/ load.log表示结果日志写入位置,logs目录需要手动创建
(4) 执行压测
bin/ycsb run hbase10 -P workloads/workloada -threads 200 -p operationcount=20000000 -p table=usertable -p columnfamily=family -p measurementtype=timeseries -p timeseries.granularity=2000 -s > logs/transaction-workloada1.log