HBase压力测试

关于HBase压测,恐怕是一个很常见的问题。主要目的包含内存GC参数优化。

线上实际情况

五个RS。

  • 访问量近似平均分布,总访问量在1600+ QPS
    HBase压力测试_第1张图片

  • 内存占用如下
    HBase压力测试_第2张图片

  • 硬盘存储如下
    HBase压力测试_第3张图片

我们的压测环境

为和线上保持一致,我们也采用5台RS,每台配置16G堆内存的方法。使用版本和其他配置也保持一致。
HBase压力测试_第4张图片
HBase压力测试_第5张图片

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

你可能感兴趣的:(java)