动态均衡负载的分布式元数据管理方法与流程

文档序号:11842162阅读:272来源:国知局
动态均衡负载的分布式元数据管理方法与流程
本发明涉及分布式文件存储的管理方法,具体的讲是可动态均衡负载的分布式元数据管理方法。
背景技术
:随着计算机科学与技术快速地发展,人们产生、使用、和存储的数据都在以惊人的速度增长。为了适应大量数据所带来的规模效应,分布式文件系统应运而生。HDFS系统是分布式文件系统中开源实现的典型代表,它具有强大的存储能力,可以横向扩展,容错性高。但是HDFS系统也有相应的缺陷,例如在HDFS中元数据服务器是单点结构的,具有纵向扩展性缺陷、可用性缺陷以及隔离性缺陷等。为了提高元数据的查寻速度,元数据被存放在HDFS的内存中,虽然单个元数据所占的存储空间非常小,但当数据存储量不断增长时,元数据的总量会达到非常大的规模,这将远远超出单台服务器的内存存储能力,造成HDFS的纵向扩展性缺陷。在HDFS中,单点的元数据服务器如果宕机的话,整个元数据服务器集群将无法再对外界提供服务,造成HDFS的可用性缺陷。在HDFS中文件操作的性能制约于单个元数据服务器的吞吐量,如果某个用户提交了一个负载很大的读写任务,这将会减慢其他用户的任务执行速度,造成HDFS的隔离性缺陷。为了克服如上HDFS单节点元数据服务器的设计带来的缺陷,现有的解决方案是将单节点元数据服务器的结构改造为分布式元数据服务器,通过多个元数据服务器组成集群来对外提供元数据服务。分布式元数据服务器中的典型代表为HDFSFederation系统和NCUC系统。然而,现有的解决方案也都存在着一些问题。例如在HDFSFederation系统中没有解决负载均衡问题,HDFSFederation系统采用客户端挂载表的形式分担文件和负载,如何挂载命名空间是由人工进行配置的,这种方法需要更过的人工介入,难以达到理想的负载均衡状态。其次在HDFSFederation系统中,元数据是以单副本形式存放,如果某个元数据服务器宕机了,其管理的相应文件便不可以访问,会造成单点故障的问题。NCUC系统在元数据分配的时候没有考虑服务器的异构性能差异,在生产环境中服务器集群经常根据需求进行扩容,导致服务器之间存在着性能的异构差异,NCUC系统的一致性哈希算法在元数据分布的时候并没有考虑到这一点,仅仅是对元数据服务器的IP和端口串进行哈希处理,理想的情况下应该是性能高的元数据服务器能够管理更多的元数据。NCUC系统中的元数据仍然是以单副本的形式存在的,存在着单点故障的问题。NCUC系统也没有动态负载均衡,虽然在元数据服务器集群足够大的情况下,NCUC系统可以在同构元数据服务器集群中将元数据均匀的分布到元数据服务器中,但是客户端有可能在一段时间内突然对一些文件发出大量的请求,这时候需要通过动态的负载均衡来提高元数据服务器集群的性能,NCUC系统并没有这种能力。技术实现要素:本发明提供了一种动态均衡负载的分布式元数据管理方法,以解决元数据服务器单点故障的问题,以及由于元数据在元数据服务器集群中分布时元数据服务器的异构性能差异导致的负载均衡问题。本发明动态均衡负载的分布式元数据管理方法,包括:a.确定相关负载参数的权重:确定相关负载参数之间的重要程度,得到判断矩阵,并对判断矩阵进行运算得到所述负载参数的最优解。所述的相关负载参数可以包括元数据服务器的CPU负载、内存占用率、IO带宽占用率和磁盘剩余空间等参数,也可以包含其它需要的参数;b.对元数据进行划分:通过带有权重的一致性哈希函数计算并根据各元数据服务器的当前计算能力,求得元数据和各个元数据服务器在哈希环上的距离,将元数据存放于与其对应的距离最短的元数据服务器中。通过以上步骤,可使元数据在存入元数据服务器时就对存储过程进行优化,根据元数据服务器的当前负载情况选择最适合的元数据服务器进行存储,使集群中的各元数据服务器相互间最大程度保持相似的负载。随着时间的发展,元数据量会不断的增长,元数据服务器的存储系统中会存在一些热点文件,进而导致这些文件的元数据也成为热点,这会使得元数据服务器集群中的负载不均衡,极端情况下某些元数据服务器可能会因此成为不可用状态。这时候仅仅通过在元数据开始创建的时候修改它的存储位置选择相应的元数据服务器已经解决不了这个问题了,需要根据元数据服务器集群的负载情况进行动态的负载均衡。因此在可以步骤b之后,再进行步骤c:动态均衡元数据服务器负载:计算各元数据服务器当前的资源利用率和请求响应时间,得到各元数据服务器当前的服务器负载,将元数据从高负载的元数据服务器迁移至低负载的元数据服务器。由此动态的使各元数据服务器的负载相互平衡。其中一种判断元数据服务器负载高低的方式为,在步骤c还通过计算元数据服务器集群的平均负载,以及元数据服务器集群当前负载的高/低阈值,然后根据各元数据服务器当前负载与所述高/低阈值的差值进行所述元数据的迁移。具体的一种方式为,步骤a中所述对判断矩阵进行运算包括:将判断矩阵归一化后按行相加,得到判断矩阵的最大特征根和权向量的近似解,然后通过一致性验证,确定相关负载参数的最终解。在此基础上,步骤b中具体步骤可以包括:b1.将元数据和元数据服务器分别映射到哈希环上;b2.计算各个元数据服务器的当前计算能力;b3.将元数据服务器的哈希环和元数据的哈希环重叠,计算出元数据和各元数据服务器在哈希环上的距离;b4.将元数据存放于与其对应的距离最短的元数据服务器中;b5.将元数据和元数据服务器的映射关系存储于元数据映射表中。为了便于对元数据映射表进行管理和访问,优选将b5步骤中所述的元数据映射表在元数据服务器中设置为全局访问,这样从各个元数据服务器上都可以获取和编辑元数据映射表的数据,使其数据可以实时更新和更加准确。本发明动态均衡负载的分布式元数据管理方法,能够在存储元数据时根据元数据服务器的性能差异和当前负载将元数据均匀的分布到元数据服务器集群中,并且当元数据服务器集群中的负载发生动态变化的时候,能够动态调整元数据服务器集群中元数据的分布使各元数据服务器的负载均衡,极大程度提高了元数据服务器集群的性能和存储质量。以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。附图说明图1为本发明动态均衡负载的分布式元数据管理方法的流程图。图2为图1中动态均衡元数据服务器集群负载的流程图。具体实施方式如图1所示本发明动态均衡负载的分布式元数据管理方法,步骤包括:a.确定相关负载参数的权重:a1.对相关参数的重要性两两进行比较,构造判断矩阵。定义r1、r2、r3、r4分别是元数据服务器的CPU负载、内存占用率、IO带宽占用率和磁盘剩余空间4个相关参数所占的权重,4个权重的取值在0和1之间,并且之和为1。将上述4个权重采用“1~9值法”的标度表示,如表1所示:表1:使用“1~9值法”将准则层中指标的重要性因素进行两两对比,得到参数判断矩阵,如表2所示:表2:r1r2r3r4r111/377r23188r31/71/811r41/71/811根据表2,得到判断矩阵a2.对判断矩阵进行归一化处理。将表2的每一列进行求和,得到表3:表3:r1r2r3r4r111/377r23188r31/71/811r41/71/811Σ30/719/121717按照公式:根据表3对判断矩阵A的每一列元素进行归一化处理,得到表4:表4:r1r2r3r4r17/304/197/177/17r27/1012/198/178/17r31/303/381/171/17r41/303/381/171/17归一化后的判断矩阵为:a3.计算判断矩阵的最大特征根和权向量的近似解。将归一化处理后的判断矩阵按行相加,得到表5:表5:r1r2r3r4Σr17/304/197/177/1712281/9690r20.712/198/178/1722023/9690r31/303/381/171/172228/9690r41/303/381/171/172228/9690表5的最后一列元素构成向量W,W=(w1,…,wn)T,其中T为表5的行数,n为表5的列数。然后对每一分向量按照公式:做归一化处理,通项为wi。计算得到w1=0.316,w2=0.568,w3=0.058,w4=0.058,即所求权向量的近似解为W=(w1,w2,w3,w4)T,结合上述归一化后的判断矩阵A,有AW=W。再通过近似算法,根据公式计算出判断矩阵的最大特征根由上述权重数量n=4,计算得到λmax=4.006。a4.进行一致性验证,确定相关负载参数的最终解。由公式计算得一致性指标CI=0.002,再由n=4求得平均随机一致性指标RI=0.9,显然一致性比例CR<0.10,通过一致性验证,所以最终权向量为W=(0.316,0.568,0.058,0.058)T,评价指标的权值计算完成。则4个权值分别为人r1=0.316,r2=0.568,r3=0.058,r4=0.058。b.对元数据进行划分:根据元数据服务器的性能异构差异对元数据进行初始划分,通过带有权重的一致性哈希函数计算元数据和元数据服务器在重合的哈希环上的距离,取与元数据距离最小的几个元数据服务器来存储目标元数据,在元数据分布的时候充分考虑元数据服务器的性能。b1.根据哈希函数将元数di据映射到哈希环上的某个点上。以文件目录的路径全名为参数,这样在同一个目录下的所有文件将会得到相同的值,利用局部性原理可以提高存储系统的性能。b2.根据哈希函数将元数mi据映射到哈希环上的某个点上。以元数据服务器的IP地址和元数据服务器的对外端口串addri为参数。b3.计算各个元数据服务器的当前计算能力。当元数据服务器中没有存储任何元数据的时候,元数据服务器的计算能力如下计算:ci(0)=r1*cpui+r2*memi+r3*ioi+r4*diski其中cpu表示CPU负载,mem表示内存占用率、io表示IO带宽占用率,disk磁盘剩余空间,i为元数据服务器标号。随着元数据服务器集群对外提供元数据管理服务,随着时间的变化,元数据服务器的负载发生了变化,此时新的元数据进入到集群中存储必须考虑到这种动态变化,距离函数应该采用增量动态变化来适应这种改变。元数据服务器处理能力随着时间变化表示如下面公式所示:ci(t)=r1*cpui(t)+r2*memi(t)+r3*ioi(t)+r4*diski(t)其中cpui(t),memi(t),ioi(t),diski(t)分别是元数据服务器当前剩余的CPU处理能力、剩余内存大小、剩余IO带宽以及剩余磁盘大小。b4.根据各元数据服务器的当前计算能力求得元数据与各个元数据服务器在哈希环上的距离。将元数据服务器的哈希环和元数据的哈希环重叠起来,根据公式算出元数据和元数据服务器在哈希环上的距离,其中ci(t)是元数据服务器当前的处理能力。如果元数据服务器当前性能较好则适合存储更多的元数据。b5.取出若干个哈希环上和目标元数据距离最短的元数据服务器(例如3个),将每个元数据的3个副本分别存放在这些元数据服务器上。多副本存放能够提高元数据的可用性,例如3副本分别存放到3个服务器,元数据本身就是3个地位对等的副本,修改时则需要同步所有的副本。b6.将元数据和元数据服务器的映射关系存放在全局元数据映射表中。c.动态均衡元数据服务器负载:随着时间的发展,元数据量会不断的增长,元数据服务器的存储系统中会存在一些热点文件,进而导致这些文件的元数据也成为热点,这会使得元数据服务器集群中的负载不均衡,极端情况下某些元数据服务器可能会因此成为不可用状态。这时候仅仅通过在元数据开始创建的时候修改它的存储位置选择相应的元数据服务器已经解决不了这个问题了,需要根据元数据服务器集群的负载情况进行动态的负载均衡。如图2所示的步骤:c1.计算元数据服务器当前的资源利用率。考虑元数据服务器的负载不应该从元数据服务器的处理能力考虑,而应该从元数据服务器的资源利用率角度考虑。定义元数据服务器mi的资源利用率αi(t)如下面公式所示:αi(t)=r1*cpuUi(t)+r2*memUi(t)+r3*ioUi(t)+r4*diskUi(t),其中cpuUi(t),memUi(t),ioUi(t),diskUi(t)分别是元数据服务器当前的CPU利用率、内存利用率、IO带宽利用率、磁盘利用率。为了避免某个时刻元数据服务器的资源利用率发生突变的情况,使用一个基于权重的移动平均值来计算修正后的元数据服务器的资源利用率:α'i(t)=θ*ai(t)+(1-θ)*ai'(t-1),其中参数0<θ<1,可以取θ=0.4。c2.计算元数据服务器当前处理请求的平均时间。在考虑元数据服务器资源利用率的同时,也需要综合考虑元数据服务器当前的服务质量,通过元数据请求在元数据服务器内的平均处理时间可以很好的判断出现在元数据服务器的服务质量,如果元数据请求的平均处理时间短,则说明元数据服务器的服务质量较高,负载不是很大。元数据服务器mi在以t时刻为基准的最近一段时间内处理的元数据请求集合为Qi={q1,q2,…,qy},其中y为请求个数。它们在系统内的平均处理时间βi(t)为:其中wj是元数据j在队列中的等待时间,sj是元数据j在系统中的服务时间,qj是元数据集合Qi中的元数据j。c3.计算元数据服务器的当前负载。根据c1步骤计算的修正后的元数据服务器的资源利用率α'i(t),元数据服务器的负载loadi(t)通过公式:loadi(t)=α'i(t)+βi(t)可以计算求得。c4.计算元数据服务器集群的平均负载。元数据服务器集群M={m1,m2,...,mn}的平均负载load(t)通过公式计算,mn为第n个元数据服务器。c5.计算元数据服务器集群当前负载的阈值高/低位。元数据服务器集群的负载阈值低位loadl(t)为:loadl(t)=τ×load(t),缩小参数0<τ<1,此处可以取τ=0.6。元数据服务器集群的负载阈值高位loadh为:loadh(t)=χ×load(t),放大参数χ>1,取此处可以取χ=1.2。c6.对低负载元数据服务器上的全局热点元数据执行主动负载复制。如果loadi(t)<loadl(t)则说明元数据处于低负载的安全状态。全局热点元数据可以定义为访问频率排在所有的元数据的前5%的元数据,也可以根据实际情况进行比例定义。如果低负载元数据服务器上存在着全局热点元数据,则将这些热点元数据复制到其它的低负载元数据服务器上来分担负载压力,使热点元数据分散于多个低负载的元数据服务器中,避免某一个元数据服务器由于热点元数据的增加而超载。c7.对高负载元数据服务器上的局部热点元数据执行被动负载迁移。在元数据服务器集群中某个元数据服务器mi的负载loadi(t)>loadh(t),则说明这个元数据服务器的处于高负载状态。如果仅仅将高负载服务器上的局部热点元数据复制到其它服务器上已经不能缓解高负载服务器的压力,需要将局部热点元数据迁移到其他的低负载服务器以降低高负载服务器的压力。局部热点元数据可以定义为访问频率排在该元数据服务器所管理的所有的元数据中前5%的元数据。通过实施例,不但能够根据异构元数据服务器的性能差异和当前负载将元数据均匀的分布到元数据服务器集群中。而且当元数据服务器集群中的负载发生动态变化的时候,还能够通过元数据动态均衡负载的方式来平衡负载在元数据服务器集群中的分布,极大程度提高了元数据服务器集群的性能。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1