测试集群: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