Hbase如何分表及预分区

每月的数据量大约在8千万条左右,共有十个字段。rowkey建表时选择用户id+访问时间。
一年数据量在10亿条左右。这样的数据量应该怎么分表?按月分还是按年好?
按照年的话,数据检索会不会很慢?

fish - Hadooper

赞同来自: shining0123

HBase不用分表吧,业务需求是啥?为什么分表?

fish - Hadooper

赞同来自: wangxiaolei

key值时用户id+时间,用户id在高位,自然通用户记录都会被聚到一起,通过用户id查询访问轨迹时,直接设置startrow跟endrow就可以scan出结果,为何要分表呢?

mopishv0 - 高级开发工程师@美团

赞同来自: shining0123

hbase不像hive那样分区,或者分bucket; hbase的数据按照rowkey有序存储,region也是按照rowkey范围有序、连续、不重叠的划分的,所以分region的原则是需要让你的请求和数据能按照rowkey均匀的散列在每个region中;基于以上原则,可以发现,分表一方面需要考虑数据划分,但更重要的是需要思考请求特征,你这里只说明了数据特征,没有说明请求特征(包括写入和读取需求),无法给出更多建议; 一般来说如果rowkey前缀是自增值可以进行以下几种散列方式: 取md5,纯均匀散列,无法scan,region按照md5值范围均匀划分; 倒序,相对均匀,但是需要考虑某些前缀过热的情况,查询方面适合scan指定前缀内的数据,region按照倒序后的记录抽样划分; salt,加盐,也就是说给rowkey加一个新的前缀,常见手段为rowkey值或者随机值 mod region数量(region数量固定不再autosplit),scan时需要从每个region中分别进行一次并归并,region按照前缀预分; 综上,你可以根据你的需求,做进一步决定。

shining0123

赞同来自:

每个月网站访问日志数据量递增增长,每月数据量在8千万条左右,通过用户id查询该用户访问轨迹。是按年分表好还是按月好一点。求教大神。

要回复问题请先登录注册