最近使用HBase PE工具对HBase进行压测,RandomRead场景测试过程中,发现读请求分布非常不均匀,全部落在前几个region上。
百度发现很多小伙伴也遇到类似问题,建议使用--size代替--rows,经测试并不生效。
排查代码发现,get请求构造的时候是
random.nextInt(Integer.MAX_VALUE) % totalRows
可以看出 get请求收到 totalRows 的限制,而totalRows 就是--rows指定的数量。 如果命令行指定--rows,那他就是--rows指定的rowkey之间的数据,get请求必然会落在前几个region上,导致负载不均衡,性能测试效果不佳。 效果如图:

最终,在命令中再添加一个--size参数即可。该参数值与表总行数(总大小;根据数据生成时指定方式而定)保持一致即可。
hbase pe --nomapred --rows=100000 --size=10 --table=Test1 randomRead 10
本文讲述了作者在使用HBasePE进行压测时,如何发现并解决RandomRead场景下读请求集中在少数region的问题。通过调整命令行参数--size,确保请求分布均匀,从而提升性能测试效果。

3091

被折叠的 条评论
为什么被折叠?



