最近在工作中接触到了Kudu,在应用之前需要先对其性能进行各指标分析,于是用到了ycsb,对于ycsb不做过多介绍,话不多说,直接开干。
ycsb github 地址:https://github.com/brianfrankcooper/YCSB
进行kudu压测需要编译或下载对应的压缩包。有两种方式可以获得该压缩包
第一种:将源代码(https://github.com/brianfrankcooper/YCSB) 下载或clone下来,导入开发工具,进行编译。
1、编译命令:mvn -pl site.ycsb:kudu-binding -am clean package
2、编译完成后会生成对应的压缩包
第二种获取压缩包的方式,直接下载编译好了的ycsb,对应存储组件地址:https://github.com/brianfrankcooper/YCSB/releases
这里我们选择 ycsb-kudu-binding-0.17.0.tar.gz
下载完成之后上传到Linux并解压。
进入到 ycsb-kudu-binding-0.17.0 目录。执行压测命令,在这里放个写入数据的命令。
bin/ycsb load kudu -P workloads/workloada -p kudu_master_addresses=hadoop1:7051,hadoop2:7051,hadoop3:7051
此处只提供了kudu master的地址,其它参数都可以使用ycsb的默认值,table名称默认为:usertable,列前缀名默认为:field,列数量默认为10.
参数、输出结果详细说明:
https://sq.163yun.com/blog/article/174952829785182208
我这里指定了写入10万条数据,所以命令行会一直处于执行中。
通过impala查看写入到usertable表中的数据的条数。impala-shell进入命令行,此处需要在impala中创建外表来关联kudu表。
create EXTERNAL TABLE dw.usertable
STORED AS KUDU
TBLPROPERTIES ('kudu.table_name' = 'usertable');
此时就可以在impala中查到该表的数据了
YCSB输出的各项指标详情:
[OVERALL], RunTime(ms), 856906
[OVERALL], Throughput(ops/sec), 1166.9891446669762
[TOTAL_GCS_PS_Scavenge], Count, 273
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 457
[TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.053331403911280814
[TOTAL_GCS_PS_MarkSweep], Count, 0
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0
[TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
[TOTAL_GCs], Count, 273
[TOTAL_GC_TIME], Time(ms), 457
[TOTAL_GC_TIME_%], Time(%), 0.053331403911280814
[CLEANUP], Operations, 1
[CLEANUP], AverageLatency(us), 688.0
[CLEANUP], MinLatency(us), 688
[CLEANUP], MaxLatency(us), 688
[CLEANUP], 95thPercentileLatency(us), 688
[CLEANUP], 99thPercentileLatency(us), 688
[INSERT], Operations, 1000000
[INSERT], AverageLatency(us), 853.091788
[INSERT], MinLatency(us), 566
[INSERT], MaxLatency(us), 1632255
[INSERT], 95thPercentileLatency(us), 1027
[INSERT], 99thPercentileLatency(us), 1420
[INSERT], Return=OK, 1000000