基于hdfs的副本平衡方法

文档序号:6552520阅读:286来源:国知局
基于hdfs的副本平衡方法
【专利摘要】本发明公开了一种基于HDFS的副本平衡方法,其在集群配置项中设计抽象Performance类,并通过心跳信息收集各DataNode的性能数据,在数据迁移时,DataNode的匹配除了需要符合现有Balancer程序的节点匹配规则外,还需要参考DataNode的性能指标数据,按照DataNode的性能评分和存储量的比值进行评价,并在评价最优和评价最差的DataNode之间进行匹配,使DataNode存放的数据量正比于DataNode的性能,提高HDFS分布式文件系统负载均衡能力,提升集群性能。在组建集群时,无需考虑集群中各节点配置的性能差异。
【专利说明】基于HDFS的副本平衡方法

【技术领域】
[0001] 本发明涉及数据处理控制【技术领域】,具体涉及一种基于HDFS的副本平衡方法。

【背景技术】
[0002] 近几年来,随着以用户产生内容为标志的WEB2. 0时代的到来,博客、SNS、P2P、M、 图片、视频等应用飞速发展,信息服务越来越贴近人们的生活,互联网中的数据呈现出几何 式的增长。虽然可以凭借超级计算机强大的计算能力和存储能力可以满足互联网数据的计 算和存储要求,但是其造价十分高昂,难以得到广泛的应用。为了以低廉的价格突破单机存 储、计算、内存等能力的限制,人们将目光投向了分布式系统。常见的分布式计算项目使用 闲置的计算机,通过Internet或以太网传输数据,让每台计算机贡献自己的计算能力和存 储能力。
[0003] HDFS 是 Hadoop 的分布式文件系统,是 Hadoop Distributed File System 的简称, 提供了一个高度容错性和高吞吐量的海量数据存储解决方案。HDFS将文件分为若干数据 块,每个数据块默认保存64MB数据;同时,HDFS默认为每个数据块保存3个副本,提高数据 的可靠性和读取性能。HDFS典型的文件大小为GB级,此外,HDFS还支持千万级别的文件数 量。
[0004] HDFS架构基于一组特定的节点而构建,包括数据节点DataNode和元数据节点 NameNode,NameNode在HDFS内部提供元数据服务,管理文件系统的命名空间,将所有的文 件和文件夹的元数据保存在一个文件系统树中;DataNode为HDFS提供存储块,用来存储数 据文件。HDFS通讯协议都是构建在TCP/IP协议上,客户端通过一个可配置的端口连接到 NameNode,通过 ClientProtocol 与 NameNode 交互,而 DataNode 是使用 DataNodeProtocol 与NameNode交互。再设计上,DataNode通过周期性的向NameNode发送心跳信息来保持 和NameNode的通信,信息包括数据块的属性,即数据块属于哪个文件、数据块ID、修改时间 等。目前,HDFS已经在各种大型在线服务和大型存储系统中得到广泛应用,已经成为各大 网站等在线服务公司的海量存储事实标准。
[0005] 虽然HDFS是一个优秀的分布式文件系统,但是其仍有许多不足,负载均衡问题就 是HDFS的一个弱项。HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,t匕 如集群中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如MR程 序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率,机器磁盘 无法利用等等。在Hadoop中,包含一个Balancer程序,通过运行这个程序,可以使得HDFS 集群达到一个平衡的状态,开发人员在开发Balancer程序的时候,遵循了以下几点原则:
[0006] 1、在执行数据重分布的过程中,必须保证数据不出现丢失,不改变数据的备份数, 不改变每一个rack中所具备的数据块数量。
[0007] 2、系统管理员可以通过一条命令启动数据重分布程序或者停止数据重分布程序。
[0008] 3、执行数据块迁移的进程,不能占用过多的系统资源,如网络带宽。
[0009] 4、数据重分布程序执行时,不能影响NameNode的任务调度工作。
[0010] 5、数据重分布任务作为一个独立的进程,与NameNode分开执行,通常在另一台 Rebalancer Server中执行数据重分布进程。
[0011] Balancer程序的执行包括如下步骤:
[0012] 步骤1、Rebalance Server从NameNode中获取每一个DataNode磁盘使用情况。
[0013] 步骤2、Rebalance Server计算哪些机器需要将数据移动,哪些机器可以接受移动 的数据,并且从NameNode中获取需要移动的数据分布情况。
[0014] 步骤3、Rebalance Server计算出来可以将哪一台机器的数据块移动到另一台机 器中去。
[0015] 步骤4、需要移动数据块的机器将数据移动的目的机器上去,同时删除自己机器上 的数据块数据。
[0016] 步骤5、Rebalance Server获取到本次数据移动的执行结果,并继续执行这个过 程,一直没有数据可以移动或者HDFS集群以及达到了平衡的标准为止。
[0017] 现有的Balancer程序工作的方式在绝大多数情况中都是非常适合的;但其仅简 单地考虑各节点磁盘使用率,并基于磁盘使用率确定迁移数据任务,最终使各节点存放的 数据量正比于其磁盘容量。假设这样一种情况:1、数据是3份备份;2、HDFS由2个rack组 成;3、2个rack中的机器磁盘配置不同,rackl中每一台机器的磁盘空间为lTB,rack2中每 一台机器的磁盘空间为10TB ;4、现在大多数数据的2份备份都存储在第一个rack中。在 这样的一种情况下,运行Balancer程序后,rackl中的磁盘剩余空间远远小于rack2,整个 HDFS集群中的数据依旧不平衡。而实际的大型集群中,很难保证集群中节点配置的一致性, 因此,需要开发新的基于HDFS的副本平衡方法。


【发明内容】

[0018] 本发明所要解决的技术问题是提供一种基于HDFS的副本平衡方法,其能够使得 DataNode存放的数据量正比于其性能。
[0019] 本发明解决技术问题所采用的技术方案是:
[0020] 基于HDFS的副本平衡方法,包括以下步骤:
[0021] 1)、集群配置:
[0022] 设计用于代表DataNode性能评价指标的Performance类,Performance类提供一 个用于获得对应的性能数据的getPerformance方法;
[0023] 定义对应DataNode各性能指标的性能类,性能类是继承Performance类的子类;
[0024] 在HDFS通讯协议的心跳信息中增加对应性能类的性能指标数据;
[0025] 2)、数据收集:
[0026] DataNode通过getPerformance方法收集与各性能类对应的性能指标数据;然后 由DataNode定时发送心跳信息,将上述与各性能类对应的性能指标数据发送给NameNode, 并由NameNode保存上述与各性能类对应的性能指标数据;
[0027] 3)、执行 Balancer 程序:
[0028] 3. 1、由 Rebalance Server 从 NameNode 中获取各 DataNode 的性能指标数据;
[0029] 3. 2、根据获取的性能指标数据,计算各DataNode性能评分;
[0030] 3. 3、计算各DataNode性能评分与其存储量的比值α,以及各DataNode的α值的 平均值a avg ;
[0031] 3. 4、通过Balancer命令的threshold参数获取允许的性能误差范围,根据a avg结 合threshold参数确定DataNode性能的目标范围;将α值优于目标范围的DataNode、α 值在目标范围内的DataNode以及α值差于目标范围的DataNode划分为三 个队列;
[0032] 3. 5、匹配DataNode,包括如下步骤:
[0033] 3. 5. 1、若 QmdOT 和 均非空,则将 QmdOT 中 DataNode 和 Q_ 中的 DataNode 进行 匹配;若QmdOT为空而非空,则将Qmid中性能最差的DataNode和中的DataNode进 行匹配;若QmdOT非空而为空,则将Qmid中性能最优的DataNode与QmdOT中的DataNode 进行匹配;
[0034] 3. 5. 2、若3. 5. 1选取的两DataNode符合Balancer程序的节点匹配规则,则执行 DataNode的匹配,进入步骤3. 6,否则重复步骤3. 5. 1 ;
[0035] 3. 6、数据块选择:从待迁出DataNode中选择数据块,若数据块符合Balancer程序 的数据块选取规则,则执行数据迁移任务,否则重新选择数据块;
[0036] 3. 7、完成数据迁移任务后,重新计算迁出DataNode和迁入DataNode的α值,并 将两者放入合适的队列中;
[0037] 3. 8、重复 3. 5、3. 6 和 3. 7,直至 和 QmdOT 均为空。
[0038] 具体的,在集群配置步骤中定义的性能类包括用于获得DataNode的CPU速度的 CpuPerformance类、用于获得DataNode的内存容量的MemoryPerformance类和用于获得 DataNode 的磁盘容量的 DiskPerformance 类。
[0039] 进一步的,在集群配置步骤中分别配置各性能类对应的权重;在步骤3. 1中,由 Rebalance Server从NameNode中的获取各DataNode的性能指标数据及各性能类对应的权 重;在步骤3. 2计算各DataNode性能评分时,根据各性能对应的性能指标数据及其权重计 算各DataNode的性能评分。具体的,在所述步骤3. 2中,根据获取的性能指标数据和权重, 采用T0PSIS算法计算各DataNode性能的最优值、最差值和贴近度,并以贴近度作为其性能 评分。
[0040] 本发明的有益效果是:在数据迁移时,DataNode的匹配除了需要符合现有 Balancer程序的节点匹配规则外,还需要参考DataNode的性能指标数据,按照DataNode的 性能评分和存储量的比值进行评价,并在评价最优和评价最差的DataNode之间进行匹配, 使DataNode存放的数据量正比于DataNode的性能,提高HDFS分布式文件系统负载均衡能 力,提升集群性能。在组建集群时,无需考虑集群中各节点配置的性能差异。

【专利附图】

【附图说明】
[0041] 图1为本发明集群配置修改的简要类图;
[0042] 图2为本发明的数据收集的流程示意图;
[0043] 图3为本发明的性能评分计算的流程示意图;
[0044] 图4为本发明的数据重新分布的匹配流程示意图。

【具体实施方式】
[0045] 本发明的基于HDFS的副本平衡方法,包括集群配置、数据收集、执行Balancer程 序三个部分,下面结合附图和实施例对本发明进一步说明。
[0046] 1)、集群配置
[0047] 如图1所示,设计用于代表DataNode性能评价指标的Performance类, Performance类提供一个用于获得对应的性能数据的getPerformance方法。定义对应 DataNode各性能指标的性能类,性能类是继承Performance类的子类,具体的,性能类包括 用于获得DataNode的CPU速度的CpuPerformance类、用于获得DataNode的内存容量的 MemoryPerformance类和用于获得DataNode的磁盘容量的DiskPerformance类;修改HDFS 的通讯协议,在心跳信息中增加对应性能类的性能指标数据,修改后HDFS的通讯协议所传 输的数据结构如表1所示。
[0048] 表1、包括Performance类的心跳协议传输的数据结构
[0049]

【权利要求】
1. 基于HDFS的副本平衡方法,包括以下步骤: 1) 、集群配置: 设计用于代表DataNode性能评价指标的Performance类,Performance类提供一个用 于获得对应的性能数据的getPerformance方法; 定义对应DataNode各性能指标的性能类,性能类是继承Performance类的子类; 在HDFS通讯协议的心跳信息中增加对应性能类的性能指标数据; 2) 、数据收集: DataNode通过getPerformance方法收集与各性能类对应的性能指标数据;然后由 DataNode定时发送心跳信息,将上述与各性能类对应的性能指标数据发送给NameNode,并 由NameNode保存上述与各性能类对应的性能指标数据; 3) 、执行Balancer程序: 3. 1、由Rebalance Server从NameNode中获取各DataNode的性能指标数据; 3. 2、根据获取的性能指标数据,计算各DataNode性能评分; 3. 3、计算各DataNode性能评分与其存储量的比值α,以及各DataNode的α值的平均 值 αavg ; 3. 4、通过Balancer命令的threshold参数获取允许的性能误差范围,根据a avg结合 threshold参数确定DataNode性能的目标范围;将α值优于目标范围的DataNode、α值 在目标范围内的DataNode以及α值差于目标范围的DataNode划分为 队列; 3. 5、匹配DataNode,包括如下步骤: 3. 5. 1、若QmdOT和均非空,则将QmdOT中DataNode和Q_中的DataNode进行匹配; 若Qunto为空而非空,则将Qmid中性能最差的DataNode和QOTCT中的DataNode进行匹 配;若Qunto非空而为空,则将Q mid中性能最优的DataNode与QmdOT中的DataNode进行 匹配; 3. 5. 2、若3. 5. 1选取的两DataNode符合Balancer程序的节点匹配规则,则执行 DataNode的匹配,进入步骤3. 6,否则重复步骤3. 5. 1 ; 3. 6、数据块选择:从待迁出DataNode中选择数据块,若数据块符合Balancer程序的数 据块选取规则,则执行数据迁移任务,否则重新选择数据块; 3. 7、完成数据迁移任务后,重新计算迁出DataNode和迁入DataNode的α值,并将两 者放入合适的队列中; 3. 8、重复3. 5、3. 6和3. 7,直至和QmdOT均为空。
2. 根据权利要求1所述的基于HDFS的副本平衡方法,其特征在于:在集群配置步 骤中定义的性能类包括用于获得DataNode的CPU速度的CpuPerformance类、用于获 得DataNode的内存容量的MemoryPerformance类和用于获得DataNode的磁盘容量的 DiskPerformance 类。
3. 根据权利要求1所述的基于HDFS的副本平衡方法,其特征在于:在集群配置步骤中 分别配置各性能类对应的权重;在步骤3. 1中,由Rebalance Server首先从NameNode中的 获取各DataNode的性能指标数据及各性能类对应的权重;在步骤3. 2计算各DataNode性 能评分时,根据各性能对应的性能指标数据及其权重计算各DataNode的性能评分。
4.根据权利要求3所述的基于HDFS的副本平衡方法,其特征在于:在所述步骤3. 2中, 根据获取的性能指标数据和权重,采用TOPSIS算法计算各DataNode性能的最优值、最差值 和贴近度,并以贴近度作为其性能评分。
【文档编号】G06F17/30GK104063501SQ201410321195
【公开日】2014年9月24日 申请日期:2014年7月7日 优先权日:2014年7月7日
【发明者】罗光春, 田玲, 陈爱国, 舒康 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1