前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

什么是热点?

检索 hbase 的记录首先要通过row key来定位数据行。

当大量的 client 访问 hbase 集群的一个或少数几个节点,造成少数 region server 的读/写请求过多、负载过大,而其他 region server 负载却很小,就造成了“热点”现象。

热点的解决方案

  • 1、预分区
预分区的目的让表的数据可以均衡的分散在集群中,而不是默认只有一个region分布在集群的一个节点上。

关于预分区请参考我的这篇博客——HBase 表的预分区是什么?为什么要预分区?如何预分区?

  • 2、加盐
这里所说的加盐不是密码学中的加盐,而是在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。
  • 3、哈希
哈希会使同一行永远用一个前缀加盐。哈希也可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完整的rowkey,可以使用get操作准确获取某一个行数据。
  • 4、反转
反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。
上一篇 下一篇