CN104539730B - 一种hdfs中面向视频的负载均衡方法 - Google Patents
一种hdfs中面向视频的负载均衡方法 Download PDFInfo
- Publication number
- CN104539730B CN104539730B CN201510021824.1A CN201510021824A CN104539730B CN 104539730 B CN104539730 B CN 104539730B CN 201510021824 A CN201510021824 A CN 201510021824A CN 104539730 B CN104539730 B CN 104539730B
- Authority
- CN
- China
- Prior art keywords
- data block
- back end
- node
- static bandwidth
- consumed resource
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000003068 static effect Effects 0.000 claims description 108
- 238000013508 migration Methods 0.000 claims description 59
- 230000005012 migration Effects 0.000 claims description 59
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 238000013210 evaluation model Methods 0.000 abstract description 3
- 230000033001 locomotion Effects 0.000 description 11
- 238000011156 evaluation Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种HDFS中面向视频的负载均衡方法,其结合视频文件的码率属性建立了视频存储场景下HDFS中数据节点资源利用率的评价模型;数据收集器分为名字节点代理和数据节点代理两部分,用于在HDFS中维护视频文件额外的属性;创建负载均衡方案时考虑在集群中的各个数据节点存储容量使用率基本均衡的前提下尽可能满足各个数据节点带宽资源消耗的均衡;调度分配器在选择要移动的数据块时综合考虑数据块占用的空间和可能消耗的带宽资源。本发明利用视频的特性在HDFS中对视频存储进行负载均衡,能够让视频存储场景下HDFS集群的带宽资源得到更有效的利用。
Description
技术领域
本发明属于分布式系统存储技术领域,具体涉及一种HDFS中面向视频的负载均衡方法。
背景技术
传统的文件存储方式将数据集中存储在单个存储节点上,但单个存储节点的处理能力十分有限,容易形成系统性能瓶颈,系统的可靠性和安全性比较低,无法满足大规模存储应用的需要。
分布式存储的概念由此提出,这种存储方式将数据分散存储在多个存储节点上,这些存储节点通过计算机网络相互通信,由分布式存储系统进行集中管理并提供简洁的访问接口。分布式存储系统通常为每个文件创建多个副本并将其分散存储,让多个存储节点分担用户的访问请求压力,可以有效地减少响应时间并且具有很好的容错性和可扩展性。
Hadoop是由Apache Software Fundation开发的一个分布式系统基础架构,它实现了一个分布式文件系统(Hadoop Distributed File System,HDFS)。HDFS被设计用来部署在廉价的硬件上,具有很高的容错性,对应用程序的数据提供高传输率并且可以用流的形式来访问文件系统中的数据。
HDFS处理写文件请求时采取的是随机选取数据节点的策略,对于该文件的每个数据块,该策略在考虑HDFS数据容错性的前提下,从数据节点集群中随机选取一个将该数据块写入。假设集群中各个数据节点的存储容量相同,这种方式在集群中数据节点稳定运行时能够较均衡地将负载分配到各个数据节点上,但由于扩容和数据节点故障等原因,数据节点的增加和删除在集群中是不可避免的,故在集群运行了较长时间后,集群中各个数据节点上的存储容量使用率必定会差别较大,由此产生了负载不均衡的情况。另外,若集群中数据节点的存储容量并不完全相同,随机分配的方式也会造成各个数据节点存储容量使用率的差异。
针对这种负载不均衡的情况,HDFS提供了一个负载均衡器工具对集群中数据节点的负载进行均衡化操作,将负载较重的数据节点上的数据移动到负载较轻的数据节点上,最终实现集群中所有数据节点的存储容量使用率基本相近。
HDFS原有负载均衡器作为一个通用的工具,没有考虑以视频作为主要存储对象的场景下的特定负载均衡问题。原有负载均衡器只考虑在保证数据可靠性(如将数据块副本分布在不同机架上)的前提下将数据块尽量均匀地分布在集群中的各个数据节点中,这种负载评估模型将数据的大小作为了评估的唯一标准,这对于视频存储场景来说是不合适的。
视频存储是具有广泛的应用前景,众多企业存在通过视频等途径拓展业务的需求。研究视频存储场景下数据节点负载评估的模型和对应的负载均衡方法,可以使存储资源能够得到更有效的利用。
视频存储场景下,由于视频文件通常具有不同的码率特性(视频流畅播放所需要的最低读取速率),导致读取视频文件时占据相同空间的数据块消耗的数据节点网络带宽资源可能相差十分大,此时集群中的负载是不均衡的。例如对于集群中两个存储空间消耗相同的数据节点,若他们存储的视频文件的码率相差很大,则在客户端读取操作相对均衡地条件下,存储小码率文件的数据节点的带宽消耗就会比存储大码率文件的数据节点的带宽消耗要小得多。
发明内容
针对现有技术所存在的上述技术问题,本发明提供了一种HDFS中面向视频的负载均衡方法,使得分布式存储系统能够更加充分地利用集群中的带宽资源。
一种HDFS中面向视频的负载均衡方法,包括如下步骤:
(1)HDFS中的数据节点通过计算得到自身的负载信息,主控节点收集各数据节点的负载信息;
所述的负载信息包括磁盘大小、磁盘使用率、带宽资源总量、静态带宽资源消耗量以及单位静态带宽资源消耗量;
(2)由负载均衡器从主控节点索取所述的负载信息并接收用户输入的操作指令,进而根据操作指令和负载信息建立负载均衡方案;
(3)由调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁移,以实现负载均衡。
所述的步骤(1)中数据节点计算得到自身负载信息的具体实现过程如下:
1.1数据节点拉取自身的数据块报告;
1.2数据节点对所述的数据块报告进行处理:根据数据块报告中数据块ID从主控节点提取其数据块对应存储文件的文件ID和最近修改时间;数据节点根据文件ID读取对应的文件进而分析其码率;
1.3数据节点根据码率和最近修改时间通过以下公式计算出自身的静态带宽资源消耗量:数据节点的静态带宽资源消耗量等于数据节点内所有数据块静态带宽资源消耗量的总和,数据块的静态带宽资源消耗量=数据块所对应存储文件的码率*exp((预设的活跃时间周期-文件活跃时间)/活跃时间周期);其中,文件活跃时间=当前时间-最近修改时间;
1.4数据节点根据自身的静态带宽资源消耗量和带宽资源总量通过以下公式计算出自身的单位静态带宽资源消耗量:单位静态带宽资源消耗量=静态带宽资源消耗量/带宽资源总量。
所述的步骤(2)中负载均衡器根据操作指令和负载信息建立负载均衡方案的具体实现过程如下:
2.1通过以下公式计算HDFS的磁盘使用率和单位静态带宽资源消耗量;
HDFS磁盘使用率=所有数据节点的磁盘使用量之和/所有数据节点的磁盘大小之和;其中,磁盘使用量=磁盘使用率*磁盘大小;
HDFS单位静态带宽资源消耗量=所有数据节点的静态带宽资源消耗量之和/所有数据节点的带宽资源总量之和;
2.2对数据节点进行分类:
磁盘使用率大于等于HDFS磁盘使用率的数据节点,属于高空间消耗节点;
磁盘使用率小于HDFS磁盘使用率的数据节点,属于低空间消耗节点;
2.3分别对高空间消耗节点集合和低空间消耗节点集合对应建立二叉排序树A和B;二叉排序树A的优先级为:先按磁盘使用率从大到小,相同情况下按静态带宽资源消耗量从大到小;二叉排序树B的优先级为:先按磁盘使用率从小到大,相同情况下按静态带宽资源消耗量从小到大;
分别对高空间消耗节点集合和低空间消耗节点集合对应建立二叉排序树C和D;二叉排序树C的优先级为:按可移动静态带宽资源消耗量与可移动磁盘使用量的比值从小到大;二叉排序树D的优先级为:按可移动静态带宽资源消耗量与可移动磁盘使用量的比值从小到大;
二叉排序树A~D中每个节点对应数据节点的负载信息;
对于高空间消耗节点,可移动静态带宽资源消耗量=静态带宽资源消耗量-HDFS的单位静态带宽资源消耗量*带宽资源总量;
对于低空间消耗节点,可移动静态带宽资源消耗量=HDFS的单位静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量;
2.4对二叉排序树A和D进行匹配:
2.4.1提取二叉排序树A的最小键值节点,判断其磁盘使用率是否大于用户设定的磁盘使用率上界:大于则执行步骤2.4.2,否则整树不匹配;
2.4.2从二叉排序树D中寻找键值大于等于所述最小键值节点的可移动静态带宽资源消耗量与可移动磁盘使用量的比值的第一个节点,使其与二叉排序树A的最小键值节点匹配;
2.4.3生成从所述最小键值节点移动数据块至所述第一个节点的迁移任务,该迁移任务包含磁盘使用量的迁移大小和静态带宽资源消耗量的迁移大小;
所述的磁盘使用量的迁移大小取所述最小键值节点可移动磁盘使用量和所述第一个节点可移动磁盘使用量的较小值;
所述的静态带宽资源消耗量的迁移大小取所述最小键值节点可移动静态带宽资源消耗量和所述第一个节点可移动静态带宽资源消耗量的较小值;
2.4.4对所述最小键值节点和第一个节点的信息进行更新,更新后将这两个节点放回原先所处的树中;具体更新包括:
更新节点的磁盘使用率:
对于移出数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小-磁盘使用量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小+磁盘使用量的迁移大小)/磁盘大小;
更新节点的单位静态带宽资源消耗量:
对于移出数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量+静态带宽资源消耗量的迁移大小)/磁盘大小;
2.4.5重新生成二叉排序树A和D,返回执行步骤2.4.1;
2.5对二叉排序树B和C进行匹配:
2.5.1提取二叉排序树B的最小键值节点,判断其磁盘使用率是否小于用户设定的磁盘使用率下界:小于则执行步骤2.5.2,否则整树不匹配;
2.5.2从二叉排序树C中寻找键值大于等于所述最小键值节点的可移动静态带宽资源消耗量与可移动磁盘使用量的比值的第一个节点,使其与二叉排序树B的最小键值节点匹配;
2.5.3生成从所述第一个节点移动数据块至所述最小键值节点的迁移任务,该迁移任务包含磁盘使用量的迁移大小和静态带宽资源消耗量的迁移大小;
所述的磁盘使用量的迁移大小取所述最小键值节点可移动磁盘使用量和所述第一个节点可移动磁盘使用量的较小值;
所述的静态带宽资源消耗量的迁移大小取所述最小键值节点可移动静态带宽资源消耗量和所述第一个节点可移动静态带宽资源消耗量的较小值;
2.5.4对所述最小键值节点和第一个节点的信息进行更新,更新后将这两个节点放回原先所处的树中;具体更新包括:
更新节点的磁盘使用率:
对于移出数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小-磁盘使用量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小+磁盘使用量的迁移大小)/磁盘大小;
更新节点的单位静态带宽资源消耗量:
对于移出数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量+静态带宽资源消耗量的迁移大小)/磁盘大小;
2.5.5重新生成二叉排序树B和C,返回执行步骤2.5.1。
所述的步骤(3)中调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁移的具体实现过程如下:
5.1对于移出数据块的节点,对该节点的所有数据块按数据块静态带宽资源消耗量与数据块大小的比值从小到大排列;
5.2对于迁移的第i个数据块,i为奇数;从数据块队列中任取一数据块,判断该数据块的信息是否符合迁移任务的要求:若是,则迁移该数据块并更新迁移任务;若否,则判断该数据块的下一个数据块;
对于迁移的第j个数据块,j为偶数;从数据块队列中找出第一个数据块静态带宽资源消耗量与数据块磁盘使用量比值大于等于静态带宽资源消耗量迁移大小与磁盘使用量迁移大小比值的数据块,判断该数据块的信息是否符合迁移任务的要求:若是,则迁移该数据块并更新迁移任务;若否,则判断该数据块的下一个数据块。
本发明利用视频的特性在HDFS中对视频存储进行负载均衡,该方法建立了视频存储场景下数据节点资源利用率的评价模型并在其基础上提出了一套数据收集、方案生成和负载调度的方案,能够让视频存储场景下HDFS集群的带宽资源得到更有效的利用。
附图说明
图1为本发明方法的运行机理图。
图2为本发明中各模块间的交互关系图。
图3为本发明数据块报告处理流程图。
图4为本发明负载调度器选择下一个块的流程图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
假设集群中有两个数据节点(存储容量均为500GB,带宽总量均为100MB),其中一个数据节点(节点A)存储了两个完整的文件(单副本策略,每个文件包含两个完整的64MB的数据块,其中一个文件的码率为128Kbps,另一个文件的码率为10240Kbps),而另一个数据节点(节点B)没有存储任何数据。此时集群的负载是不平衡的,若运行HDFS原有负载均衡器工具,则其会从节点A随机选取两个数据块移动到节点B,使得节点A和节点B的存储容量使用率更加均衡。
但是,这种方式有可能会使大码率文件的两个数据块位于同一个数据节点(假设为节点B),假设客户端对于各个数据块的读取操作是均衡的,则此时节点B的带宽消耗会明显高于节点A。若视频客户端的数量逐渐增多,则节点B的带宽资源会先达到瓶颈(大码率文件的读取请求被阻塞,此时理论上同时读取各个数据块的最大视频客户端数量为100MB/(2*10240Kbps)=40),而节点A还有很多空闲带宽资源,造成了数据节点带宽资源使用的不均衡。
使用本发明方法可以让负载均衡器工具在工作时有选择地移动数据块,令节点A和节点B分别存储大码率文件的一个数据块和小码率文件的一个数据块,节点A和节点B的带宽资源基本上会同时达到瓶颈(此时理论上同时读取各个数据块的最大视频客户端数量为100MB/(128Kbps+10240Kbps)=80),使得带宽资源能够得到更有效的利用,让存储系统可以支持更多的视频客户端流畅播放。
不同于原有以磁盘使用率大小作为节点资源使用率唯一的评价标准的模型,本发明结合视频文件的特性加入了对于数据节点上存储的数据块可能消耗的网络带宽资源(即数据块的静态带宽资源消耗量)的考虑。
定义一个数据块的静态带宽资源消耗量为:码率*exp((活跃时间周期-文件活跃时间)/活跃时间周期))。其中,码率为视频文件对应的码率,exp代表以自然常数e为底的指数函数,活跃时间周期为文件的热度从最热到基本稳定所用的时间(此参数可以根据具体应用场景进行调整),文件活跃时间为文件从创建到计算静态带宽资源消耗量的时间间隔,这里的文件均指数据块在文件系统中对应所属的文件。
数据节点的静态带宽资源消耗量为存储的所有数据块的静态带宽资源消耗量之和,本发明在原数据节点资源评价模型中添加了一个新的针对视频的影响因素,可以更好地对视频存储场景下数据节点的资源使用情况进行评价。
本发明包括集群数据收集方法、负载均衡方案建立方法和均衡任务调度方法三个部分(对应本发明中负载均衡器的数据收集器、方案生成器和调度分配器),具体如下:
数据收集器分为名字节点代理和数据节点代理两部分,其中,名字节点上的代理模块负责维护集群中的全局数据(如视频文件和码率的对应关系,各个数据节点的带宽资源总量等),而数据节点上的代理模块则负责维护自身存储的数据块相关的局部数据(数据块的静态带宽资源消耗量等),并且每隔一定时间数据节点会将最新的数据通过数据节点协议更新到名字节点上。
方案生成器在需要的时候通过客户端协议和名字节点协议从名字节点上拉取负载均衡所需的数据,并根据集群提供的负载均衡数据和用户给出的运行参数来制定相应的负载均衡方案。负载均衡方案主要考虑应该从哪些数据节点移动多少数据量到哪些另外的数据节点的问题,即数据节点配对(决定由A数据节点向B数据节点移动数据,称作A和B配对)的问题。本发明在配对数据节点时同时考虑了数据节点的磁盘使用率和单位静态带宽资源消耗量,在移动数据块使得各个数据节点的磁盘使用率基本均衡的前提下尽可能满足各个数据节点单位静态带宽资源消耗量的均衡。
负载调度方案主要考虑在配对的节点间应该移动哪些数据块的问题。本发明中的负载调度器根据数据块移动任务的标志位、磁盘使用量的迁移大小和静态带宽资源消耗量的迁移大小等信息来决定本次要移动的数据块。
以下实施方式应用的环境为HDFS(Hadoop-0.20.3版本),其运行机理如图1所示,其中圆柱代表集群中的数据节点,圆柱中的方块代表数据节点上存储的数据块,方块中的数字则代表数据块对应的视频文件的码率的大小,负载均衡过程中数据块的移动由带有箭头的曲线表示。
首先,集群中的各个数据节点收集并上报自身存储的数据块的信息到名字节点,由名字节点对这些信息进行更新和维护。负载均衡器进行工作时会主动从名字节点获取集群中各个数据节点的负载情况,由此制定相应的负载均衡计划并最终调度集群中的相关数据节点有选择性地进行数据块的移动。
对于集群中负载较重的数据节点A,负载均衡器会从集群中负载较轻的数据节点中选择负载偏离程度和节点A最接近的数据节点B进行数据块的移动,移动时以两个数据块为一个过程,移动第一个数据块时采用随机选择的方式(图1中左半部分),而移动第二个数据块时则选择最能够均衡完成当前移动任务的数据块(图1右半部分),数据节点配对和待移动的数据块的选择的具体流程在后续部分说明。
图示过程完成后,各个数据节点上数据块对应的视频文件的码率完全相同,客户端大量读取视频文件时,各个数据节点的带宽资源消耗基本相同,集群中的带宽资源得到了更充分的利用。
图2为本实施方式中各构件间的交互关系图,各构件的具体实施方式如下:
①名字节点代理模块;
名字节点的内存空间相对宝贵,这里只维护文件和码率的对应关系以及各个数据节点和其对应的静态带宽资源消耗量和带宽资源总量。
上述值均通过各个数据节点上报的信息进行更新。
②数据节点代理模块;
由于使用该数据节点的名字节点的个数可能不唯一,本模块为每个使用该数据节点的名字节点维护一份文件路径、数据块信息和文件信息(码率和最后修改时间)之间的关系,并由该模块的主线程负责对这些数据进行更新,主线程的具体运行流程如下:
1、获取所有名字节点的ID。
2、对应每个名字节点ID分配一个存储实例(存储需要维护的数据)。
3、等待一段固定的时间间隔(根据应用场景设置)。
4、从所在数据节点中依次拉取各个名字节点对应的数据块报告(数据节点当前存储的所有属于该名字节点的有效的数据块)。
5、由各个名字节点对应的存储实例对获取的数据块报告进行处理,数据块报告处理的流程见图3。
其中,add操作的流程如下:
(1)与名字节点通信并获取与要添加的数据块对应的文件的元数据(码率、文件路径和文件的最后修改时间)。
(2)如果获取的元数据中的码率小于0,则说明该文件的码率还未进行计算(负载均衡器还处于收集信息的阶段),此时使用视频属性计算模块对该文件的数据格式进行分析并获取码率等属性。码率数据成功计算后,通过数据节点协议将其更新到对应的名字节点上。
(3)在数据块和文件的对应关系中加入该块和对应文件路径的记录。
(4)如果该文件的已有其他数据块存储在该数据节点上,则直接将该块添加到文件对应的数据块集合中;否则,创建一个新的文件和数据块集合的对应关系并将该数据块加入到该集合中。
remove操作的流程如下:
(1)从数据块和文件的对应关系中移除该数据块。
(2)从文件对应的数据块集合中移除该数据块。
(3)如果此时文件对应的数据块集合为空,则移除该文件路径对应的数据块集合和文件信息。
6、计算各个存储实例中维护的数据块的静态带宽资源消耗量并求和。
7、通过数据节点协议把该数据节点此时静态带宽资源消耗量和带宽资源总量报告给各个使用该数据节点的名字节点。
8、回到步骤3。
③负载均衡算法模块;
本模块通过名字节点协议和客户端协议从名字节点上获取负载均衡所需要的数据,根据拉取的数据和用户的输入参数建立负载均衡方案,具体流程如下:
1、通过以下公式计算HDFS的磁盘使用率和单位静态带宽资源消耗量;
HDFS磁盘使用率=所有数据节点的磁盘使用量之和/所有数据节点的磁盘大小之和;其中,磁盘使用量=磁盘使用率*磁盘大小;
HDFS单位静态带宽资源消耗量=所有数据节点的静态带宽资源消耗量之和/所有数据节点的带宽资源总量之和;
2、对数据节点进行分类:
磁盘使用率大于等于HDFS磁盘使用率的数据节点,属于高空间消耗节点;
磁盘使用率小于HDFS磁盘使用率的数据节点,属于低空间消耗节点;
3、分别对高空间消耗节点集合和低空间消耗节点集合对应建立二叉排序树A和B;二叉排序树A的优先级为:先按磁盘使用率从大到小,相同情况下按静态带宽资源消耗量从大到小;二叉排序树B的优先级为:先按磁盘使用率从小到大,相同情况下按静态带宽资源消耗量从小到大;
分别对高空间消耗节点集合和低空间消耗节点集合对应建立二叉排序树C和D;二叉排序树C的优先级为:按可移动静态带宽资源消耗量与可移动磁盘使用量的比值从小到大;二叉排序树D的优先级为:按可移动静态带宽资源消耗量与可移动磁盘使用量的比值从小到大;
二叉排序树A~D中每个节点对应数据节点的负载信息;
对于高空间消耗节点,可移动静态带宽资源消耗量=静态带宽资源消耗量-HDFS的单位静态带宽资源消耗量*带宽资源总量;
对于低空间消耗节点,可移动静态带宽资源消耗量=HDFS的单位静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量;
4、对二叉排序树A和D进行匹配:
4.1、提取二叉排序树A的最小键值节点,判断其磁盘使用率是否大于用户设定的磁盘使用率上界:大于则执行步骤2.4.2,否则整树不匹配;
4.2、从二叉排序树D中寻找键值大于等于所述最小键值节点的可移动静态带宽资源消耗量与可移动磁盘使用量的比值的第一个节点,使其与二叉排序树A的最小键值节点匹配;
4.3、生成从所述最小键值节点移动数据块至所述第一个节点的迁移任务,该迁移任务包含磁盘使用量的迁移大小和静态带宽资源消耗量的迁移大小;
所述的磁盘使用量的迁移大小取所述最小键值节点可移动磁盘使用量和所述第一个节点可移动磁盘使用量的较小值;
所述的静态带宽资源消耗量的迁移大小取所述最小键值节点可移动静态带宽资源消耗量和所述第一个节点可移动静态带宽资源消耗量的较小值;
4.4、对所述最小键值节点和第一个节点的信息进行更新,更新后将这两个节点放回原先所处的树中;具体更新包括:
更新节点的磁盘使用率:
对于移出数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小-磁盘使用量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小+磁盘使用量的迁移大小)/磁盘大小;
更新节点的单位静态带宽资源消耗消耗量:
对于移出数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量+静态带宽资源消耗量的迁移大小)/磁盘大小;
4.5、重新生成二叉排序树A和D,返回执行步骤4.1;
5、对二叉排序树B和C进行匹配:
5.1、提取二叉排序树B的最小键值节点,判断其磁盘使用率是否小于用户设定的磁盘使用率下界:小于则执行步骤2.5.2,否则整树不匹配;
5.2、从二叉排序树C中寻找键值大于等于所述最小键值节点的可移动静态带宽资源消耗量与可移动磁盘使用量的比值的第一个节点,使其与二叉排序树B的最小键值节点匹配;
5.3、生成从所述第一个节点移动数据块至所述最小键值节点的迁移任务,该迁移任务包含磁盘使用量的迁移大小和静态带宽资源消耗量的迁移大小;
所述的磁盘使用量的迁移大小取所述最小键值节点可移动磁盘使用量和所述第一个节点可移动磁盘使用量的较小值;
所述的静态带宽资源消耗量的迁移大小取所述最小键值节点可移动静态带宽资源消耗量和所述第一个节点可移动静态带宽资源消耗量的较小值;
5.4、对所述最小键值节点和第一个节点的信息进行更新,更新后将这两个节点放回原先所处的树中;具体更新包括:
更新节点的磁盘使用率:
对于移出数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小-磁盘使用量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的磁盘使用率=(更新前的磁盘使用率*磁盘大小+磁盘使用量的迁移大小)/磁盘大小;
更新节点的单位静态带宽资源消耗消耗量:
对于移出数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量-静态带宽资源消耗量的迁移大小)/磁盘大小;
对于移入数据块的节点,其更新后的单位静态带宽资源消耗量=(更新前的单位带宽资源静态带宽资源消耗量*带宽资源总量+静态带宽资源消耗量的迁移大小)/磁盘大小;
5.5、重新生成二叉排序树B和C,返回执行步骤2.5.1。
④平衡任务调度模块;
该模块按照负载均衡方案中特定的策略在指定的数据节点之间移动数据块,其具体流程和原有负载均衡器基本相同,本实施方式主要修改了其中选择下一个要移动的数据块的部分,具体流程如图4所示:
1、若移动任务中已经移动的数据块总数为偶数,进行步骤2,否则进行步骤3。
2、在源数据节点的数据块列表中随机选择一个数据块(数据块B),转到步骤4。
3、计算当前移动任务静态带宽资源消耗量的迁移大小和磁盘使用量的迁移大小的比值,找到源数据节点数据块列表中第一个静态带宽资源消耗量和磁盘使用量的比值大于等于这个比值的数据块(数据块B)。
4、取出源数据节点数据块列表中数据块B之后的所有元素(包含这个数据块)组成的集合,遍历该集合中的元素,判断该元素对应的数据块是否适合从源数据节点移动到目标数据节点。
5、若找到了符合要求的数据块,则从源数据节点数据块列表中删除该数据块并对其进行移动,否则进行步骤6。
6、从源数据节点数据块列表的开始位置重新进行遍历(直到数据块B的位置),继续寻找符合要求的数据块。
7、若找到了符合要求的数据块,则从源数据节点块列表中删除该数据块并对其进行移动,否则取消当前移动任务。
Claims (2)
1.一种HDFS中面向视频的负载均衡方法,包括如下步骤:
(1)HDFS中的数据节点通过计算得到自身的负载信息,主控节点收集各数据节点的负载信息;
所述的负载信息包括磁盘大小、磁盘使用率、带宽资源总量、静态带宽资源消耗量以及单位静态带宽资源消耗量;
数据节点计算得到自身负载信息的具体实现过程如下:
1.1数据节点拉取自身的数据块报告;
1.2数据节点对所述的数据块报告进行处理:根据数据块报告中数据块ID从主控节点提取其数据块对应存储文件的文件ID和最近修改时间;数据节点根据文件ID读取对应的文件进而分析其码率;
1.3数据节点根据码率和最近修改时间通过以下公式计算出自身的静态带宽资源消耗量:数据节点的静态带宽资源消耗量等于数据节点内所有数据块静态带宽资源消耗量的总和,数据块的静态带宽资源消耗量=数据块所对应存储文件的码率*exp((预设的活跃时间周期-文件活跃时间)/活跃时间周期);其中,文件活跃时间=当前时间-最近修改时间;
1.4数据节点根据自身的静态带宽资源消耗量和带宽资源总量通过以下公式计算出自身的单位静态带宽资源消耗量:单位静态带宽资源消耗量=静态带宽资源消耗量/带宽资源总量;
(2)由负载均衡器从主控节点索取所述的负载信息并接收用户输入的操作指令,进而根据操作指令和负载信息建立负载均衡方案;
(3)由调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁移,以实现负载均衡。
2.根据权利要求1所述的负载均衡方法,其特征在于:所述的步骤(3)中调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁移的具体实现过程如下:
5.1对于移出数据块的节点,对该节点的所有数据块按数据块静态带宽资源消耗量与数据块大小的比值从小到大排列;
5.2对于迁移的第i个数据块,i为奇数;从数据块队列中任取一数据块,判断该数据块的信息是否符合迁移任务的要求:若是,则迁移该数据块并更新迁移任务;若否,则判断该数据块的下一个数据块;
对于迁移的第j个数据块,j为偶数;从数据块队列中找出第一个数据块静态带宽资源消耗量与数据块磁盘使用量比值大于等于静态带宽资源消耗量迁移大小与磁盘使用量迁移大小比值的数据块,判断该数据块的信息是否符合迁移任务的要求:若是,则迁移该数据块并更新迁移任务;若否,则判断该数据块的下一个数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510021824.1A CN104539730B (zh) | 2015-01-16 | 2015-01-16 | 一种hdfs中面向视频的负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510021824.1A CN104539730B (zh) | 2015-01-16 | 2015-01-16 | 一种hdfs中面向视频的负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104539730A CN104539730A (zh) | 2015-04-22 |
CN104539730B true CN104539730B (zh) | 2018-01-02 |
Family
ID=52855197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510021824.1A Active CN104539730B (zh) | 2015-01-16 | 2015-01-16 | 一种hdfs中面向视频的负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104539730B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254403A (zh) * | 2015-06-09 | 2016-12-21 | 中兴通讯股份有限公司 | 数据的迁移方法及装置 |
CN104978236B (zh) * | 2015-07-07 | 2018-11-06 | 四川大学 | 基于多衡量指标的hdfs负载源宿节点选取方法 |
US10313429B2 (en) * | 2016-04-11 | 2019-06-04 | Huawei Technologies Co., Ltd. | Distributed resource management method and system |
CN107872480B (zh) * | 2016-09-26 | 2020-12-29 | 中国电信股份有限公司 | 大数据集群数据平衡方法和装置 |
CN106888474B (zh) * | 2017-03-16 | 2021-08-13 | 新华三技术有限公司 | 一种负载分担方法及装置 |
CN107800808A (zh) * | 2017-11-15 | 2018-03-13 | 广东奥飞数据科技股份有限公司 | 一种基于Hadoop架构的数据存储系统 |
CN109936627A (zh) * | 2019-02-21 | 2019-06-25 | 山东浪潮云信息技术有限公司 | 一种基于hadoop的自动数据均衡方法及工具 |
CN113655969B (zh) * | 2021-08-25 | 2022-09-16 | 北京中电兴发科技有限公司 | 一种基于流式分布式存储系统的数据均衡存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984280A (zh) * | 2012-12-18 | 2013-03-20 | 北京工业大学 | 针对社交类云存储网络应用的数据备份系统和方法 |
CN103139302A (zh) * | 2013-02-07 | 2013-06-05 | 浙江大学 | 考虑负载均衡的实时副本调度方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065433B2 (en) * | 2009-01-09 | 2011-11-22 | Microsoft Corporation | Hybrid butterfly cube architecture for modular data centers |
-
2015
- 2015-01-16 CN CN201510021824.1A patent/CN104539730B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984280A (zh) * | 2012-12-18 | 2013-03-20 | 北京工业大学 | 针对社交类云存储网络应用的数据备份系统和方法 |
CN103139302A (zh) * | 2013-02-07 | 2013-06-05 | 浙江大学 | 考虑负载均衡的实时副本调度方法 |
Non-Patent Citations (1)
Title |
---|
《一种基于多衡量指标的HDFS负载均衡算法》;康承昆等;《四川大学学报(自然科学版)》;20141130;第51卷(第6期);正文第1-4节、附图1-3 * |
Also Published As
Publication number | Publication date |
---|---|
CN104539730A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104539730B (zh) | 一种hdfs中面向视频的负载均衡方法 | |
Herodotou | Hadoop performance models | |
CN101610287B (zh) | 一种应用于分布式海量存储系统的负载均衡方法 | |
Chandra et al. | Decentralized edge clouds | |
JP5998206B2 (ja) | クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散 | |
Ranganathan et al. | Identifying dynamic replication strategies for a high-performance data grid | |
CN1956457B (zh) | 用于安排网格计算系统中的网格作业的方法和设备 | |
CN101938416B (zh) | 一种基于动态重配置虚拟资源的云计算资源调度方法 | |
CN103139302B (zh) | 考虑负载均衡的实时副本调度方法 | |
CN106843745A (zh) | 容量扩展方法及装置 | |
CN103533058B (zh) | 面向HDFS/Hadoop存储集群的资源监控系统及方法 | |
CN101957863A (zh) | 数据并行处理方法、装置及系统 | |
CN104935628B (zh) | 一种在多个数据中心之间迁移多个关联虚拟机的方法 | |
CN102227121A (zh) | 基于机器学习的分布式缓存策略自适应切换方法及系统 | |
Emara et al. | Distributed data strategies to support large-scale data analysis across geo-distributed data centers | |
Nannai John et al. | A novel dynamic data replication strategy to improve access efficiency of cloud storage | |
CN103631894A (zh) | 一种基于hdfs的动态副本管理方法 | |
CN107733696A (zh) | 一种机器学习和人工智能应用一体机部署方法 | |
Rajalakshmi et al. | An improved dynamic data replica selection and placement in cloud | |
CN106101212A (zh) | 云平台下的大数据访问方法 | |
CN202872848U (zh) | 一种基于云信息云计算服务的云存储终端设备 | |
CN113014649B (zh) | 一种基于深度学习的云物联负载均衡方法、装置及设备 | |
CN105827744A (zh) | 云存储平台的数据处理方法 | |
Marzuni et al. | Cross-MapReduce: Data transfer reduction in geo-distributed MapReduce | |
CN113688115B (zh) | 一种基于Hadoop的档案大数据分布式存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |