您的位置:首页 > 其它

HBase - Rowkey 设计 | 那伊抹微笑

2015-07-31 15:26 120 查看
博文作者:妳那伊抹微笑

csdn 博客地址:http://blog.csdn.net/u012185296
itdog8 地址链接 : http://www.itdog8.com/thread-192-1-1.html
博文标题:HBase - Rowkey 设计 | 那伊抹微笑

个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在

技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术

转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!

qq交流群:214293307

(期待与你一起学习,共同进步)


1 Rowkey 设计
Rowkey 是不可分割的字节数,按字典排序由低到高存储在表中。
一个空的数组用来标识空间的起始或结尾。
Rowkey 决定了访问 HBase 表时可以得到的性能,原因有两个 :
1. Region 基于 Rowkey 为一个区间的行提供服务,并且负责区间的每一行。
2. HFile 在硬盘上存储有序的行。
这两个因素是相互关联的。当 Region 将内存中的数据刷写为 HFile 时,这些行已经排序过,也会有序地写到硬盘上。
Rowkey 的有序特性和底层存储格式可以保证 HBase 表在设计 Rowkey 之后的良好性能。

1.1 Rowkey 是以字典顺序从大到小排序

1.2 Rowkey 尽量散列 Rowkey 设计
一般的三种散列方法
1. 反转 userid
2. 散列 userid
3. userid 取模后进行 MD5 加密,取前6位作为前缀加入到 userid 前面

1.3 Rowkey 的长度尽量短
如果 Rowkey 太长,第一存储开销会增加,影响存储效率;第二内存中 Rowkey 字段过长,会导致内存的利用率低,进而降低索引命中率。
一般的做法是 :
时间使用 Long 来标识。
尽量使用编码压缩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: