关于HBase压测,恐怕是一个很常见的问题。主要目的包含内存GC参数优化。
线上实际情况
五个RS。
-
访问量近似平均分布,总访问量在1600+ QPS
-
内存占用如下
-
硬盘存储如下
我们的压测环境
为和线上保持一致,我们也采用5台RS,每台配置16G堆内存的方法。使用版本和其他配置也保持一致。
PE工具压测
写入测试
hbase pe --nomapred --oneCon=true --valueSize=100 --compress=SNAPPY --rows=150000 --autoFlush=true --presplit=64 randomWrite 2
- –nomapred表示不使用MAPREDUCE框架
- –oneCon=true 所有线程是否共享连接
- –valueSize=100 一次写入所写入value的大小
- –compress 压缩方式
- –presplit=64 创建预分表(初始情况下将table分为多少个分区)
- –autoFlush=true client在收到put请求时是否每次都发送到region server
- –rows=150000 每个线程需要发送的数据量
每次测试都会删除之前测试创建的测试表。删除表的时间不计入结果
随机写入15条数据(包含创建表预分表的时间,下同)的结果为
2018-10-16 17:32:29,380 INFO [main] hbase.PerformanceEvaluation: [RandomWriteTest] Min: 7799ms Max: 9412ms Avg: 9000ms
随机写入15W条数据的结果为
2018-10-16 17:18:02,228 INFO [main] hbase.PerformanceEvaluation: [RandomWriteTest] Min: 19546ms Max: 25362ms Avg: 23128ms
随机写入1500W条数据的结果为
2018-10-16 17:29:50,023 INFO [main] hbase.PerformanceEvaluation: [RandomWriteTest] Min: 409269ms Max: 424063ms Avg: 417956ms