rowkey设计原则
1.Rowkey的唯一原则2.Rowkey的排序原则3. Rowkey的散列原则 a.Reverse反转 例子:反转Rowkey的例子通常以手机举例,可以将手机号反转后的字符串作为Rowkey,这样的就避免了以手机号那样比较固定开头(137x、15x等)导致热点问题 b.Salt加盐 Salting是将每一个Rowkey加一个前缀,前缀使用一些随机字符,使得数据分散在多个不同的Region,达到Region负载均衡的目标 例如:加Salt前的Rowkey:abc001、abc002、abc003 分别加上a、b、c前缀,加Salt后Rowkey为:a-abc001、b-abc002、c-abc003 c.Hash散列或者Mod4.Rowkey的长度原则Rowkey长度设计原则:Rowkey是一个二进制,Rowkey的长度被很多开发者建议说设计在10~100个字节,建议是越短越好原因有两点:其一是HBase的持久化文件HFile是按照KeyValue存储的,如果Rowkey过长比如500个字节,1000万列数据光Rowkey就要占用500*1000万=50亿个字节,将近1G数据,这会极大影响HFile的存储效率其二是MemStore缓存部分数据到内存,如果Rowkey字段过长内存的有效利用率会降低,系统无法缓存更多的数据,这会降低检索效率