hbase优化原理

本文探讨了HBase列簇优化,指出读多时列簇可适当增多以减少IO和网络开销,而写多时应减少列簇以节省内存并避免compaction风暴。Rowkey设计建议保持较短,以提高存储和检索效率,并通过倒序插入解决写热点问题。此外,预分区原则有助于控制Region分裂和合并,提高入库效率。
摘要由CSDN通过智能技术生成

1   列簇多少

     1.1 读多的情况,列簇可以多。

       family越多,那么获取每一个cell数据的优势越明显,因为io和网络都减少了。
  如果只有一个family,那么每一次读都会读取当前rowkey的所有数据,网络和io上会有一些损失

     1.2 写多的情况,列簇尽量少。

       首先,内存方面来说,对于一个Region,会为每一个表的每一个Family分配一个Store,而每一个Store,都会分配一个MemStore,所以更多的family会消耗更多的内存。
  其次,从flush和compaction方面说,目前版本的hbase,在flush和compaction都是以region为单位的,也就是说当一个family达到flush条件时,该region的所有family所属的memstore都会flush一次,即使memstore中只有很少的数据也会触发flush而生成小文件。这样就增加了compaction发生的机率,而compaction也是以region为单位的,这样就很容易发生compaction风暴从而降低系统的整体吞吐量。
  第三,从split方面考虑,由于hfile是以family为单位的,因此对于多个family来说,数据被分散到了更多的hfile中,减小了split发生的机率。这是把双刃剑。更少的split会导致该region的体积比较大,由于balance是以region的数目而不是大小为单位来进行的,因此可能会导致balance失效。而从好的方面来说,更少的split会让系统提供更加稳定的在线服务。而坏处我们可以通过在请求的低谷时间进行人工的split和balance来避免掉。

2 Rowke

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值