1、热点现象
检索habse的记录首先要通过row key来定位数据行,当大量的Cient访问Hbase集群的一个或少数几个节点,会造成少数RegionServer的读/写请求过多、负载过大,而其他RegionServer负载却很小,就造成了“热点”现象.
大量访问会使热点region所在的单个主机负载过大,引起性能下降甚至region不可用。
2、产生原因
有大量连续编号的row key ==> 大量row key相近的记录集中在个别region
==> client检索记录时,对个别region访问过多 ==> 此region所在的主机过载
==> 热点
3、常见的避免热点的方法
(1)加盐
- 这里所说的加盐不是密码学中的加盐,而是在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。给多少个前缀? 这个数量应该和我们想要分散数据到不同的region的数量一致(类似hive里面的分桶)。
- ( 自己理解: 即region数量是一个范围,我们给rowkey分配一个随机数,前缀(随机数)的范围是region的数量)
- 加盐之后的rowkey就会根据随机生成的前缀分散到各个region上,以避免热点。
(2)哈希
哈希会使同一行永远用