前面和大家分享了一些增删改查操作,这些操作在HBase中都是和RowKey紧密相关的,所以优秀的RowKey设计方案是非常重要的。今天就来说说如何进行HBase的RowKey的设计。
RowKey的作用
RowKey在查询中的作用
HBase中RowKey可以唯一标识一行记录,在HBase中检索数据有以下三种方式:通过 get 方式,指定 RowKey 获取唯一一条记录
通过 scan 方式,设置 startRow 和 stopRow 参数进行范围匹配
全表扫描,即直接扫描整张表中所有行记录
当大量请求访问HBase集群的一个或少数几个节点,造成少数RegionServer的读写请求过多、负载过大,而其他RegionServer负载却很小,这样就造成热点现象。大量访问会使热点Region所在的主机负载过大,引起性能下降,甚至导致Region不可用。所以我们在向HBase中插入数据的时候,应尽量均衡地把记录分散到不同的Region里去,平衡每个Region的压力。
下面根据一个例子分别介绍下根据RowKey进行查询的时候支持的情况。
如果我们RowKey设计为uid+phone+name,那么这种设计可以很好的支持一下的场景:
uid=873969725 AND phone=18900000000 AND name=zhangsan
uid= 873969725 AND phone=18900000000
uid= 873969725 AND phone=189?
uid= 873969725