分享

关于hbase预分区和行键设计

tutu 发表于 2016-8-19 11:19:47 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 11118
在hbase中为了解决写热点问题,我们通常都要进行预分区。关于预分区我有几个问题想请教下:
在看了官方文档和网上的一些博客之后,我发现在进行预分区的时候通常都限定了行键的范围,其实也限定了行键的长度?
如果是这样,那是不是也意味着一旦分好了区,之后所有表的行键的设计都得按照这个范围来,也就是rowkey的长度都得一样???

由于我们公司的业务带有一点开放性也即不确定性,这就要求在最初的设计上行键尽量长一些(这样可以包容更多的情况),但是这样一来对内存和实际存储都将产生负面影响。当然前提是考虑先进行预分区。

这样的逻辑是否存在问题,或者大家有没有好的例子可以让我们借鉴下?谢谢!

已有(4)人评论

跳转到指定楼层
tutu 发表于 2016-8-19 11:48:48
有没有那样的分区方案,举个简单的例子比如说只按rowkey的首字母来进行分区
回复

使用道具 举报

langke93 发表于 2016-8-20 08:25:57
tutu 发表于 2016-8-19 11:48
有没有那样的分区方案,举个简单的例子比如说只按rowkey的首字母来进行分区

行健的设计不宜过长,否则会暂用过大的内存

一般来讲可以预留位
比如你的id最长是8位
那么可以这样设计
00000001
这样在怎么增长都不会超过这个长度
回复

使用道具 举报

tutu 发表于 2016-8-22 18:18:50
langke93 发表于 2016-8-20 08:25
行健的设计不宜过长,否则会暂用过大的内存

一般来讲可以预留位

由于业务的需求,我们的行键可能会很长。。。。可能要包含进一个32字节长度的key
回复

使用道具 举报

langke93 发表于 2016-8-23 14:21:01
tutu 发表于 2016-8-22 18:18
由于业务的需求,我们的行键可能会很长。。。。可能要包含进一个32字节长度的key

这个属于设计问题了,如果过长说明设计有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条