谈笑间学会-Hbase Rowkey设计
1、为什么Rowkey这么重要
1.1、Rowkey是什么
-
类似于MySQL、Oracle中的主键,用于标示唯一的行
-
完全是由用户指定的一串不重复的字符串;
-
Hbase中的数据永远数据根据Rowkey的字典排序来排序的。
1.2、Rowkey的作用
- 读写数据通过Rowkey找到对应的Region;
- MemStore中的数据按RowKry字典顺序排序;
- HFile中的数据按Rowkey字典顺序排序
1.3、Rowkey对查询的影响
举个栗子—Rowkey : uid+phone+name
-
很好支持的数据的检索
- uid = 001 AND phone=12345678901 AND name = zhang
- uid = 001 AND phone=123?
- uid = 001
-
不太好支持的数据的检索
- phone=12345678901 AND name = zhang
- phone=12345678901
- name = zhang
1.4、Rowkey对Region划分的影响
Hbase表的数据是按照Rowkey来分散到不同的Region,不合理的Rowkey设计会导致热点问题的产生。
<热点问题是大量的Client直接访问集群的一个或极少数节点,而集群中其他节点处于相对空闲状态。