
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在介绍服务器开发的时候有给大家提到过关于负载均衡的相关知识。今天,我们就一起来了解一下,分布式系统中的负载均衡应该如何实现。
1.概述
在分布式系统中,负载均衡是一个非常重要的功能,在HBase中通过Region的数量来实现负载均衡,HBase中可以通过hbase.master.loadbalancer.class来实现自定义负载均衡算法。下面将为大家剖析HBase负载均衡的相关内容以及性能指标。
2.内容
在HBase系统中,负载均衡是一个周期性的操作,通过负载均衡来均匀分配Region到各个RegionServer上,通过hbase.balancer.period属性来控制负载均衡的时间间隔,默认是5分钟。触发负载均衡操作是有条件的,但是如果发生如下情况,则不会触发负载均衡操作:
负载均衡自动操作balance_switch关闭,即:balance_switchfalse
HBaseMaster节点正在初始化操作
HBase集群中正在执行RIT,即Region正在迁移中
HBase集群正在处理离线的RegionServer
3.负载均衡算法
HBase在执行负载均衡操作时,如何判断各个RegionServer节点上的Region个数是否均衡,这里通过以下步骤来判断:
计算均衡值的区间范围,通过总Region个数以及RegionServer节点个数,算出平均Region个数,然后在此基础上计算小值和大值
遍历超过Region大值的RegionServer节点,将该节点上的Region值迁移出去,直到该节点的Region个数小于等于大值的Region
遍历低于Region小值的RegionServer节点,分配集群中的Region到这些RegionServer上,直到大于等于小值的Region
负责上述操作,直到集群中所有的RegionServer上的Region个数在小值与大值之间,集群才算到达负载均衡,之后,即使再次手动执行均衡命令,HBase底层逻辑判断会执行忽略操作
4..性能指标
在HBase系统中,有一个非常重要的性能指标,那就是集群处理请求的延时。HBase系统为了反应集群内部处理请求所耗费的时间,提供了一个工具类,即:org.apache.hadoop.hbase.tool.Canary,这个类主要用户检查HBase系统的耗时状态。如果不知道使用方法,可以通过help命令来查看具体的用法
5.总结
在维护HBase集群时,比如重启某几个RegionServer节点后,可能会发送Region不均衡的情况,这时如果开启自动均衡后,需要立即使当前集群上其他RegionServer上的Region处于均衡状态,那么就可以使用手动均衡操作。另外,HBase集群中各个RegionServer的耗时情况,能够反映当前集群的健康状态。
作者:哥不是小萝莉
节选:博客园
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!