Hbase中不宜有多个列簇的原因

我们都知道,在Hbase官网有这么一句话:“A typical schema has between 1 and 3 column families per table. HBase tables should not be designed to mimic RDBMS tables.”,中文意识大概是:一个典型的模式每个表有1到3个列族。HBase表不应设计为模拟RDBMS表。

Hbase中当某个Region的数据达到一定阈值后,会对其进行split(分裂)操作,Split是针对整个Region的。不同的列簇存储在不同文件中,但是不同的列簇可能会共享一个Region。由于不同的列簇共享Region,所以可能会出现一个列簇已经有1000万行,而另一个才100行,当一个Region进行split的时候,会导致100行的列同样会分布到多个Region中,当查询的时候系统效率会受到影响。某个column family在flush的时候,它临近的列簇也会因关联效应被触发flush,最终导致系统产生更多的I/O。所以一般不建议设置多个列簇。
结论:因此hbase表中的列簇的数量不应过多,最好是3个以下最优(经常查询的放一个列簇)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值