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