一种HDFS中面向视频的负载均衡方法.pdf

上传人:小** 文档编号:4062372 上传时间:2018-08-13 格式:PDF 页数:18 大小:1.51MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510021824.1

申请日:

2015.01.16

公开号:

CN104539730A

公开日:

2015.04.22

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20150116|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

浙江大学

发明人:

尹建伟; 黄晓成; 邓水光; 李莹; 吴健; 吴朝晖

地址:

310027浙江省杭州市西湖区浙大路38号

优先权:

专利代理机构:

杭州天勤知识产权代理有限公司33224

代理人:

陈升华

PDF下载: PDF下载
内容摘要

本发明公开了一种HDFS中面向视频的负载均衡方法,其结合视频文件的码率属性建立了视频存储场景下HDFS中数据节点资源利用率的评价模型;数据收集器分为名字节点代理和数据节点代理两部分,用于在HDFS中维护视频文件额外的属性;创建负载均衡方案时考虑在集群中的各个数据节点存储容量使用率基本均衡的前提下尽可能满足各个数据节点带宽资源消耗的均衡;调度分配器在选择要移动的数据块时综合考虑数据块占用的空间和可能消耗的带宽资源。本发明利用视频的特性在HDFS中对视频存储进行负载均衡,能够让视频存储场景下HDFS集群的带宽资源得到更有效的利用。

权利要求书

权利要求书1.  一种HDFS中面向视频的负载均衡方法,包括如下步骤: (1)HDFS中的数据节点通过计算得到自身的负载信息,主控节点收集各 数据节点的负载信息; 所述的负载信息包括磁盘大小、磁盘使用率、带宽资源总量、静态带宽资 源消耗量以及单位静态带宽资源消耗量; (2)由负载均衡器从主控节点索取所述的负载信息并接收用户输入的操作 指令,进而根据操作指令和负载信息建立负载均衡方案; (3)由调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁 移,以实现负载均衡。 2.  根据权利要求1所述的负载均衡方法,其特征在于:所述的步骤(1)中 数据节点计算得到自身负载信息的具体实现过程如下: 1.1数据节点拉取自身的数据块报告; 1.2数据节点对所述的数据块报告进行处理:根据数据块报告中数据块ID 从主控节点提取其数据块对应存储文件的文件ID和最近修改时间;数据节点根 据文件ID读取对应的文件进而分析其码率; 1.3数据节点根据码率和最近修改时间通过以下公式计算出自身的静态带 宽资源消耗量:数据节点的静态带宽资源消耗量等于数据节点内所有数据块静 态带宽资源消耗量的总和,数据块的静态带宽资源消耗量=数据块所对应存储文 件的码率*exp((预设的活跃时间周期-文件活跃时间)/活跃时间周期);其中,文件 活跃时间=当前时间-最近修改时间; 1.4数据节点根据自身的静态带宽资源消耗量和带宽资源总量通过以下公 式计算出自身的单位静态带宽资源消耗量:单位静态带宽资源消耗量=静态带宽 资源消耗量/带宽资源总量。 3.  根据权利要求1所述的负载均衡方法,其特征在于:所述的步骤(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。 4.  根据权利要求1所述的负载均衡方法,其特征在于:所述的步骤(3)中 调度器根据负载均衡方案控制各数据节点对节点内的数据块进行迁移的具体实 现过程如下: 5.1对于移出数据块的节点,对该节点的所有数据块按数据块静态带宽资源 消耗量与数据块大小的比值从小到大排列; 5.2对于迁移的第i个数据块,i为奇数;从数据块队列中任取一数据块, 判断该数据块的信息是否符合迁移任务的要求:若是,则迁移该数据块并更新 迁移任务;若否,则判断该数据块的下一个数据块; 对于迁移的第j个数据块,j为偶数;从数据块队列中找出第一个数据块静 态带宽资源消耗量与数据块磁盘使用量比值大于等于静态带宽资源消耗量迁移 大小与磁盘使用量迁移大小比值的数据块,判断该数据块的信息是否符合迁移 任务的要求:若是,则迁移该数据块并更新迁移任务;若否,则判断该数据块 的下一个数据块。

说明书

说明书一种HDFS中面向视频的负载均衡方法
技术领域
本发明属于分布式系统存储技术领域,具体涉及一种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、若找到了符合要求的数据块,则从源数据节点块列表中删除该数据块并 对其进行移动,否则取消当前移动任务。

一种HDFS中面向视频的负载均衡方法.pdf_第1页
第1页 / 共18页
一种HDFS中面向视频的负载均衡方法.pdf_第2页
第2页 / 共18页
一种HDFS中面向视频的负载均衡方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种HDFS中面向视频的负载均衡方法.pdf》由会员分享,可在线阅读,更多相关《一种HDFS中面向视频的负载均衡方法.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种HDFS中面向视频的负载均衡方法,其结合视频文件的码率属性建立了视频存储场景下HDFS中数据节点资源利用率的评价模型;数据收集器分为名字节点代理和数据节点代理两部分,用于在HDFS中维护视频文件额外的属性;创建负载均衡方案时考虑在集群中的各个数据节点存储容量使用率基本均衡的前提下尽可能满足各个数据节点带宽资源消耗的均衡;调度分配器在选择要移动的数据块时综合考虑数据块占用的空间和可能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1