设计HBase RowKey需要注意的二三事
在HBase中,定位一条数据(即一个Cell)需要4个维度的限定:行键(RowKey)、列族(Column Family)、列限定符(Column Qualifier)、时间戳(Timestamp)。其中,RowKey是最容易出现问题的。除了根据业务和查询需求来设计之外,还需要注意以下三点。 打散RowKeyHBase中的行是按照RowKey字典序排序的。 这对Scan操作非常友好,因为RowKey相近的行总是存储在相近的位置,顺序读的效率比随机读要高。但是,如果大量的读写操作总是集中在某个RowKey范围,那么就会造成Region热点,拖累RegionServer的性能。因此,要适当地将RowKey打散。加盐(salting)+哈希(hashing)这里的“加盐”与密码学中的“加盐”不是一回事。它是指在RowKey的前面增加一些前缀。加盐的前缀种类越多,RowKey就被打得越散。前缀不可以是随机的,因为必须要让客户端能够完整地重构RowKey。我们一般会拿原RowKey或其一部分计算hash值,然后再对hash值做运算作为前缀。反转固定格式的数值以手机号为例,手机号的前缀变化比较少(...
