一种Hadoop系统优化方法技术方案

技术编号:15225244 阅读:166 留言:0更新日期:2017-04-27 03:49
本发明专利技术涉及大数据与云计算领域,尤其涉及一种Hadoop系统优化方法。其中,对HDFS数据分布存储阶段的优化包括:选择DataNode;对选出的DataNode排序;采用同向增量的轮循方法放置数据。对MapReduce数据并行计算阶段的优化包括:生成执行队列Q;执行R0备份;更新执行队列Q;执行R1备份;更新执行队列Q;执行R2备份;更新执行队列Q;针对性执行。本发明专利技术采用自适应的轮循放置策略,可以将数据基本均匀地放置在DataNode,防止出现节点负载不平衡等问题。同时将所有的map任务都在本机执行,很大程度上减少了数据的网络传输,减少了map任务对网络传输的依赖,极大地避免了网络延迟带给应用的瓶颈。

【技术实现步骤摘要】

本专利技术涉及大数据与云计算领域,尤其涉及一种Hadoop系统优化方法
技术介绍
Hadoop以其可靠、高效、可伸缩的数据处理方式,成为目前比较受用户青睐的分布式系统架构。Hadoop框架最核心的设计是HDFS(Hadoop分布式文件系统)和MapReduce,HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。现有的Hadoop框架中HDFS默认采用随机的数据放置,这种方式下数据放置不均匀,而且由于没有兼顾节点负载(计算负载和存储负载)导致负载不平衡。另一方面,在MapReduce并行计算时,某些节点处理任务所需的数据不在本地,需要从其他节点网络传输过来,尤其当数据量非常大时,对网络传输的需求会巨大,无疑地,网络传输成为发展的瓶颈。这些问题严重影响了Hadoop框架的执行效率。
技术实现思路
为解决上述问题,本专利技术针对Hadoop框架中的HDFS数据分布存储和MapReduce数据并行计算两个过程进行了优化。对于HDFS数据分布存储,提出了“自适应的数据轮循放置策略”,一方面轮循的数据放置可以解决在HDFS中数据放置不均匀的问题;另一方面自适应的数据放置即根据节点自身的能力(计算能力和存储能力)选择将较多的数据放置在能力较大的节点上,可以解决在HDFS中数据放置时出现节点负载不平衡甚至出现某些节点负载过重等问题。对于MapReduce数据并行计算,提出了“基于数据的本机执行”的并行计算策略,尽可能将所有map任务在本机处理即几乎所有数据的读取都在本机磁盘执行,这样既可以减少对网络传输的依赖,又可以大幅度地提高应用效率。本专利技术采用的具体方案如下:一种Hadoop系统优化方法,包括对HDFS数据分布存储阶段的优化和对MapReduce数据并行计算阶段的优化;其中,对HDFS数据分布存储阶段的优化包括以下步骤:步骤1.1、选择DataNode:根据Hadoop集群内每个DataNode的磁盘使用率选择具有存储能力的DataNode用于存储数据;步骤1.2、对选出的DataNode排序:将已选择的DataNode根据其计算能力的大小降序排序;步骤1.3、放置数据:按照步骤1.2产生的顺序采用同向增量的轮循方法,将所有Block的备份存储到选出的DataNode;对MapReduce数据并行计算阶段的优化包括以下步骤:步骤2.1、生成执行队列Q:各TaskTracker将存储在本地的Block的备份按Block编号和备份编号的增序进行排序生成各自的执行队列q,优先考虑备份编号;HDFS默认备份数是3,第i个Block的备份为所有TaskTracker的执行队列q统称为执行队列Q;步骤2.2、执行R0备份:各TaskTracker顺序地执行自己队列q中备份编号为0的备份R0,当有一个TaskTracker执行完自己队列q中R0的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.3、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.4、检查执行队列Q是否为空,若空则停止执行任务;步骤2.5、执行R1备份:各TaskTracker顺序地执行自己队列q中备份编号为1的备份R1,当有一个TaskTracker执行完自己队列q中R1的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.6、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.7、检查执行队列Q是否为空,若空则停止执行任务;步骤2.8、执行R2备份:各TaskTracker顺序地执行自己队列q中备份编号为2的备份R2,当有一个TaskTracker执行完自己队列q中R2的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.9、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.10、检查执行队列Q是否为空,若空则停止执行任务;步骤2.11、针对性执行:检查是否还存在个别Block的备份未进行处理,在JobTracker的协调下将没有处理的Block的备份进行最后一次针对性处理。步骤1.1中选择DataNode的标准是磁盘使用率在80%以下的视为有存储能力。步骤1.2中,通过CPU和内存的类型判断计算能力大小。步骤1.3中同向增量的轮循方法是指每个Block的各份备份均按顺时针方向循环选取DataNote放置,并用增量区别每份备份的开始位置。所述的增量小于等于步骤1.1选出的DataNode总数的一半。例如,选出并排好序的DataNode有10个,增量m为4,每个Block有3份备份,那么,第1份备份开始放置数据的第一个DataNode为序列中的第1个DataNode,第2份备份开始放置数据的第一个DataNode为序列中的第(1+m)即第5个DataNode,第3份备份开始放置数据的第一个DataNode为序列中的第(1+2*m)即第9个DataNode。步骤2.3、2.6和2.9中已经被处理的备份既包括本机处理的备份,也包括其他TaskTracker处理的备份,相同备份是指针对同一Block的备份,包括R0、R1、R2。步骤2.2中若有TaskTracker的队列中没有R0备份,则不参与此次执行,步骤2.5、2.8同样处理。本专利技术在HDFS数据分布存储时采用轮循的数据放置策略,数据可以很均匀地存储在集群内的各DataNode上。但是,有些DataNode的存储能力较小,可能无法承受均匀地放置数据,如果这样会导致这些节点存储负载过重甚至无法存储数据;有些DataNode的计算能力较弱,可能造成计算较慢而影响整体的性能。为此,本专利技术又通过Hadoop对存储能力的评定选择有足够存储能力的DataNode来保存数据,同时,还将选出的有足够存储能力的DataNode按照计算能力降序排序,尽可能将多的Block存储在计算能力较大的DataNode上,以解决轮循放置数据的计算负载问题。另外,为保证数据的可靠性和容错性,将3份Block的备份采用“同向增量”的方法存储。同向是指放置3份备份时都按顺时针方向放置;增量是指放置3份备份时用增量区别每一份的开始位置。同向存储避免了当参与存储的DataNode为奇数个时,在最中间的DataNode上出现同一Block的相同备份的问题;增量存储避免了所有的Block的相同备份出现在同一DataNode上的问题。步骤2.1-2.11中所述的JobTracker和TaskTracker是MapReduce主从架构的组成。JobTracker是主节点,负责管理和调度;TaskTracker为从节点,负责执行任务。本专利技术的有益效果:1、本专利技术中HDFS数据分布存储时采用自适应的轮循放置策略,相比于一般的HDFS采取的随机放置策略,此优化方法可以兼顾存储和计本文档来自技高网...

【技术保护点】
一种Hadoop系统优化方法,其特征在于:包括对HDFS数据分布存储阶段的优化和对MapReduce数据并行计算阶段的优化;其中,对HDFS数据分布存储阶段的优化包括以下步骤:步骤1.1、选择DataNode:根据Hadoop集群内每个DataNode的磁盘使用率选择具有存储能力的DataNode用于存储数据;步骤1.2、对选出的DataNode排序:将已选择的DataNode根据其计算能力的大小降序排序;步骤1.3、放置数据:按照步骤1.2产生的顺序采用同向增量的轮循方法,将所有Block的备份存储到选出的DataNode;对MapReduce数据并行计算阶段的优化包括以下步骤:步骤2.1、生成执行队列Q:各TaskTracker将存储在本地的Block的备份按Block编号和备份编号的增序进行排序生成各自的执行队列q,优先考虑备份编号;HDFS默认备份数是3,第i个Block的备份为Ri0、Ri1、Ri2,所有TaskTracker的执行队列q统称为执行队列Q;步骤2.2、执行R0备份:各TaskTracker顺序地执行自己队列q中备份编号为0的备份R0,当有一个TaskTracker执行完自己队列q中R0的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.3、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.4、检查执行队列Q是否为空,若空则停止执行任务;步骤2.5、执行R1备份:各TaskTracker顺序地执行自己队列q中备份编号为1的备份R1,当有一个TaskTracker执行完自己队列q中R1的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.6、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.7、检查执行队列Q是否为空,若空则停止执行任务;步骤2.8、执行R2备份:各TaskTracker顺序地执行自己队列q中备份编号为2的备份R2,当有一个TaskTracker执行完自己队列q中R2的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.9、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.10、检查执行队列Q是否为空,若空则停止执行任务;步骤2.11、针对性执行:检查是否还存在个别Block的备份未进行处理,在JobTracker的协调下将没有处理的Block的备份进行最后一次针对性处理。...

【技术特征摘要】
1.一种Hadoop系统优化方法,其特征在于:包括对HDFS数据分布存储阶段的优化和对MapReduce数据并行计算阶段的优化;其中,对HDFS数据分布存储阶段的优化包括以下步骤:步骤1.1、选择DataNode:根据Hadoop集群内每个DataNode的磁盘使用率选择具有存储能力的DataNode用于存储数据;步骤1.2、对选出的DataNode排序:将已选择的DataNode根据其计算能力的大小降序排序;步骤1.3、放置数据:按照步骤1.2产生的顺序采用同向增量的轮循方法,将所有Block的备份存储到选出的DataNode;对MapReduce数据并行计算阶段的优化包括以下步骤:步骤2.1、生成执行队列Q:各TaskTracker将存储在本地的Block的备份按Block编号和备份编号的增序进行排序生成各自的执行队列q,优先考虑备份编号;HDFS默认备份数是3,第i个Block的备份为Ri0、Ri1、Ri2,所有TaskTracker的执行队列q统称为执行队列Q;步骤2.2、执行R0备份:各TaskTracker顺序地执行自己队列q中备份编号为0的备份R0,当有一个TaskTracker执行完自己队列q中R0的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.3、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队列q中删除所有已经被处理的Block的相同备份;步骤2.4、检查执行队列Q是否为空,若空则停止执行任务;步骤2.5、执行R1备份:各TaskTracker顺序地执行自己队列q中备份编号为1的备份R1,当有一个TaskTracker执行完自己队列q中R1的备份时停止执行任务;同时,JobTracker通知其他TaskTracker执行完当前任务后停止执行任务;步骤2.6、更新执行队列Q:在JobTracker的协调下,各TaskTracker从自己的执行队...

【专利技术属性】
技术研发人员:陈旺虎马生俊俞茂义李金溶郏文博
申请(专利权)人:西北师范大学
类型:发明
国别省市:甘肃;62

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1