CN110704542A - 一种基于节点负载的数据动态分区系统 - Google Patents
一种基于节点负载的数据动态分区系统 Download PDFInfo
- Publication number
- CN110704542A CN110704542A CN201910978247.3A CN201910978247A CN110704542A CN 110704542 A CN110704542 A CN 110704542A CN 201910978247 A CN201910978247 A CN 201910978247A CN 110704542 A CN110704542 A CN 110704542A
- Authority
- CN
- China
- Prior art keywords
- load
- node
- value
- data
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于节点负载的数据动态分区系统,包括负载监测采集、预测、数据预分区、数据迁移等模块;采用二次平滑法预测节点负载,结合了AHP和熵值指标权重法,能够根据不同的数据分析应用得到相应的分区策略,动态调整系统的负载均衡性,提高应用的响应速度。本发明针对Spark和Memsql分布式集成框架的应用场景,由于分布式环境存在节点资源的异构性,为了减少节点之间数据传输消耗,充分利用每个节点的计算资源,通过负载均衡性来提高应用分析的并行计算效率。为此,本发明提出一种基于节点负载的数据动态分区机制和策略来改善系统负载均衡性及提高应用的响应速度,辅助相关工作人员完成决策。
Description
技术领域
本发明涉及大数据分布式计算存储领域,尤其涉及一种基于节点负载的数据动态分区系统。
背景技术
大数据的发展直接推动了各种分布式计算框架的发展,HBASE、HDFS、MemSql等优秀的分布式存储框架相继出现。但是众多的存储框架都存在因为分区不合理引发数据倾斜而导致集群负载不均衡的现象。为了提高集群数据分析处理实时性性能,有必要对集群进行数据分区策略的研究。数据分区是指分布式系统环境下的数据分布,需按照一定的方法策略,采用分区策略将整个数据合理地存放到集群中每个物理数据节点上。简单的数据分区容易做到,但是要让系统高效而稳健的运行则需要研究并设计出相应的分区策略。设计不当的数据分区策略会导致计算低效、接入成本高和网络负载重。在分布式系统分区策略设计中,数据分区应秉承的基本原则是:改善节点负载均衡性,提高数据分析应用的响应效率,及时地为企业提供决策,增加效益。
发明内容
发明目的:本发明要解决的技术问题是提供一种面向Spark的Memsql分区策略的系统,动态调整分布式计算的负载均衡性,提高数据分析的响应速度。
技术方案:本发明提供了一种基于节点负载的数据动态分区系统,所述系统是基于节点负载的数据动态分区机制和策略的系统。所述系统包括负载监测模块、采集模块、数据预分区模块和数据迁移模块;
所述负载监测模块用于,选取负载信息指标,并实时性地监测分布式集群中每个节点上的负载信息指标值;
所述采集模块用于,周期性的采集分布式集群中每个节点上的负载信息指标值;
所述数据预分区模块用于,预测分布式集群中每个节点上的负载信息指标值,然后根据指标权重方法得到每个节点的处理能力,最后根据每个节点的处理能力分布不同的数据量,完成数据预分区;
所述数据迁移模块用于,当分布式集群出现负载不均衡问题时,触发节点之间的数据迁移来提高负载均衡性。
所述负载监测模块选取CPU利用率、内存利用率及带宽的利用率作为负载信息指标值,通过部署Memsql(分布式内存数据库)资源监测服务实时性地监测分布式集群中每个节点上的负载信息指标值。
所述采集模块通过分布式Yarn资源管理组件提供的API(程序接口)周期性获得分布式集群中每个节点上的负载信息指标值,并保存到数据库中。
所述数据预分区模块用于,预测分布式集群中每个节点上的负载信息指标值,然后根据AHP(层次分析法)和熵值主客观指标权重集成方法得到每个节点的处理能力,最后根据每个节点的处理能力分布不同的数据量,完成数据预分区,具体包括如下步骤:
步骤1,采用二次指数平滑法进行负载信息指标值预测:
一次指数平滑法公式如下:
二次指数平滑法公式如下:
综合一、二次指数平滑公式,得出第T个周期的负载预测值,公式如下:
其中,Yj是第j个周期的负载信息指标值的实际值,和分别是第j-1个周期的负载信息指标值的预测值和第j个周期的负载信息指标值的预测值,和分别为第j-1个周期的二次指数平滑值和第j个周期的二次指数平滑值,是第j+T个周期的负载信息指标值的预测值;aj和bj是中间参数;α是平滑系数;
采集模块将数据库中的前n-1个周期采集的分布式集群中每个节点上的负载信息指标值发送给数据预分区模块,并与当前周期的每个节点上的负载信息指标值组成大小为n的负载数据,取第一个周期测量的负载信息指标值的实际值作为初值Yj、一次预测初值及二次预测初值,使用得到的n个负载数据预测未来d个周期的每个节点上的负载信息指标值,计算一个节点未来d个周期的负载信息指标值的平均值P,最终确定集群中每个节点的负载信息指标值;
步骤2,计算每个节点的处理能力;
步骤3,根据每个节点的处理能力分布不同的数据量。
步骤1中,通过计算标准偏差S来获得平滑系数的值:
其中,n代表取的周期数,通过调整平滑系数α值来计算偏方差S,取S最小时对应的平滑系数α值。
步骤2包括如下步骤:
步骤2-1,使用AHP主观权重方法进行计算:多属性决策中,由决策者对所有评价指标进行两两比较,得到判断矩阵U=(Aij)n×n,其中Aij为评价指标Ai与Aj比较而得的数值,取值为1至9之间的奇数,即取值为1、3、5、7、9时分别表示前者指标比后者指标同等重要、较重要、很重要、非常重要、极其重要;当取值为1至9之间的偶数时,分别表示两两相比的重要程度介于两个相邻奇数所表示重要性程度之间,即取值为2时表示两两相比的重要程度介于两个相邻奇数1和3所表示重要性程度之间,且
对CPU利用率、内存利用率和带宽利用率两两比较,得到判断矩阵A:
其中,A1,A2,A3分别代表一个节点的CPU利用率对节点整体负载影响的权重值、内存利用率对节点整体负载影响的权重值和带宽利用率对节点整体负载影响的权重值。对判断矩阵A每列进行归一化操作,求取列特征向量,再对每行进行归一化操作,求取行特征向量,最后得出每种指标的权重配比,并对判断矩阵A进行一致性检验,最终得到一个节点的CPU、内存和带宽的主观权重分别为WS1,WS2,WS3,并且WS1+WS2+WS3=1;
步骤2-2,计算矩阵的特征向量和指标权重:
对矩阵各列求和,列和的向量为:SUMj;
对矩阵每一列进行归一化处理,公式如下:
∑Aij的值为各列的和SUMj,Bij表示Aij归一化后的数据,根据Bij得到新矩阵B,B矩阵中每一列值的和都为1;
对矩阵B每一行求和,即得出特征向量SUMi;
计算指标权重,对特征向量进行归一化处理,公式如下:
根据上述公式,最终得到三种指标权重分别为W1,W2,W3;
步骤2-3,进行矩阵一致性检验:
为了检验得出指标权重是否正确,需要对指标进行比较,例如:如果A>B,B>C,那么必须得出A>C,反之,则一致性不成立。所以需要对矩阵的一致性进行检验,确保没有出现以上的错误。
计算矩阵的最大特征根,公式如下:
其中,λmax为最大特征根,AW表示矩阵A和权重向量W相乘,得到一个列向量,n代表矩阵阶数,W代表权重向量;
计算判断矩阵的一致性(Constant index)指标,公式如下:
其中,C.I.代表一致性指标,n表示矩阵的阶数;
计算随机一致性比率C.R.,计算公式如下:
其中,R.I.代表平均随机一致性指标,是一个常量,根据阶数可以在量表里查询;3阶R.I.=0.89,如果C.R.<0.1,说明对比矩阵保持一致性;如果C.R.>0.1,则表示对比矩阵不具有一致性,需要进行调整;
步骤2-4,进行熵值法客观权重法计算:熵值法是一种通过判断某个指标的离散度来反映该指标对综合评价的影响程度的数学方法,能够通过指标值的变异度客观地确定权重。指标的权重与变异度呈正相关关系,即指标值的变异程度越大,其权重越大;反之,指标值的变异程度越小,其权重越小。
构建负载信息决策矩阵M:
其中,CURn、MURn、BURn分别表示一个节点的第n个周期预测的CPU利用率、内存利用率和带宽的利用率;
对决策矩阵M每列进行标准化处理得到决策矩阵R:
根据如下公式计算负载信息指标的熵:
Ej代表负载信息指标的熵值,常数K=1/ln(n),则0≤Ej≤1,即Ej最大为1,j为1时,Ej表示CPU利用率的熵值;j为2时,Ej表示内存利用率的熵值;j为3时,Ej表示带宽的利用率的熵值;
定义Dj为第j个负载信息指标Ej的贡献度:Dj=1-Ej;
步骤2-5,计算每种负载信息指标的客观权重值WOj:
WO1,WO2,WO3分别代表CPU对于节点负载影响的客观权重值、内存对于节点负载影响的客观权重值和带宽对于节点负载影响的客观权重值,并且WO1+WO2+WO3=1;
步骤2-6,计算节点的最终的负载信息指标的权重wi:
wi=β×WSi+(1-β)×WOi, (1-12)
其中β为主客观权重调整系数,wi为最终节点负载的权重,其中i=1,2,3,并且w1+w2+w3=1,w1表示最终的CPU利用率的权重,w2表示最终的内存利用率的权重,w3表示最终的带宽的利用率的权重;
步骤3-4,计算节点的处理能力:
CAi=w1×(1-CAUi)+w2×(1-MAUi)+w3×(1-BAUi), (1-13)
其中,CAUi、MAUi、BAUi分别代表预测得到的第i个节点当前周期的CPU利用率、内存利用率、带宽利用率,CAi表示第i个节点处理能力。
步骤3包括:
计算每个节点要分配的数据量的占比:
其中DPi代表第i个节点应分配的数据量占比,m表示节点总数。
所述数据迁移模块通过设置高、低负载阈值来作为触发数据迁移的条件,构造出源机和目标机的选择队列,在出现负载不均衡问题时,选择源机和目标机来进行数据迁移,源机作为待迁移数据的节点,目标机作为接受迁移数据的节点,并获得应迁移的数据量。
所述数据迁移模块通过设置高、低负载阈值来作为触发数据迁移的条件,构造出源机和目标机的选择队列,在出现负载不均衡问题时,选择源机和目标机来进行数据迁移,源机作为待迁移数据的节点,目标机作为接受迁移数据的节点,并获得应迁移的数据量,具体包括如下步骤:
步骤a1,选择源机:
计算每个节点的整体负载值:
Loadi=w1×CURi+w2×MURi+w3×BURi, (1-15)
其中,Loadi表示第i个节点的整体负载值,将每个节点的整体负载值与设置的阈值Hth进行比较,如果一个节点的整体负载值超过阈值Hth,则将所述节点加入到高负载节点队列中,按照整体负载值由大到小构成源机选择队列Sy={s1,s2,……,sm},sm表示队列Sy中第m个节点,即整体负载值最小的节点;
对Sy队列中的每个节点,按整体负载值从大到小的顺序进行源机的选择;
步骤a2,选择目标机:将每个节点的整体负载值与设置的阈值Lth进行比较,如果一个节点的负载值低于阈值Lth,则将所述节点加入到低负载节点队列中,按照整体负载值值由小到大构成目标机选择队列Dm={d1,d2,……,dz},dz表示队列Dm中第z个节点,即整体负载值最大的节点;
对Dm队列中的每个节点,按整体负载值从小到大的顺序进行目标机的选择;
步骤a3,进行数据迁移:
如果高、低负载队列节点数目相同,即m=z,则分别将高、低负载队列中的节点按照顺序进行匹配并行迁移,迁移的分区数公式如下:
其中Nq代表迁移的分区数,Ny代表源机中的分区数,Nm代表目标机中的分区数;
如果高负载队列节点数目大于低负载节点数目,即Sy>Dm,则适当调整低负载阈值,使低负载节点队列中的节点数目等于或近大于高负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数,为了减少节点数据之间不必要的传输而达到负载均衡,需要调整低负载的阈值,例如当高负载节点大于0.9的节点为20台,而低负载小于0.2的节点只有10台,此种场景就需要把低负载阈值为0.35左右,让高负载节点尽可能减少负载压力,同时又可以更好地并行执行迁移,进行高低负载一对一节点匹配数据传输;
如果高负载队列节点数目远小于低负载节点数目,即Sy<Dm,则适当降低高负载阈值,例如之前设置高负载阈值为0.9,可以适当降低,降到0.75左右,使高负载节点队列中的节点数目等于或近小于低负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数;
获得源机应迁移的分区数后,即能够进行数据迁移。
本发明系统涉及如下核心内容:
(1)负载监测模块
可通过部署集群服务器的方式进行资源监测的,主要监测的指标是CPU、内存及带宽的利用率,通过实时性集群资源监控界面来为采集模块做铺垫;结合负载预测和指标权重判定方法能够判定是否为高低负载节点,为数据迁移模块做铺垫。
(2)采集模块
1)负载信息指标的选取
节点中可以描述节点负载情况的关键资源有很多,例如CPU利用率、CPU上下文切换速率、空余硬盘大小、内存利用率、带宽使用率以及I/O资源等。本发明基于负载的分区策略主要使用CPU、内存及带宽利用率来表示节点的整体负载值。
2)采集周期
采集模块每隔一定时间收集所有节点的负载信息,采集周期时间过短,会加重中央节点的负载,也要消耗一定的带宽,会影响分布式系统的性能;采集周期时间过长会使用过时数据,不具有实时性效果,有可能会导致在数据分区时做出错误的分区决定,同时遇到突发状况,会出现亟待均衡的节点没有及时处理,反而处理了不需均衡的节点的情况。为了及时、更准确地采集节点的负载信息,可采用部署集群资源监控的方式进行资源信息的采集保存到缓存数组中,并将历史资源信息持久化保存到数据库中。目前大多数论文采用的时间间隔为5s到15s之间,可根据用户设定的周期进行采集。
(3)数据预分区模块
1)负载预测
使用预测模块预测节点未来时刻的负载情况,从而决定数据量的分配。经过相关人员的研究得出的结论:主机负载的变化具有自相似性、长期依赖性,对于这样特性的负载能够使用预测机制进行预测,确定在数据分配时刻的节点真实整体趋势的负载情况,从而更加有效地进行数据的分区,防止错误数据分区决策的情况发生。
2)指标权重判定方法
本发明选取了CPU利用率CUR、内存利用率MUR和带宽利用率BUR来评判节点的负载大小,由于Spark-MemSql应用中存在CPU密集型、内存密集型、传输密集型及混合型,针对不同的应用场景,每种指标的权重很可能不同,因此需要求取每个指标的权重配比。这种负载模型公式存在一个问题,给哪个指标赋予的权重越大,则表示这个指标更影响负载的总值。比如集群中的两个节点的CUR、MUR、BUR分别为<0.9,0.2,0.2>和<0.4,0.6,0.5>,明显前面节点的CPU负载很大,已到瓶颈,后面节点的负载较平均,按照常理,该先对前面节点进行负载均衡,尽可能不再分配数据或者将部分数据迁移到其他较低负载的节点上。如三个指标的权重分布取值为w1=0.1、w2=0.5,w3=0.4,按公式计算,第一个节点的负载为0.27,第二个节点的负载为0.54,通过比较负载值会选择后面节点进行负载均衡,可以印证权重值的不同将影响负载的综合判断结果。因此需要采用合理的指标判定方法确定每种指标的权重,从而确定每个节点的整体负载情况。
3)节点的数据分布
由于分析的数据量较大,为了减少网络传输,采用本地化读取数据分析的方式。在数据预分区阶段,MemSql默认的分区方式是每个节点的分区数目相同,这会因为集群节点的异构性导致节点处理能力的不同而引起节点之间的数据倾斜现象,引发集群负载不均衡的问题,为了尽可能利用本地化资源,提高分布式系统并行计算效率,减少网络传输,就需要考虑每个节点的整体负载情况,即按照每个节点处理任务的能力来进行数据的有效分区。
(4)数据迁移模块
因为某些应用执行完或者预分区不合理情况导致集群负载不均衡现象,需要解决如下问题:1)何种状况下需要数据迁移来达到负载均衡,即数据迁移的触发条件;2)迁移哪个节点上的数据,即源机的选择;3)将数据迁移到哪个节点,即目标机的选择;
4)迁移的数据量,即迁移的分区数。
有益效果:本发明提供了一种主客观权重集成法,能够巧妙地将集群中每个节点的计算能力定量化,充分利用了每个节点的计算资源,从而提高了大数据分析应用整体的响应速度;当集群出现负载不均衡问题,本发明提供了一种动态负载均衡策略,能够较灵活地保证分布式集群资源利用的稳定性;在相对独立内存不断迭代的可并行化执行应用中,例如关联分析、聚类、神经网络等机器学习算法,在本公司舆情分析系统中事件评论的聚类分析及相关人物关联分析等模块中已经广泛使用,最终加快了应用的响应速度。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明和其他方面的优点将会变得更加清楚。
图1是基于节点负载的数据动态分区机制流程图;
图2是集群资源监控界面图;
图3是预测机制流程图;
图4是AHP层次分析法计算指标权重流程图;
图5是熵值法计算指标权重流程图;
图6是Spark和MemSql集成图。
图7是关联分析应用的CPU利用率预测对比图。
图8是Kmeans聚类分析应用的CPU利用率预测对比图。
图9是关联分析应用预分区策略性能对比图。
图10是Kmeans聚类分析应用预分区策略性能对比图。
图11是关联分析应用的不同预分区策略节点负载利用率对比图。
图12是Kmeans聚类分析应用的不同预分区策略节点负载利用率对比图。
图13是关联分析迁移策略性能对比图。
图14是Kmean聚类分析迁移策略性能对比图。
图15是关联分析数据迁移前后节点负载利用率平均值对比图。
图16是Kmeans聚类分析数据迁移前后节点负载利用率平均值对比图。
具体实施方式
为了实现系统动态的负载均衡性及提高应用的响应速度,提出了一种基于节点负载的数据动态分区系统,如图1所示,该系统包括负载监测模块、采集模块、数据预分区模块和数据迁移模块。整个Spark-MemSql集成集群一直处于应用使用中,负载监测模块中主节点定时读取从节点中各个指标的负载信息,并在监测界面中动态显示CPU、内存和带宽的利用率等信息;然后通过采集模块将负载信息保存到缓存数组中,并定期持久化到Mysql数据库中,为负载预测提供指标负载信息;接着在有大量的新数据导入时,需要数据预分区模块中的预测模块对每个节点的每种指标进行预测,然后通过指标权重判定方法获得每种指标的权重,依据负载预测后的指标信息与每种指标的权重值来获得每个节点的处理能力,再根据每个节点的处理能力来进行数据分布,完成数据预分区;如果集群在应用过程中出现负载不均衡问题,达到了设定负载阈值,则将高低负载节点加入到源、目标机队列中,并根据迁移策略进行分区块的迁移。迁移之后如果再遇到负载不均衡问题,同样采用上述过程进行分区块的动态迁移。
(1)监测模块
可通过部署集群服务器的方式进行资源监测的,如图2所示,主要监测的指标是CPU、内存及带宽的利用率,通过实时性集群资源监控界面来为采集模块做铺垫;结合负载预测和指标权重判定方法能够判定是否为高低负载节点,为数据迁移模块做铺垫。
(2)采集模块
1)负载信息指标的选取
节点中可以描述节点负载情况的关键资源有很多,例如CPU利用率、CPU上下文切换速率、空余硬盘大小、内存利用率、带宽使用率以及I/O资源等。本发明基于负载的分区策略主要使用CPU、内存及带宽利用率来表示节点的整体负载值。
2)采集周期
采集模块每隔一定时间收集所有节点的负载信息,采集周期时间过短,会加重中央节点的负载,也要消耗一定的带宽,会影响分布式系统的性能;采集周期时间过长会使用过时数据,不具有实时性效果,有可能会导致在数据分区时做出错误的分区决定,同时遇到突发状况,会出现亟待均衡的节点没有及时处理,反而处理了不需均衡的节点的情况。为了及时、更准确地采集节点的负载信息,可采用Yarn资源管理组件提供的API方式进行资源信息的采集并保存到缓存数组中,并将历史资源信息持久化保存到数据库中。目前大多数论文采用的时间间隔为5s到15s之间,可根据用户设定的周期进行采集。
(3)数据预分区模块
1)负载预测
传统的数据分布策略只根据节点当前实时负载信息来作为数据分区的判断依据。假设节点负载存在瞬时高低峰值的情况,之后恢复正常。如果使用传统的数据分区策略,这个峰值必然影响最终数据分布决策的拟定,极易导致数据分配不均衡的情况,引发系统不必要的开销,因此必须防止负载瞬时高低峰值造成的错误数据预分区决策的情况发生。如果数据已经分配好,但出现一些突发情况,例如:因节点的宕机删除节点、增加节点进行水平扩展及出现负载极其不均衡问题等,都需要进行分区块的迁移来平衡负载量,依然需要参考负载预测模块来决定迁移量。
1、二次指数平滑法
二次指数平滑法是在一次指数平滑法的基础上再做一次指数平滑的方法,不能单独进行预测,与一次指数平滑法结合建立的数学模型,可以利用此模型确定下一时刻预测值。目前,大多数预测模型都选择二次指数平滑法。因为一次指数平滑法和平均负载法比较适合一种水平发展趋势的时间序列分析,如果碰到实际值上升或下降趋势时,预测值和实际值偏差会比较大,存在明显的滞后现象。针对Spark-MemSql集成框架的分析应用会产生负载上升或下降的情况发生,而二次指数平滑法能够更好地解决这种应用场景下的问题,它能够利用滞后偏差的规律找出值变化的发展趋势。因此本发明采用二次指数平滑法模型进行负载预测。
一次指数平滑法公式如下:
二次指数平滑法公式如下:
综合一、二次指数平滑公式,可得出第T个周期的负载预测值,公式如下:
其中,Yj是第j个周期的实际值,和分别是第j-1个周期的预测值和第j个周期的预测值,和分别为第j-1个周期的二次指数平滑值和第j个周期的二次指数平滑值,是第j+T个周期的预测值;aj和bj是中间参数;α是平滑系数,α∈[0,1]。预测值受到平滑系数α的影响很大,α值越小,历史数据影响越大;α值越大,近期数据影响越大。通常来说,对于数据波动小的情况,需减少最近数据对预测结果的影响,α值应取小一些;对于数据波动较大的情况,需加大近期数据对预测结果的影响,α值应取大一些。
通常,数据波动小的情况,α应选择较小的值,如0.05-0.15;数据有波动但长期波动不大的情况,α应选择稍大的值,如0.1-0.5;数据波动大且长期也大,α应选择较大的值,如0.6-0.8;数据明显上升或下降的趋势,α应选择较大的值,如0.6-1。
2、通过采集模块将历史负载信息保存到Mysql数据库中。当分析的数据预分区到MemSql集群中时,首先需要把集群中所有节点的前n-1个周期采集的数据作为负载数据参数传给预测模块,与当前的负载组成大小为n的负载数据集,取第一次测量的实际值作为初值Yj、一次预测初值及二次预测初值。使用这n个周期数据预测未来d个周期节点负载值,然后取未来d个周期节点负载的平均值,最终确定集群中每个节点的负载信息,为数据分区策略模块提供集群节点的未来负载信息,从而为数据分区策略模块提供决策依据。同理,如果遇到突发情况引起集群负载不均衡,则将d个周期节点整体负载的平均值与阈值比较,如果平均值大于阈值,则触发数据迁移操作。在本策略中,如果某个节点的未来d个周期负载平均值高于高阈值或低于低阈值,则更新高低负载队列。平滑系数根据j个预测数据与真实数据进行标准偏差S,当S值最小时的平滑系数α对应的值为最终平滑系数标准。标准偏差S公式如下:
其中,n代表取的周期数,j代表第j个周期。预测机制的流程如图3所示,通过调整平滑系数α值来计算偏方差S,取S最小时对应的平滑系数α值。n、d的值由用户设定。
2)指标权重判定方法
因为Spark-MemSql集成框架环境下的应用场景,CPU和带宽变化波动较大,内存变化波动较小,如果只考虑主观AHP权重法会忽略某些指标的重要性,只考虑客观熵值法则会影响内存的权重判定。因此,本发明通过基于二次平滑负载预测法+主客观AHP与熵值指标权重集成法结合的指标权重判定方法算出每个节点的整体负载值,最终再根据整体负载值来分配相应的数据量。
1、AHP
AHP主观权重方法的主要思想:多属性决策中,由决策者对所有评价指标进行两两比较,得到判断矩阵U=(Aij)n×n,其中Aij为评价指标Ai与Aj比较而得的数值,取值为1至9之间的奇数,分别表示前者指标比后者指标同等重要、较重要、很重要、非常重要、极其重要;当取值为1至9之间的偶数时,分别表示两两相比的重要程度介于两个相邻奇数所表示重要性程度之间,且AHP主观计算指标权重法流程如图4所示。
1)对CPU利用率、内存利用率和带宽利用率两两比较,得到判断矩阵A:
其中,A1,A2,A3分别代表一个节点的CPU利用率对节点整体负载影响的权重值、内存利用率对节点整体负载影响的权重值和带宽利用率对节点整体负载影响的权重值,对判断矩阵A每列进行归一化操作,求取列特征向量,再对每行进行归一化操作,求取行特征向量,最后得出每种指标的权重配比,并对判断矩阵A进行一致性检验,最终得到一个节点的CPU、内存和带宽的主观权重分别为WS1,WS2,WS3,并且WS1+WS2+WS3=1;
2)计算矩阵的特征向量和指标权重
①对矩阵各列求和,列和的向量为:SUMj。
②对每一列进行归一化处理,公式如下:
∑Aij的值为各列的和SUMj,得到新矩阵B,B矩阵中每一列值的和都为1。
③对每一行求和,即得出特征向量SUMi。
④计算指标权重,对特征向量进行归一化处理,公式如下:
即可得到三种查询模式指标权重分别为W1,W2,W3。
3)矩阵一致性检验
为了检验得出指标权重是否正确,需要对指标进行比较,例如:如果A>B,B>C,那么必须得出A>C,反之,则一致性不成立。所以需要对矩阵的一致性进行检验,确保没有出现以上的错误。
①计算矩阵的最大特征根,公式如下:
其中,λmax为最大特征根,AW表示矩阵A和权重向量W相乘,得到一个列向量,n代表矩阵阶数,W代表权重向量。
②计算判断矩阵的一致性(Constant index)指标,公式如下:
其中,C.I.代表一致性指标,n表示矩阵的阶数。
③计算随机一致性比率,计算公式如下:
其中,R.I.代表平均随机一致性指标,是一个常量,根据阶数可以在量表里查询。4阶R.I.=0.89,如果C.R.<0.1,说明对比矩阵保持一致性。如果C.R.>0.1,则表示对比矩阵不具有一致性,需要进行调整。
2、熵值法
主要思想:熵值法是一种通过判断某个指标的离散度来反映该指标对综合评价的影响程度的数学方法,能够通过指标值的变异度客观地确定权重。指标的权重与变异度呈正相关关系,即指标值的变异程度越大,其权重越大;反之,指标值的变异程度越小,其权重越小。熵值法计算指标权重流程如图5所示。
具体步骤如下:
(1)构建负载信息决策矩阵M:
其中,n代表周期数,CUR、MUR和BUR分别代表CPU、内存和带宽的利用率。
(2)对决策矩阵M每列进行标准化处理得到决策R:
(3)利用熵公式计算指标的不确定度:
用E表示任一种负载信息指标的熵,公式如下:
Ej代表指标的熵值,常数K=1/ln(n),这样能保证0≤E≤1,即E最大为1。
由式中可以看出,当某个属性下各值的贡献度趋于一致时,E趋于1;例如当全相等时,也就可以不考虑该目标的属性在决策中的作用,即此时属性的权重为0。这样,可看出属性值由某个属性列值的差异大小来影响权系数的大小。为此可定义Dj为某个指标的贡献度,Dj=1-Ej。
(4)计算每种指标的客观权重值,公式如下:
WO1,WO2,WO3分别代表CPU对于节点负载影响的客观权重值、内存对于节点负载影响的客观权重值和带宽对于节点负载影响的客观权重值,并且WO1+WO2+WO3=1。计算每种指标客观权重值,算法输入每种指标不同周期负载值矩阵,通过熵值法计算得到每种指标的客观权重值。
3、主客观AHP和熵值法权重集成法
针对真实应用情况可能会分别出现主、客观指标权重设计的弊端问题,即某个指标在客观应用中占有很大比重,但是主观者却不清楚;又如某些指标利用率一直处在较高负载稳定的情况下,可能是一直在使用而处于稳定状态或者未在使用的稳定状态的情况,若按照客观法很容易计算出该指标权重占比较小,与主观实际有所偏差。因此本发明设计主客观集成的方法来解决此类问题,平衡两者的权重偏差。集成权重公式如下:
wi=β×WSi+(1-β)×WOi, (1-12)
其中β为主客观权重调整系数,wi为最终节点负载的权重,其中i=1,2,3,并且w1+w2+w3=1。
节点数据分布:首先,由前面模块得到了CPU、内存、带宽三种指标在负载中所占的主客观集成权重大小后,分别为w1,w2,w3。
然后,通过每种指标的权重来获得每个节点的处理能力,公式如下:
CAi=w1×(1-CAUi)+w2×(1-MAUi)+w3×(1-BAUi), (1-13)
其中,CAUi、MAUi、BAUi分别代表预测后的CPU、内存、带宽利用率,i代表第i节点。
最后,得出每个节点要分配的数据量的占比,公式如下:
其中DPi代表第i个节点应分配的数据量占比,m表示节点总数。
通过以上步骤后可知给集群中每个节点分配的数据量,即相应的分区数。
(4)数据迁移模块
通过设置高低负载阈值来作为触发数据迁移的条件,构造出源机和目标机的选择队列。在数据预分区之后出现负载不均衡问题或者增删节点的情况,需要选择源机和目标机来进行数据迁移,源机作为待迁移数据的节点,目标机作为接受迁移数据的节点,并获得应迁移的分区数。
1)源机选择
首先,从负载缓存数组中读取CPU利用率、内存利用率和带宽利用率负载信息进行预测,预测T个周期后的每种指标平均负载值。
然后,将每种指标的负载利用率预测值与主客观权重集成方法得到每种指标的负载权重值结合,进而得到每个节点的整体负载值Loadi。负载值公式如下:
Loadi=w1×CURi+w2×MURi+w3×BURi, (1-15)
其中,CURi、MURi、BURi和w1,w2,w3分别为预测后的CPU利用率、内存利用率、带宽的利用率和权重值。
接着,将每个节点的负载值Loadi与设置的阈值进行比较,如果某个节点的负载值超过Hth阈值,则将该节点加入到高负载节点队列中。
然后,按照整体负载值由大到小构成源机选择队列Sy={s1,s2,……,sm}。
最后,从Sy队列中选取源机。对Sy队列中的每个节点的负载值按降序进行排列,按整体负载值从大到小的顺序进行源机的选择。
2)目标机选择
首先,从负载缓存数组中读取CPU利用率、内存利用率和带宽利用率负载信息进行预测,分别预测T个周期后每种指标的平均负载值。
然后,将每种指标的负载利用率预测值与主客观权重集成方法得到每种指标的负载权重值结合,代入公式1-15计算,进而得到每个节点的整体负载值Loadi。
接着,将每个节点的负载值Loadi与设置的阈值进行比较,如果某个节点的负载值低于Lth阈值,则将该节点加入到低负载节点队列中。
然后,按照Loadi值由小到大构成目标机选择队列Dm={d1,d2,……,dz}。
最后,从Dm队列中选取目标机。对Dm队列中的Load值按升序进行排列,按Loadi从小到大的顺序进行目标机的选择。
3)迁移的分区数
1、如果高低负载队列节点数目相同,即Sy=Dm。则分别将高低负载队列中的节点按照顺序进行匹配并行迁移,迁移的分区数公式如下:
其中Nq代表迁移的分区数,Ny代表源机中的分区数,Nm代表目标机中的分区数。
2、如果高负载队列节点数目大于低负载节点数目,即Sy>Dm。则适当调整低负载阈值,使低负载节点队列中的节点数目等于或近大于高负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数。
3、如果高负载队列节点数目远小于低负载节点数目,即Sy<Dm。则适当调整高负载阈值,使高负载节点队列中的节点数目等于或近小于低负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数。
4、得到匹配的源机和目标机,并且知道了每组中源机应迁移的分区数,就可以并行进行迁移,减少迁移开销。
通过以上步骤,系统可实现负载均衡。对于增删节点的突发情况,同样可以采用此种迁移策略。
分布式内存数据库MemSql采用主从结构,使用Hash作为存储方式,以数据分区Partition作为最小的存储单元块。Spark同样采用主从结构,Master节点(主节点)管理整个集群的资源,Worker节点(从节点)管理各计算节点的资源,定期向Master节点汇报节点资源情况,并启动Executor进行计算。
目前,Spark与MemSql有两种结合方式的应用场景:一种为Spark与MemSql是两个相对独立框架,另一种为Spark与MemSql集成框架。
针对Spark-MemSql集成框架下的应用场景,如图6所示,采用本地化读取数据分析的方式,通过MemSql Spark Connector组件将二者集成,后台启动该组件做为守护进程将Spark中Master与MemSql中主汇聚器连接起来,然后Spark的Worker节点可以通过Master节点获取到MemSql中主汇聚器的元数据信息,其元数据包括数据存在哪些节点上及节点上有哪些分区,从而保证了实际程序进行数据分析过程中,Spark的Worker节点利用MemSqlRDD接口本地化并行地从MemSql存储Leaf节点进行数据读写、计算分析。MemSql中最小存储粒度是Partition,目前默认给每个节点分配相同的Partition数,这会因为集群节点的异构性导致节点处理能力的不同而存在节点之间的数据倾斜问题。由于此框架中的Spark采用本地化分析数据的方式,即数据在哪个节点上面,就在相应节点上面分析处理,MemSql中的Partitions数目直接反映Spark中的RDD task数目,即任务量与分区数呈正相关关系,如果采用默认分区方式会导致严重负载不均衡现象,如某个负载高的数据节点中有很多分区块需要处理分析,那么整个作业的执行时间就会变长,因为Spark作业调度的执行时间是到所有作业完成时刻截止。现实应用中,数据倾斜问题普遍存在,由其引起的处理节点负载不均衡是Spark-MemSql框架应用不可避免的问题。
因此,在面向并行计算框架Spark的应用场景中,需要提出MemSql分区策略来改善负载均衡性,提高应用的响应速度。
实施例:
针对Spark-MemSql集成框架,在局域网下部署Spark-MemSql集成集群环境,实验中共有5个节点,设定总分区数为32个分区,利用某制造企业中的数据集,验证基于负载预测和AHP、熵值集成权重法结合的数据动态分区策略的有效性。
本实施例采用某制造企业中表FIS_PRODUCT作为测试数据集,如表1所示,大约有5000多万行数据。每条数据包括时间ID、厂类别、产品类别、产品长度、产品拉伸长度、产品重量等。其中LENGTH和WEIGHT两列作为关联分析应用测试的数据集,LENGTH、DRAWLENGTH、WEIGHT三列可作为Kmeans应用测试的数据集,不同的应用利用不同的数据集做测试。
表1
(1)对预测模块进行测试验证。通过运行相关应用来模仿Spark-MemSql集成框架下的实际应用环境,在应用环境下对负载利用率进行预测,每5s为一个周期,然后计算预测与实际值之间的偏方差来调整平滑系数,为分区策略的对比测试做铺垫,同时验证预测算法在此应用场景下的有效性。预测模块测试流程为:读取采集的历史负载信息,然后利用二次平滑预测算法对负载进行预测,计算预测值与真实值之间的偏方差S,通过调整平滑系数α来降低偏方差S。对于不同的应用场景采用同样方法调整平滑系数。
(2)对不同预分区策略进行性能对比测试。本实验中的应用分别为对LENGTH和WEIGHT两列做关联分析,这两列属性分别代表产品的长度和对应的重量,分析产品长度和重量之间的关联性;对LENGTH、DRAWLENGTH、WEIGHT三列做Kmeans聚类分析,这三列属性分别代表产品长度、产品拉伸长度及产品重量,通过聚类分析进行产品分类。通过比较默认预分区策略、负载预测+AHP权重法、负载预测+熵值权重法的预分区策略和负载预测+AHP与熵值集成权重法的四种不同预分区策略,然后分别统计执行相同应用的时间,验证方案的有效性。
(3)在Spark-MemSql框架中如果出现集群负载不均衡现象,通过迁移策略进行源机和目标机之间数据分区块的迁移,运行相同的应用程序,对迁移前后进行性能对比,验证方案的有效性。
实施步骤一:负载预测算法。对不同的应用分别进行测试,对某节点负载进行采集和预测,验证此预测算法在不同应用场景下的有效性,并分别获得不同应用场景下的不同负载指标的平滑系数α。从图7和图8所示,两种不同的应用CPU利用率都存在波动,二次平滑指数法能够较准确地预测CPU的利用率,可以避免瞬时峰值的影响。采用同样的方法对不同的指标进行预测对比,最终获得不同应用场景下的不同指标的平滑系数α,如表2和3所示。
表2
表3
指标 | CPU | 内存 | 带宽 |
平滑系数α | 0.75 | 0.40 | 0.65 |
实施步骤二:预分区策略。通过不同的预分区策略进行分区,分成两组实验,每组实验运行相同的应用程序,第一组实验进行关联分析的应用;第二组实验进行Kmeans聚类分析的应用。对不同分区策略下应用程序的执行时间进行对比,验证方案的有效性。
(1)利用AHP得出每种指标的权重
首先,输入指标决策矩阵A:
评判采用列与行进行两两比较,其中A1、A2、A3分别代表CPU、内存、带宽;然后,计算随机一致性比率C.R.=C.I./R.I.=0.00103<0.1,说明对比矩阵保持一致性,决策矩阵设计合理;接着,利用AHP获得每种指标的权重值;然后,通过执行应用过程中周期性采集每种指标利用率,再利用熵值法获得每种指标的权重值;最后通过多次实验调整设置权重系数β为0.8,得到集成权重值,不同的应用场景结果分别如表4和5所示。
表4
指标 | CPU | 内存 | 带宽 |
AHP权重值 | 61.523% | 31.872% | 6.604% |
熵值法权重值 | 38.231% | 19.076% | 42.693% |
AHP+熵值法权重值 | 57.762% | 29.62% | 13.518% |
表5
(2)根据具体应用中预测的每种指标负载值和不同权重方法,并结合公式1-13获得不同分区策略下每个节点的处理能力,在结合公式1-14得出每个节点分区数占比,即可得到每个节点的分区数,如表6所示:
表6
通过图9、图10所示,分别执行关联分析和Kmeans聚类应用。从整体上看默认分区策略效果最差,本文研究设计的预测+AHP与熵值权重集成法的分区策略效果最好,并且随着数据量的增加,效果越显著。AHP权重法是主观权重法,没有根据实际应用场景进行权重配比,有失客观性;熵值权重法是利用指标值的差异性获得的,内存利用率变化较缓慢,但一直处于频繁使用状态,Spark-MemSql框架的数据计算都是在内存中进行的,因此内存一直比较稳定的使用,而带宽利用率变化程度较大,但利用率很低,如果只采用客观法会导致内存权重小、带宽权重较大的错误结果。因此集成主客观权重会带来更好的结果。执行不同的应用取得了同样的效果,说明本文研究的预分区策略在处理相对独立任务的应用上具有推广性。
通过图11和12所示,分别针对不同预分区策略执行相同的应用,计算整个应用过程中每个节点的整体平均负载利用率。从整体上看默认分区策略出现严重的负载不均衡现象,预测+AHP、预测+熵值法、预测+AHP与熵值权重集成法结合的预分区策略都能较好地解决集群负载问题,实现集群负载的均衡性。
实施步骤三:迁移策略。在Spark-MemSql框架中遇到负载不均衡现象,通过数据迁移策略,然后运行相同的应用程序,通过监控界面周期性记录不同节点的负载状况,对迁移前后应用程序的执行时间进行对比,并考虑了迁移的时间开销,验证方案的有效性。
利用迁移策略构造高低负载队列,并获得不同节点应接收或者发送的分区块数,执行迁移操作后,每个节点的分区数如表7所示。
表7
通过图13、图14所示,表明了迁移策略的有效性,可以改善集群的负载均衡性,一定程度上提高了应用的响应速度。相关应用中,在数据量较少时,即关联分析应用中数据量小于3000万条时和Kmeans分析应用中数据量小于2000万条时负载没有达到设定的阈值,不触发迁移,但是当执行的数据量相对较大时,即关联分析应用中数据量达到3000万条和Kmeans分析应用中数据量达到2000万条时负载达到阈值,触发迁移,虽然改善了集群的负载均衡,但是迁移消耗时间成本,导致总时间较长,当数据量进一步增大时,负载不均衡性加剧,导致迁移开销相对较小,提升了应用的响应速度。
通过图15和图16所示,对不同应用进行迁移测试,比较迁移前和迁移后整个应用过程中每个节点的整体平均负载利用率,可以看出通过迁移能改善集群负载的均衡性。
在数据预分区阶段,得到基于负载预测+AHP指标权重判定结合的分区策略效果最好,能解决集群的负载均衡性,更能提高应用的响应速度;在数据已分布完成,但出现负载不均衡的情况,通过迁移能解决集群的负载均衡性,提高应用的响应速度。
本发明提供了一种基于节点负载的数据动态分区系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (9)
1.一种基于节点负载的数据动态分区系统,其特征在于,包括负载监测模块、采集模块、数据预分区模块和数据迁移模块;
所述负载监测模块用于,选取负载信息指标,并实时性地监测分布式集群中每个节点上的负载信息指标值;
所述采集模块用于,周期性的采集分布式集群中每个节点上的负载信息指标值;
所述数据预分区模块用于,预测分布式集群中每个节点上的负载信息指标值,然后根据指标权重方法得到每个节点的处理能力,最后根据每个节点的处理能力分布不同的数据量,完成数据预分区;
所述数据迁移模块用于,当分布式集群出现负载不均衡问题时,触发节点之间的数据迁移来提高负载均衡性。
2.根据权利要求1所述的系统,其特征在于,所述负载监测模块选取CPU利用率、内存利用率及带宽的利用率作为负载信息指标值,通过部署Memsql资源监测服务实时性地监测分布式集群中每个节点上的负载信息指标值。
3.根据权利要求2所述的系统,其特征在于,所述采集模块通过分布式Yarn资源管理组件提供的API周期性获得分布式集群中每个节点上的负载信息指标值,并保存到数据库中。
4.根据权利要求3所述的系统,其特征在于,所述数据预分区模块用于,预测分布式集群中每个节点上的负载信息指标值,然后根据AHP和熵值主客观指标权重集成方法得到每个节点的处理能力,最后根据每个节点的处理能力分布不同的数据量,完成数据预分区,具体包括如下步骤:
步骤1,采用二次指数平滑法进行负载信息指标值预测:
一次指数平滑法公式如下:
二次指数平滑法公式如下:
综合一、二次指数平滑公式,得出第T个周期的负载预测值,公式如下:
其中,Yj是第j个周期的负载信息指标值的实际值,和分别是第j-1个周期的负载信息指标值的预测值和第j个周期的负载信息指标值的预测值,和分别为第j-1个周期的二次指数平滑值和第j个周期的二次指数平滑值,是第j+T个周期的负载信息指标值的预测值;aj和bj是中间参数;α是平滑系数;
采集模块将数据库中的前n-1个周期采集的分布式集群中每个节点上的负载信息指标值发送给数据预分区模块,并与当前周期的每个节点上的负载信息指标值组成大小为n的负载数据,取第一个周期测量的负载信息指标值的实际值作为初值Yj、一次预测初值及二次预测初值,使用得到的n个负载数据预测未来d个周期的每个节点上的负载信息指标值,计算一个节点未来d个周期的负载信息指标值的平均值P,最终确定集群中每个节点的负载信息指标值;
步骤2,计算每个节点的处理能力;
步骤3,根据每个节点的处理能力分布不同的数据量。
6.根据权利要求5所述的系统,其特征在于,步骤2包括如下步骤:
步骤2-1,使用AHP主观权重方法进行计算:多属性决策中,由决策者对所有评价指标进行两两比较,得到判断矩阵U=(Aij)n×n,其中Aij为评价指标Ai与Aj比较而得的数值,取值为1至9之间的奇数,即取值为1、3、5、7、9时分别表示前者指标比后者指标同等重要、较重要、很重要、非常重要、极其重要;当取值为1至9之间的偶数时,分别表示两两相比的重要程度介于两个相邻奇数所表示重要性程度之间,即取值为2时表示两两相比的重要程度介于两个相邻奇数1和3所表示重要性程度之间,且
对CPU利用率、内存利用率和带宽利用率两两比较,得到判断矩阵A:
其中,A1,A2,A3分别代表一个节点的CPU利用率对节点整体负载影响的权重值、内存利用率对节点整体负载影响的权重值和带宽利用率对节点整体负载影响的权重值。对判断矩阵A每列进行归一化操作,求取列特征向量,再对每行进行归一化操作,求取行特征向量,最后得出每种指标的权重配比,并对判断矩阵A进行一致性检验,最终得到一个节点的CPU、内存和带宽的主观权重分别为WS1,WS2,WS3,并且WS1+WS2+WS3=1;
步骤2-2,计算矩阵的特征向量和指标权重:
对矩阵各列求和,列和的向量为:SUMj;
对矩阵每一列进行归一化处理,公式如下:
∑Aij的值为各列的和SUMj,Bij表示Aij归一化后的数据,根据Bij得到新矩阵B,B矩阵中每一列值的和都为1;
对矩阵B每一行求和,即得出特征向量SUMi;
计算指标权重,对特征向量进行归一化处理,公式如下:
根据上述公式,最终得到三种指标权重分别为W1,W2,W3;
步骤2-3,进行矩阵一致性检验:
计算矩阵的最大特征根,公式如下:
其中,λmax为最大特征根,AW表示矩阵A和权重向量W相乘,得到一个列向量,n代表矩阵阶数,W代表权重向量;
计算判断矩阵的一致性指标,公式如下:
其中,C.I.代表一致性指标,n表示矩阵的阶数;
计算随机一致性比率C.R.,计算公式如下:
其中,R.I.代表平均随机一致性指标,是一个常量,根据阶数可以在量表里查询;3阶R.I.=0.89,如果C.R.<0.1,说明对比矩阵保持一致性;如果C.R.>0.1,则表示对比矩阵不具有一致性,需要进行调整;
步骤2-4,进行熵值法客观权重法计算:
构建负载信息决策矩阵M:
其中,CURn、MURn、BURn分别表示一个节点的第n个周期预测的CPU利用率、内存利用率和带宽的利用率;
对决策矩阵M每列进行标准化处理得到决策矩阵R:
根据如下公式计算负载信息指标的熵:
Ej代表负载信息指标的熵值,常数K=1/ln(n),则0≤Ej≤1,即Ej最大为1,j为1时,Ej表示CPU利用率的熵值;j为2时,Ej表示内存利用率的熵值;j为3时,Ej表示带宽的利用率的熵值;
定义Dj为第j个负载信息指标Ej的贡献度:Dj=1-Ej;
步骤2-5,计算每种负载信息指标的客观权重值WOj:
WO1,WO2,WO3分别代表CPU对于节点负载影响的客观权重值、内存对于节点负载影响的客观权重值和带宽对于节点负载影响的客观权重值,并且WO1+WO2+WO3=1;
步骤2-6,计算节点的最终的负载信息指标的权重wi:
wi=β×WSi+(1-β)×WOi, (1-12)
其中β为主客观权重调整系数,wi为最终节点负载的权重,其中i=1,2,3,并且w1+w2+w3=1,w1表示最终的CPU利用率的权重,w2表示最终的内存利用率的权重,w3表示最终的带宽的利用率的权重;
步骤3-4,计算节点的处理能力:
CAi=w1×(1-CAUi)+w2×(1-MAUi)+w3×(1-BAUi), (1-13)
其中,CAUi、MAUi、BAUi分别代表预测得到的第i个节点当前周期的CPU利用率、内存利用率、带宽利用率,CAi表示第i个节点处理能力。
8.根据权利要求7所述的系统,其特征在于,所述数据迁移模块通过设置高、低负载阈值来作为触发数据迁移的条件,构造出源机和目标机的选择队列,在出现负载不均衡问题时,选择源机和目标机来进行数据迁移,源机作为待迁移数据的节点,目标机作为接受迁移数据的节点,并获得应迁移的数据量。
9.根据权利要求8所述的系统,其特征在于,所述数据迁移模块通过设置高、低负载阈值来作为触发数据迁移的条件,构造出源机和目标机的选择队列,在出现负载不均衡问题时,选择源机和目标机来进行数据迁移,源机作为待迁移数据的节点,目标机作为接受迁移数据的节点,并获得应迁移的数据量,具体包括如下步骤:
步骤a1,选择源机:
计算每个节点的整体负载值:
Loadi=w1×CURi+w2×MURi+w3×BURi, (1-15)
其中,Loadi表示第i个节点的整体负载值,将每个节点的整体负载值与设置的阈值Hth进行比较,如果一个节点的整体负载值超过阈值Hth,则将所述节点加入到高负载节点队列中,按照整体负载值由大到小构成源机选择队列Sy={s1,s2,……,sm},sm表示队列Sy中第m个节点,即整体负载值最小的节点;
对Sy队列中的每个节点,按整体负载值从大到小的顺序进行源机的选择;
步骤a2,选择目标机:将每个节点的整体负载值与设置的阈值Lth进行比较,如果一个节点的负载值低于阈值Lth,则将所述节点加入到低负载节点队列中,按照整体负载值值由小到大构成目标机选择队列Dm={d1,d2,……,dz},dz表示队列Dm中第z个节点,即整体负载值最大的节点;
对Dm队列中的每个节点,按整体负载值从小到大的顺序进行目标机的选择;
步骤a3,进行数据迁移:
如果高、低负载队列节点数目相同,即m=z,则分别将高、低负载队列中的节点按照顺序进行匹配并行迁移,迁移的分区数公式如下:
其中Nq代表迁移的分区数,Ny代表源机中的分区数,Nm代表目标机中的分区数;
如果高负载队列节点数目大于低负载节点数目,即Sy>Dm,则适当调整低负载阈值,使低负载节点队列中的节点数目等于或近大于高负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数;
如果高负载队列节点数目远小于低负载节点数目,即Sy<Dm,则适当降低高负载阈值,使高负载节点队列中的节点数目等于或近小于低负载节点队列中的节点数目,接着按照公式1-16设定迁移的分区数;
获得源机应迁移的分区数后,即能够进行数据迁移。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910978247.3A CN110704542A (zh) | 2019-10-15 | 2019-10-15 | 一种基于节点负载的数据动态分区系统 |
PCT/CN2020/090554 WO2021073083A1 (zh) | 2019-10-15 | 2020-05-15 | 一种基于节点负载的数据动态分区系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910978247.3A CN110704542A (zh) | 2019-10-15 | 2019-10-15 | 一种基于节点负载的数据动态分区系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704542A true CN110704542A (zh) | 2020-01-17 |
Family
ID=69199661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910978247.3A Pending CN110704542A (zh) | 2019-10-15 | 2019-10-15 | 一种基于节点负载的数据动态分区系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110704542A (zh) |
WO (1) | WO2021073083A1 (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158918A (zh) * | 2019-12-31 | 2020-05-15 | 深圳大学 | 支撑点并行枚举负载均衡方法、装置、设备及介质 |
CN111400045A (zh) * | 2020-03-16 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种负载均衡方法及装置 |
CN111581500A (zh) * | 2020-04-24 | 2020-08-25 | 贵州力创科技发展有限公司 | 一种面向网络舆情的数据分布式定向存储方法和装置 |
CN111709623A (zh) * | 2020-06-04 | 2020-09-25 | 中国科学院计算机网络信息中心 | 高性能计算环境评价方法、装置、电子设备及存储介质 |
CN111813512A (zh) * | 2020-06-23 | 2020-10-23 | 重庆邮电大学 | 一种基于动态分区的高能效Spark任务调度方法 |
CN111966289A (zh) * | 2020-08-13 | 2020-11-20 | 上海哔哩哔哩科技有限公司 | 基于Kafka集群的分区优化方法和系统 |
CN112395318A (zh) * | 2020-11-24 | 2021-02-23 | 福州大学 | 一种基于HBase+Redis的分布式存储中间件 |
WO2021073083A1 (zh) * | 2019-10-15 | 2021-04-22 | 南京莱斯网信技术研究院有限公司 | 一种基于节点负载的数据动态分区系统 |
CN113626426A (zh) * | 2021-07-06 | 2021-11-09 | 佛山市禅城区政务服务数据管理局 | 一种生态网格数据的采集传输方法及系统 |
EP3995956A1 (en) * | 2020-11-05 | 2022-05-11 | Fujitsu Limited | Information processing apparatus, method of controlling information processing apparatus, and program for controlling information processing apparatus |
CN114900525A (zh) * | 2022-05-20 | 2022-08-12 | 中国地质大学(北京) | 一种偏斜数据流的本发明实施例提供的方法及系统 |
CN115080215A (zh) * | 2022-08-22 | 2022-09-20 | 中诚华隆计算机技术有限公司 | 由状态监控芯片在计算节点间进行任务调度的方法及系统 |
CN115242797A (zh) * | 2022-06-17 | 2022-10-25 | 西北大学 | 一种面向微服务架构的客户端负载均衡方法及系统 |
US20220357998A1 (en) * | 2021-05-08 | 2022-11-10 | Dell Products L.P. | Multiple metric-based workload balancing between storage resources |
CN116595102A (zh) * | 2023-07-17 | 2023-08-15 | 法诺信息产业有限公司 | 一种改进聚类算法的大数据管理方法及系统 |
WO2024007171A1 (zh) * | 2022-07-05 | 2024-01-11 | 北京小米移动软件有限公司 | 一种算力负载均衡方法及装置 |
CN117498399A (zh) * | 2023-12-29 | 2024-02-02 | 国网浙江省电力有限公司 | 考虑弹性可调能源实体接入的多能协同配置方法及系统 |
CN117724928A (zh) * | 2023-12-15 | 2024-03-19 | 谷技数据(武汉)股份公司 | 一种基于大数据的智能运维可视化监控方法及系统 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342618A (zh) * | 2021-06-30 | 2021-09-03 | 深圳前海微众银行股份有限公司 | 分布式监控集群管理方法、设备及计算机可读存储介质 |
CN113626282B (zh) * | 2021-07-16 | 2023-12-22 | 济南浪潮数据技术有限公司 | 云计算物理节点负载监控方法、装置、终端及存储介质 |
CN113608876B (zh) * | 2021-08-12 | 2024-03-29 | 中国科学技术大学 | 基于负载类型感知的分布式文件系统元数据负载均衡方法 |
CN113780852B (zh) * | 2021-09-16 | 2024-03-05 | 东北大学 | 一种板带轧制过程质量缺陷的诊断方法 |
CN113986557B (zh) * | 2021-11-15 | 2023-09-12 | 北京航空航天大学 | 一种面向全流量采集的存储负载均衡方法及系统 |
CN114064281A (zh) * | 2021-11-22 | 2022-02-18 | 重庆邮电大学 | 一种基于BFD-VNS算法的低成本Spark执行器放置方法 |
CN114268547A (zh) * | 2021-12-09 | 2022-04-01 | 中国电子科技集团公司第五十四研究所 | 一种多属性决策的空中应急通信网络关键节点识别方法 |
CN114201296B (zh) * | 2021-12-09 | 2023-07-21 | 厦门美亚亿安信息科技有限公司 | 一种基于流式处理平台的数据平衡方法和系统 |
CN114363340B (zh) * | 2022-01-12 | 2023-12-26 | 东南大学 | 无人机集群失效的控制方法、系统及存储介质 |
CN114385088B (zh) * | 2022-01-19 | 2023-09-01 | 中山大学 | 一种对分布式存储系统中数据关联性分析后的布局方法 |
CN114666336B (zh) * | 2022-03-14 | 2023-07-18 | 西安热工研究院有限公司 | 一种基于api网关动态权重服务路由的方法 |
CN114338696B (zh) * | 2022-03-14 | 2022-07-15 | 北京奥星贝斯科技有限公司 | 用于分布式系统的方法及装置 |
CN115061815B (zh) * | 2022-06-20 | 2024-03-26 | 北京计算机技术及应用研究所 | 基于ahp的最优调度决策方法与系统 |
CN115203177B (zh) * | 2022-09-16 | 2022-12-06 | 北京智阅网络科技有限公司 | 一种分布式数据存储系统及存储方法 |
CN116401111B (zh) * | 2023-05-26 | 2023-09-05 | 中国第一汽车股份有限公司 | 脑机接口的功能检测方法、装置、电子设备及存储介质 |
CN116991580A (zh) * | 2023-07-27 | 2023-11-03 | 上海沄熹科技有限公司 | 一种分布式数据库系统负载均衡的方法及装置 |
CN117129556B (zh) * | 2023-08-29 | 2024-02-02 | 中国矿业大学 | 基于无线传感器网络的室内tvoc浓度实时监测系统 |
CN117033004B (zh) * | 2023-10-10 | 2024-02-09 | 苏州元脑智能科技有限公司 | 负载均衡方法、装置、电子设备及存储介质 |
CN117119058B (zh) * | 2023-10-23 | 2024-01-19 | 武汉吧哒科技股份有限公司 | Ceph分布式存储集群中存储节点优化方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978236A (zh) * | 2015-07-07 | 2015-10-14 | 四川大学 | 一种基于多衡量指标的hdfs负载源宿节点选取方法 |
CN108628662A (zh) * | 2018-04-11 | 2018-10-09 | 武汉理工大学 | 混合云环境下基于负载预测的资源弹性伸缩方法 |
CN109783235A (zh) * | 2018-12-29 | 2019-05-21 | 西安交通大学 | 一种基于最大熵原理的负载均衡调度方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298339B (zh) * | 2014-10-11 | 2017-02-15 | 东北大学 | 一种面向最小能耗的服务器整合方法 |
WO2019113308A1 (en) * | 2017-12-05 | 2019-06-13 | Franchitti Jean Claude | Active adaptation of networked compute devices using vetted reusable software components |
US10310760B1 (en) * | 2018-05-21 | 2019-06-04 | Pure Storage, Inc. | Layering communication fabric protocols |
CN110704542A (zh) * | 2019-10-15 | 2020-01-17 | 南京莱斯网信技术研究院有限公司 | 一种基于节点负载的数据动态分区系统 |
-
2019
- 2019-10-15 CN CN201910978247.3A patent/CN110704542A/zh active Pending
-
2020
- 2020-05-15 WO PCT/CN2020/090554 patent/WO2021073083A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978236A (zh) * | 2015-07-07 | 2015-10-14 | 四川大学 | 一种基于多衡量指标的hdfs负载源宿节点选取方法 |
CN108628662A (zh) * | 2018-04-11 | 2018-10-09 | 武汉理工大学 | 混合云环境下基于负载预测的资源弹性伸缩方法 |
CN109783235A (zh) * | 2018-12-29 | 2019-05-21 | 西安交通大学 | 一种基于最大熵原理的负载均衡调度方法 |
Non-Patent Citations (1)
Title |
---|
孟令伍: ""面向 Spark 的 MemSql 数据分区策略的研究及应用"", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073083A1 (zh) * | 2019-10-15 | 2021-04-22 | 南京莱斯网信技术研究院有限公司 | 一种基于节点负载的数据动态分区系统 |
CN111158918A (zh) * | 2019-12-31 | 2020-05-15 | 深圳大学 | 支撑点并行枚举负载均衡方法、装置、设备及介质 |
CN111158918B (zh) * | 2019-12-31 | 2022-11-11 | 深圳大学 | 支撑点并行枚举负载均衡方法、装置、设备及介质 |
CN111400045A (zh) * | 2020-03-16 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种负载均衡方法及装置 |
CN111400045B (zh) * | 2020-03-16 | 2023-09-05 | 杭州海康威视系统技术有限公司 | 一种负载均衡方法及装置 |
CN111581500A (zh) * | 2020-04-24 | 2020-08-25 | 贵州力创科技发展有限公司 | 一种面向网络舆情的数据分布式定向存储方法和装置 |
CN111709623A (zh) * | 2020-06-04 | 2020-09-25 | 中国科学院计算机网络信息中心 | 高性能计算环境评价方法、装置、电子设备及存储介质 |
CN111813512A (zh) * | 2020-06-23 | 2020-10-23 | 重庆邮电大学 | 一种基于动态分区的高能效Spark任务调度方法 |
CN111813512B (zh) * | 2020-06-23 | 2022-11-25 | 重庆邮电大学 | 一种基于动态分区的高能效Spark任务调度方法 |
CN111966289A (zh) * | 2020-08-13 | 2020-11-20 | 上海哔哩哔哩科技有限公司 | 基于Kafka集群的分区优化方法和系统 |
CN111966289B (zh) * | 2020-08-13 | 2024-02-09 | 上海哔哩哔哩科技有限公司 | 基于Kafka集群的分区优化方法和系统 |
EP3995956A1 (en) * | 2020-11-05 | 2022-05-11 | Fujitsu Limited | Information processing apparatus, method of controlling information processing apparatus, and program for controlling information processing apparatus |
CN112395318B (zh) * | 2020-11-24 | 2022-10-04 | 福州大学 | 一种基于HBase+Redis的分布式存储中间件 |
CN112395318A (zh) * | 2020-11-24 | 2021-02-23 | 福州大学 | 一种基于HBase+Redis的分布式存储中间件 |
US20220357998A1 (en) * | 2021-05-08 | 2022-11-10 | Dell Products L.P. | Multiple metric-based workload balancing between storage resources |
CN113626426A (zh) * | 2021-07-06 | 2021-11-09 | 佛山市禅城区政务服务数据管理局 | 一种生态网格数据的采集传输方法及系统 |
CN114900525A (zh) * | 2022-05-20 | 2022-08-12 | 中国地质大学(北京) | 一种偏斜数据流的本发明实施例提供的方法及系统 |
CN115242797A (zh) * | 2022-06-17 | 2022-10-25 | 西北大学 | 一种面向微服务架构的客户端负载均衡方法及系统 |
CN115242797B (zh) * | 2022-06-17 | 2023-10-27 | 西北大学 | 一种面向微服务架构的客户端负载均衡方法及系统 |
WO2024007171A1 (zh) * | 2022-07-05 | 2024-01-11 | 北京小米移动软件有限公司 | 一种算力负载均衡方法及装置 |
CN115080215B (zh) * | 2022-08-22 | 2022-11-15 | 中诚华隆计算机技术有限公司 | 由状态监控芯片在计算节点间进行任务调度的方法及系统 |
CN115080215A (zh) * | 2022-08-22 | 2022-09-20 | 中诚华隆计算机技术有限公司 | 由状态监控芯片在计算节点间进行任务调度的方法及系统 |
CN116595102B (zh) * | 2023-07-17 | 2023-10-17 | 法诺信息产业有限公司 | 一种改进聚类算法的大数据管理方法及系统 |
CN116595102A (zh) * | 2023-07-17 | 2023-08-15 | 法诺信息产业有限公司 | 一种改进聚类算法的大数据管理方法及系统 |
CN117724928A (zh) * | 2023-12-15 | 2024-03-19 | 谷技数据(武汉)股份公司 | 一种基于大数据的智能运维可视化监控方法及系统 |
CN117498399A (zh) * | 2023-12-29 | 2024-02-02 | 国网浙江省电力有限公司 | 考虑弹性可调能源实体接入的多能协同配置方法及系统 |
CN117498399B (zh) * | 2023-12-29 | 2024-03-08 | 国网浙江省电力有限公司 | 考虑弹性可调能源实体接入的多能协同配置方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021073083A1 (zh) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704542A (zh) | 一种基于节点负载的数据动态分区系统 | |
CN110187990B (zh) | 一种基于模式转移的虚拟机混合备用动态可靠性评估方法 | |
CN104283946B (zh) | 一种单物理机下多虚拟机的资源自适应调整系统及方法 | |
CN112685170B (zh) | 备份策略的动态优化 | |
CN111124689A (zh) | 一种集群中容器资源动态分配方法 | |
CN103778474A (zh) | 资源负载量预测方法、分析预测系统及业务运营监控系统 | |
CN104298550A (zh) | 一种面向Hadoop的动态调度方法 | |
WO2023103349A1 (zh) | 负载调节方法、管理节点以及存储介质 | |
CN109828836B (zh) | 一种批量流式计算系统参数动态配置方法 | |
CN110502323B (zh) | 一种云计算任务实时调度方法 | |
CN112328395B (zh) | 一种云资源容量规划方法和系统 | |
CN109460301A (zh) | 一种流数据负载的弹性资源配置方法及系统 | |
Diao et al. | Comparative studies of load balancing with control and optimization techniques | |
CN115169634A (zh) | 一种任务分配优化处理方法及装置 | |
US10313457B2 (en) | Collaborative filtering in directed graph | |
CN113158435B (zh) | 基于集成学习的复杂系统仿真运行时间预测方法与设备 | |
CN108241864A (zh) | 基于多变量分组的服务器性能预测方法 | |
CN107844496B (zh) | 统计信息输出方法及装置 | |
Sang et al. | Privacy-preserving hybrid cloud framework for real-time TCL-based demand response | |
CN115842822A (zh) | 一种低碳自适应云主机资源配置系统 | |
Zheng et al. | Privacy-preserving worker allocation in crowdsourcing | |
CN111598390B (zh) | 服务器高可用性评估方法、装置、设备和可读存储介质 | |
CN107133104A (zh) | 一种分布式流数据处理方法 | |
Lili et al. | A Markov chain based resource prediction in computational grid | |
Almomani et al. | Ordinal optimization with computing budget allocation for selecting an optimal subset |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |
|
RJ01 | Rejection of invention patent application after publication |