Rowkey的作用
— RowKey在查询中的作用
HBase中RowKey可以唯一标识一行记录,在HBase中检索数据有一下三种方式:
-
1.通过get方式,指定RowKey获取唯一一条记录;
-
2.通过Scan方式,设置startRow和stopRow参数进行范围匹配;
-
3.全表扫描,即直接扫描整张表中所有行记录;
当大量的请求访问HBase集群的一个或者少数几个节点,造成少数RegionServer的读写请求过多、负载过大,而其他的RegionServer负载很小,这样就造就了热点现象。
大量的访问会使热点Region所在的主机负载过大,因其性能下降,甚至Region不可用。所以我们在向HBase中插入数据的时候,应该尽量均衡地把记录分散到不同的Region里面去,平衡每个Region的压力。
例子一、根据介绍的RowKey进行查询的时候支持情况
如果我们RowKey设计为 uid + phone + name,那么这种设计可以很好的支持一下场景:
uid=xxx AND phone=yyyy AND name=zzzz
uid=xxx AND Phine=yyyy
uid=XXX
但是上述的设计难以支持如下情况:
uid=xxx AND name=zzz
name=zzz
— Rowkey在Region中的作用
在HBase中,Region相当于一个数据分片,每个Region都有startRowKey和StopRowKey,
这个表达Region存储RowKey的范围,HBase表的数据时按照RowKey来分散到不同的Region,要想将数据记录均衡的分散到不同的Region中去,
我们需要RowKey满足这种散列的特点。此外,读写过程也适合Ro