Balancer简介
Balancer是HBase非常重要的一个模块,属于Master功能的一部分,主要通过均衡RS上的region分布来规避一些热点问题。集群规模大,用户数量多,业务种类多时,balancer的重要性愈发明显。不及时的balance或未知问题的balance执行中断,都有可能使线上热点问题影响范围变大。社区在2021年,有多个开发者对balancer做了大量优化,这表明balancer的问题在各个公司中都很突出和重要。
Balancer背景
目前balancer主要分两种:SimpleLoadBalancer和StochasticLoadBalancer。
SimpleLoadBalancer保证每个RS的Region个数基本上都相等,确切来说,假设一共有n个RS,第i个RS有Ai个Region,记average=sigma(Ai)/n , 那么这种策略能够保证所有的RS的Region个数都在[floor(average), ceil(average)]之间。这种策略的实现简单,应用广泛。但是,这种策略考虑的因素比较单一, 没有考虑到每台RS的负载压力,数据locality等。
StochasticLoadBalancer考虑因素有多种,以减小代价值为标准,生成Region move的方案。
StochasticLoadBalancer
这是目前各大公司使用最多的balancer算法(RSGroupLoadBalancer底层基于他)。
以计算集群当前状态的代价值为基础,确定是否需要执行balance,以及如何移动regi