HBase表的Region分配方法及系统的制作方法

文档序号:9436125阅读:1066来源:国知局
HBase表的Region分配方法及系统的制作方法
【技术领域】
[0001]本发明涉及互联网大数据领域,尤其涉及一种HBase表(一种分布式的、面向列的开源数据库)的Reg1n分配方法。
【背景技术】
[0002]HBase表中包括有多个Reg1n,每个Reg1n中都存储一定的数据。集群中的Reg1nServer可能分配到一个或多个Reg1n。
[0003]由于一些HBase表的schema最初设计时并没有采用Hash(哈希),导致数据写入、读取不均。现在在原有schema的基础上,添加了 Hash列,并使用Hash的结果集做pre-split (HBase的一种使用方法)。原来的Reg1n由于缺少Hash列,Hash列值都会为零,新的Reg1n则会均分到不同的Hash列值。新的schema上线之后,Hash列值不为零的reg1n数比较少,balancer (HBase自带的功能)不能很好地将Hash列值不为零的reg1n均分到整个集群,容易造成热点。这些热点的出现,会使得数据的请求时间变长,大大影响整个集群的稳定性和可用性,严重时甚至可能造成系统瘫痪。

【发明内容】

[0004]本发明要解决的技术问题是为了克服现有技术中不同Hash列值的Reg1n在集群中分配不均导致容易出现热点的缺陷,提供一种能够使得不同Hash列值的Reg1n均匀分配的HBase表的Reg1n分配方法及系统。
[0005]本发明是通过以下技术方案解决上述技术问题的:
[0006]本发明提供一种HBase表的Reg1n分配方法,其特点是,该Reg1n分配方法包括:
[0007]S1、统计集群的HBase表中的每一 Reg1n的Hash列值;
[0008]S2、分别计算集群中每一 Hash列值的平均分配数,每一 Hash列值的平均分配数分别等于该Hash列值对应的Reg1n的总数除以该集群的Reg1nServer的总数;
[0009]S3、从该集群的 Reg1nServer 中选取一目标 Reg1nServer ;
[0010]S4、统计目标Reg1nServer的Hash列值分布;
[0011 ] S5、将目标Reg1nServer上每一 Hash列值分别作为待处理Hash列值,并判断目标Reg1nServer上待处理Hash列值对应的Reg1n的数量是否大于该待处理Hash列值的平均分配数,若大于则从该待处理Hash列值对应的Reg1n中选取N个第一 Reg1n并将该些第一 Reg1n移出,N为大于或等于I的整数。
[0012]其中,目标Reg1nServer可以从集群的Reg1nServer中随机选取或自主指定;所述Hash列值分布包括目标Reg1nServer的每个Reg1n的Hash列值。35对目标Reg1nServer上每个Hash列值都进行一次判断,例如,若目标Reg1nServer上Reg1n的Hash列值包括0、1、2和3,那么T2会将0、1、2和3分别作为待处理Hash列值,并判断其对应的Reg1n的数量是否大于其平均分配数,以待处理Hash列值为O为例,若目标Reg1nServer上Hash列值为O的Reg1n的数量大于集群中Hash列值为O的平均分配数,则从目标Reg1nServer上Hash列值为O的Reg1n中选取N个Reg1n移出,若目标Reg1nServer上Hash列值为O的Reg1n的数量小于或等于集群中Hash列值为O的平均分配数,则不需从目标Reg1nServer上移出Hash列值为O的Reg1n,然后将待处理Hash列值设定为1,再次进行判断。
[0013]本技术方案能够使得集群中每个Reg1nServer上不同Hash列值的Reg1n均勾分布,避免出现某个的Reg1nServer上的某个Hash列值的Reg1n过多的情况,防止出现热点、影响集群的稳定性和可用性。
[0014]较佳地,N大于或等于目标Reg1nServer上该待处理Hash列值对应的Reg1n的个数与该待处理Hash列值的平均分配数的差值。
[0015]通过本技术方案,目标Reg1nServer上该待处理Hash列值对应的Reg1n的个数小于或等于该待处理Hash列值的平均分配数,避免同一 Reg1nServer上某一种Hash列值的Reg1n过多。
[0016]较佳地,35还包括在目标Reg1nServer上待处理Hash列值对应的Reg1n的数量大于该待处理Hash列值的平均分配数时执行以下步骤:
[0017]S51、将该些第一 Reg1n移入该集群的一个或多个非目标Reg1nServer。
[0018]该非目标Reg1nServer 为该集群中不是目标 Reg1nServer 的 Reg1nServer,例如,集群中的Reg1nServer A作为目标Reg1nServer时Reg1nServer B即为非目标Reg1nServer, Reg1nServer B 作为目标 Reg1nServer 时 Reg1nServer A 即为非目标Reg1nServer0
[0019]较佳地,S51包括:
[0020]S511、从该集群的非目标Reg1nServer中选取一待移入Reg1nServer,该待移入Reg1nServer为非目标Reg1nServer中该待处理Hash列值对应的Reg1n的数量小于该待处理Hash列值的平均分配数的Reg1nServer ;
[0021]S512、计算M,M等于该待移入Reg1nServer上该待处理Hash列值对应的Reg1n的数量与该待处理Hash列值的平均分配数的差值的绝对值;
[0022]S513、判断M是否大于或等于N,若是,执行S514,若否,执行S515;
[0023]S514、将移出的N个第一 Reg1n移入至该待移入Reg1nServer ;
[0024]S515,将移出的N个第一 Reg1n中选取M个第一 Reg1n移入至该待移入Reg1nServer,将N替换为N-M,然后返回步骤S5110
[0025]其中,待移入Reg1nServer可以从该待处理Hash列值对应的Reg1n的数量小于该待处理Hash列值的平均分配数的非目标Reg1nServer中随机选择或按照某些要求指定。本技术方案优先将一个待移入Reg1nServer上该待处理的Hash列值对应的Reg1n数量达到平均分配数,若还有剩余的第一 Reg1n,则重新选择一个待移入Reg1nServer,直至所有的第一 Reg1n都移入至非目标Reg1nServer为止。
[0026]较佳地,该Reg1n分配方法还包括:在执行S5之后返回步骤S 3,直至遍历该集群的每一 Reg1nServer。
[0027]所述遍历该集群的每一 Reg1nServer是指集群中的每一 Reg1nServer均作为过目标Reg1nServer。再次返回步骤S3时选取的目标Reg1nServer与前一次选取的目标Reg1nServer 不同。
[0028]本发明还提供一种HBase表的Reg1n分配系统,其特点是,该Reg1n分配系统包括:
[0029]—第一统计单元,用于统计集群的HBase表中的每一 Reg1n的Hash列值;
[0030]—计算单元,用于分别计算集群中每一 Hash列值的平均分配数,每一 Hash列值的平均分配数分别等于该Hash列值对应的Reg1n的总数除以该集群的Reg1nServer的总数;
[0031]一目标单元,用于从该集群的Reg1nServer中选取一目标Reg1nServer ;
[0032]—第二统计单元,用于统计目标Reg1nServer的Hash列值分布;
[0033]—处理单元,用于将目标Reg1nServer上每一 Hash列值分别作为待处理Hash列值,并判断目标Reg1nServer上待处理Hash列值对应的Reg1n的数量是否大于该待处理Hash列值的平均分配数,若大于则从该待处理Hash列值对应的Reg1n中选取N个第一Reg1n并将该些第一 Reg1n移出,N为大于或等于I的整数。
[0034]较佳地,N大于或等于目标Reg1nServer上该待处理Hash列值对应的Reg1n的个数与该待处理Hash列值的平均分配数的差值。
[0035]较佳地,该处理单元还用于目标Reg1nServer上待处理Hash列值对应的Reg1n的数量大于该待处理Hash列值的平均分配数时调用一移入单元;
[0036]该移入单元用于将该些第一 Reg1n移入该集群的一个或多个非目标Reg1nServer。
[0037]较佳地,该移入单元包括:
[0038]—选取模块,用于从该集群的非目标Reg
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1