HBase学习笔记 --- 如何优雅的设计RowKey

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

猜你喜欢

转载自blog.csdn.net/u012965373/article/details/104993724