正文
rowKey的作用
读写数据时通过 RowKey 找到对应的 Region;
MemStore 中的数据按 RowKey 字典顺序排序;
HFile 中的数据按 RowKey 字典顺序排序。
rowkey设计原则
唯一性:类似于MySQL、Oracle中的主键,用于标示唯一的行;
随机性:有效解决hbase热点问题,避免大量客户端只访问一个或几个节点;
长度设计:越短越好,8字节的整数倍利用了操作系统的最佳特性。如太长会影响HFile的存储效率;且MemStore将缓存部分数据到内存,内存的有效利用率会降低,检索效率低。
解决hbase热点问题
即增加rowkey的随机性,常见一下三种做法:
反转:如手机号或者时间等,开始位相似性较高,手机号第一位都是1,结束位有一定随机性,做rowkey时反转即可
加盐:在rowkey前加随机数
hash处理:建议使用MD5