hbase写入性能测试(从hdfs向hbase写入数据)

测试集群:9个region server(16 core + 24GB内存)。Hbase client机器(8 core + 32GB内存)

数据量:日志数据,1122MB,存储在hdfs中。 hbase rowkey为9个字节,第一个字节是hash值,后八个字节对应long型数值;value约200b。 


写性能关键影响因素

1.  rowkey分布式是否均衡,最好先了解rowkey的特征,预设splitkeys,将rowkey范围均衡地分散到各个region server上;这样,可以减轻单点负载,提升横向拓展能力,并减少split和compact这样的重操作。

2. autoflush设置为false

3. 如果内存足够,可以适当增大WriteBufferSize,默认2MB,我调到32MB效果不错。

4. 适当配置写入线程。

5. WAL设置为false,可以明显提升速度,但是不建议这么做,这样可能数据丢失无法恢复。


测试结果:

1.将多列属性值压缩至一个列中,可以大大提升hbase写的效率;每多一列,写入的性能都会明显下降。

2.一个列族N个属性列与N个列族单个属性列,写入性能很接近。

3. 单个region平均可以达到2w lines/s


测试结果

一个列族 + 一个列(包含所有的属性值)
Total time costs          :                 66s
Average byte speed        :              17MB/s
Average line speed        :       170485lines/s
Total transferred records :            11252045
Total discarded records   :                   0


一个列族 + 一个列(包含所有的属性值)+一个空值列
Total time costs          :                 99s
Average byte speed        :              11MB/s
Average line speed        :       113657lines/s
Total transferred records :            11252045
Total discarded records   :                   0


一个列族 + 一个列(包含所有的属性值)+三个空值列
Total time costs          :                166s
Average byte speed        :               6MB/s
Average line speed        :        67783lines/s
Total transferred records :            11252045
Total discarded records   :                   0


四个列族 + 每个列族一个列(包含所有的属性值)
Total time costs          :                159s
Average byte speed        :               7MB/s
Average line speed        :        70767lines/s
Total transferred records :            11252045
Total discarded records   :                   0


一个列族 + 四个列(每个列包含所有的属性值)
Total time costs          :                160s
Average byte speed        :               7MB/s
Average line speed        :        70325lines/s
Total transferred records :            11252045
Total discarded records   :                   0



你可能感兴趣的:(server,集群,测试,hbase,存储,byte)