HBase之常见问题!

热点问题

什么是热点?

检索 HBase 的记录首先要通过Row Key来定位数据行。

当大量的 Client 访问 HBase 集群的一个或少数几个节点。

造成少数 Region Server 的读/写请求过多、负载过大,而其他Region Server负载却很小,就造成了 热点 现象。

解决方案:

预分区:

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

加盐:

  • Rowkey的前面增加随机数,具体就是给Rowkey分配一个随机前缀以使得它和之前的Rowkey的开头不同。

哈希:

  • 哈希会使同一行永远用一个前缀加盐。
    • 也可以使负载分散到整个集群,但是读是可以预测的。
  • 使用确定的哈希可以让客户端重构完整的Rowkey,可以使用get操作准确获取某一个行数据。

反转:

  • 反转固定长度或者数字格式的Rowkey
    • 这样可以使得Rowkey中经常改变的部分放在前面。