YCSB测试PHOENIX

YCSB测试PHOENIX
①下载ycsb tart包或者源码文件再mvn 编译也行 然后将编译好的或者下载好的tar包上传到要测试phoenix的环境
https://download.csdn.net/download/sx157559322/12859932 下载链接(自己上传的)
②在phoenix建测试表 (默认表名是 usertable 也可以自己定义 )
参考链接:https://github.com/brianfrankcooper/YCSB/tree/master/jdbc

create table usertable (YCSB_KEY VARCHAR(255) NOT NULL PRIMARY KEY, FIELD0 VARCHAR, FIELD1 VARCHAR, FIELD2 VARCHAR, FIELD3 VARCHAR,FIELD4 VARCHAR, FIELD5 VARCHAR,FIELD6 VARCHAR, FIELD7 VARCHAR,FIELD8 VARCHAR, FIELD9 VARCHAR) SALT_BUCKETS=8;

官方创建表解释:
Key take aways:
The primary key field needs to be named YCSB_KEY 主键字段需要命名为YCSB_KEY
The other fields need to be prefixed with FIELD and count up starting from 1 其他字段需要以FIELD开头,并从1开始计数
Add the same number of FIELDs as you specify in the YCSB core properties, default is 10. 添加与在YCSB核心属性中指定的相同数量的FIELD,默认值为10。
The type of the fields is not so important as long as they can accept strings of the length that you specify in the YCSB core properties, default is 100.
字段的类型并不重要,只要它们可以接受您在YCSB核心属性中指定的长度的字符串即可,默认值为100。

创建二级索引(我这里测试可以不创建 不知道有什么影响)

create index idx1 on usertable(field0, field1) include(field8, field9);
create index idx2 on usertable(field2, field3) include(field8, field9);

③将本地环境的配置文件加载到当前ycsb 目录下 我这里是cdh版本的 直接将配置文件目录软链接到当前目录

里面的相关配置文件(具体需要那几个配置文件目前没试)

④配置phoenix.properties(这里选用的是用phoenix驱动连接)

db.driver=org.apache.phoenix.jdbc.PhoenixDriver
db.url=jdbc:phoenix:134.64.14.233:2181:/hbase
jdbc.autocommit=false
db.batchsize=1000

参数解释:
jdbc.autocommit: The JDBC connection auto-commit property for the driver. 驱动程序的JDBC连接自动提交属性。
db.batchsize : The number of rows to be batched before commit (or executeBatch() when jdbc.batchupdateapi=true)
提交之前要批处理的行数(或jdbc.batchupdateapi = true时为executeBatch())

⑤ 直接使用命令进行加载数据 这里测试1万 (如果编译的jar出现兼容等问题 将本地配置的jar上传到lib下面)
bin/ycsb load jdbc -P workloads/workloada -p threads=10 -p table=USERTABLE -P phoenix.properties -p recordcount=10000 -s > workloada_jdbc_load.log
参数解释:
workload:要使用的工作量类
-P指明了所用的配置文件的路径
-p 可以显示修改YCSB内置的默认配置,例如这里配置recordcount=10000来覆盖之前说过的workloada中默认的recordcount=1000-o-
-p table :指定表名 不写默认是usertable
-s 一次加载数据或执行测试的过程实践很长,YCSB客户端需要定时(默认10s)发送状态信息
-target 1000 每秒操作1000记录数
-p measurementtype=timeseries -p timeseries.granularity=2000指明了YCSB客户端多长时间汇总一次延时,timeseries.granularity属性值的单位为1000milliseconds。所以这里的配置就表示2000s记录一次本2000ms的平均延时。
-p recordcount=10000 插入1万条记录数用于测试

more workloada_jdbc_load.log

查看phoenix 中usertable表数据 是否插入

select count(1) from usertable;

⑥开始测试数据

bin/ycsb run jdbc  -P workloads/workloada  -p threads=10 -p table=USERTABLE -P phoenix.properties  -s -p operationcount=10000 > workloada_jdbc_run.log

参数解释
-p operationcount=10000 run 一万条记录测试

more workloada_jdbc_run.log (这里的测试数量 batchSize:10000 在配置文件中指定)

解释:
Using shards: 1, batchSize:10000, fetchSize: -1
[OVERALL], RunTime(ms), 4935 数据加载所用时间 单位ms
[OVERALL], Throughput(ops/sec), 202.63424518743668 加载操作的吞吐量,平均并发量每秒多少
[TOTAL_GCS_PS_Scavenge], Count, 2 回收次数
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 36 Parallel Scavenge 回收时间
[TOTAL_GC_TIME_%PS_Scavenge], Time(%), 0.729483282674772 Parallel Scavenge 回收时间百分比
[TOTAL_GCS_PS_MarkSweep], Count, 2 PS MarkSweep 回收次数
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 71 PS MarkSweep 回收时间
[TOTAL_GC_TIME
%PS_MarkSweep], Time(%), 1.4387031408308004 PS MarkSweep 回收时间百分比
[TOTAL_GCs], Count, 4 全局 GC 次数
[TOTAL_GC_TIME], Time(ms), 107 全局 GC 时间
[TOTAL_GC_TIME
%], Time(%), 2.1681864235055723 全局 GC 时间百分比
[READ], Operations, 479 执行 read 的操作总数
[READ], AverageLatency(us), 2925.2442588726512 平均响应时间
[READ], MinLatency(us), 1130 最小响应时间
[READ], MaxLatency(us), 261631 最大响应时间
[READ], 95thPercentileLatency(us), 4043 95% 的 read 操作延时在 4.043ms以为 单位微秒
[READ], 99thPercentileLatency(us), 8031 99%…
[READ], Return=OK, 479
[CLEANUP], Operations, 1 执行 cleanup 的操作总数
[CLEANUP], AverageLatency(us), 655616.0 平均响应时间
[CLEANUP], MinLatency(us), 655360 最小响应时间
[CLEANUP], MaxLatency(us), 655871 最大响应时间
[CLEANUP], 95thPercentileLatency(us), 655871 95% 的 cleanup 操作延时在655.875 ms 以内 单位 μs (微秒)
[CLEANUP], 99thPercentileLatency(us), 655871 99% …
[UPDATE], Operations, 521 执行 insert 操作的总数
[UPDATE], AverageLatency(us), 109.38195777351248 每次 insert 操作的平均时延 单位ms
[UPDATE], MinLatency(us), 29 所有 insert 操作最小延时
[UPDATE], MaxLatency(us), 7711 所有 insert 操作最大延时
[UPDATE], 95thPercentileLatency(us), 181 95% 的 insert 操作延时在 0.181 ms 以内 单位 μs (微秒)
[UPDATE], 99thPercentileLatency(us), 584 99%…
[UPDATE], Return=OK, 521 成功返回数

输出内容附加说明:
CLEANUP 解释:需要使用清理操作来关闭向db提供工作负载的线程。因此,如果您设置参数-threads n,您将在基准测试结束时看到n个清理操作!
Operations :总操作数Avg(us) :平均延迟(微秒)Min(us): 最小延迟Max(us): 最大延迟95thPercentileLatency(us) 95%的样本延迟低于该值99thPercentileLatency(us) 99%的样本延迟低于该值

workload [a-f] 说明:
Workload A:
重更新,50% 读 50% 写,例如 session sotre
Workload B:
读多写少,95% 读 5% 写,例如 photo tagging
Workload C:
只读:100% 读,例如 user profile cache
Workload D:
读最近更新:这个 workload 会插入新纪录,越新的纪录读取概率越大,例如:user status updates
Workload E:
小范围查询:这个 workload 会查询小范围的纪录,而不是单个纪录,例如:threaded conversations
Workload F:
读取-修改-写入:这个 workload 会读取一个纪录,然后修改这个纪录,最后写回,例如:user database

workloada 配置文件属性说明:
recordcount=1000 加载的数据数量即往库里面插入测试数据的量 (对应 bin/ycsb load )
operationcount=1000 测试的数据量 即要测试数据指标操作的数据量 (对应 bin/ycsb run )
workload=site.ycsb.workloads.CoreWorkload 要使用的工作负载类
readallfields=true 默认值是1,应该读取读取所有字段(true),只读取一个(false)
readproportion=0.5 默认是0.95,表示的是进行read的操作占所有操作的比例
updateproportion=0.5 默认是0.05,表示的是进行update的操作占所有操作的比例
scanproportion=0 默认是0,表示的是进行scan的操作占所有操作的比例
insertproportion=0 默认是0,表示的是进行insert的操作占所有操作的比例
requestdistribution=zipfian 默认是uniform,应该使用什么分布来选择要操作的记录:uniform, zipfian, hotspot, sequential, exponential 和 latest

相关参数参考链接:
ycsb核心属性
https://blog.csdn.net/u010385646/article/details/53021887
讨论 ycsb是否结合phoenix
https://github.com/brianfrankcooper/YCSB/pull/178
YCSB workload工作负载参数设置
https://blog.csdn.net/clever_wr/article/details/88992723
ycsb测hbase 例子及相关参数说明
https://juejin.im/post/5a990f03518825558506fa4d#heading-2
官方文档ycsb测试mysql 步骤解释
https://github.com/brianfrankcooper/YCSB/tree/master/jdbc

你可能感兴趣的:(大数据)