hbase参数优化
hbase.hregion.memstore.flush.size
默认值是128MB,当memstore的数据达到128MB时,写入磁盘,以storefile文件存在,最后以Hfile形式存储到HDFS上
hbase.regionserver.global.memstore.size
默认值是0.4,当我们regionserver 所有memstore占用内存在总内存的比例,达到这个值的时候,从整个rs中找出最需要flush的region进行flush,# 达到该值会触发阻塞
hbase.regionserver.global.memstore.size.lower.limit
默认值是0.95,是上一个rs整个memstore占用内存在总内存的40%中的95%
# 达到该值会触发刷写
hbase的rowkey设计
- rowkey 唯一原则
- rowkey 长度原则
- rowkey 散列原则(数据均衡分布,避免了热点数据的造成)
热点问题
避免热点的方法:
加盐:在rowkey前面增加一个随机数,使他跟之前的rowkey不一样,做区分
哈希:哈希会使同一行永远用一个前缀加盐。 哈希也可以使负载均衡分散到整个集群,但是读却是可以预测的
反转:将我们经常改变的(没有意义的部分)rowkey放在前面,有效的随机rowkey
时间戳”反转“:让时间戳作为行键,但是我们最新的时间戳在最后面,需要将
最新的时间戳放在前面,通过使用最大时间戳99999减去最新时间戳,那么最新的时间戳就在靠前的位置