基于Hadoop的数据传输方法及系统的制作方法

文档序号:10593929阅读:250来源:国知局
基于Hadoop的数据传输方法及系统的制作方法
【专利摘要】本发明公开了一种基于Hadoop的数据传输方法及系统,该方法包括:中间结果文件产生步骤,建立一个中间结果文件以随时存储所有Map任务所产生的中间结果;索引建立步骤,建立索引文件,根据该中间结果文件随时更新该索引文件;传送步骤,当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。本发明缩短了Hadoop任务的执行时间,使得Map任务与Reduce任务的并行程度更高。提高了系统资源利用率,降低了系统的存储开销。
【专利说明】
基于Hadoop的数据传输方法及系统
技术领域
[0001]本发明涉及大数据处理系统领域,尤其涉及一种基于Hadoop的数据传输方法及系统。
【背景技术】
[0002]为了更清楚的理解本发明,首先对几个名词进行以下解释:
[0003]Hadoop系统:由Apache基金会开发的一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop实现了一个分布式文件系统(HadoopDistributed File System),简称HDFS0
[0004]MapReduce计算框架:基于Hadoop分布式文件系统的并行处理大数据集的软件框架,与HDFS构成Hadoop的两大核心组件。MapReduce计算框架需要运行由用户实现的Map任务和Reduce任务。
[0005]图1是Hadoop系统数据处理流程示意图。每个Map任务都会生成一个中间结果文件,每个中间结果文件包含多个区域,区域的个数等于Reduce任务的个数。当Map任务执行完后,Reduce任务会发送请求获取Map任务产生的中间结果,在归并排序后执行Reduce任务的计算处理逻辑,最终将结果写入HDFS中。
[0006]虽然这种设计方法在Hadoop系统中一直沿用至今,但依然存在着不足之处。
[0007]在上述方法中,需由Reduce任务向Map任务请求中间结果。更进一步的,Reduce任务需要被动等待,直到Map任务执行完成后才能申请获取中间结果。则在Map任务执行过程中,即使已经产生了一部分中间结果,也不能立即发送至Reduce任务进行处理,只能等待,由此降低了系统运行效率。同时,网络资源会因为Map任务没有完成而产生空闲,Reduce任务也会因为Map任务没有完成,没有输入数据而不能进行后续计算。可见,上述方式使得该系统的多个部分存在必须等待的空档。
[0008]图2是Hadoop系统中Map任务的中间结果存储方式示意图,每个Map任务分别具有对应的环形缓冲区。每个Map任务(Mapl、Map2、Map3)先将产生的中间结果〈关键字,值,区域>存储在对应的环形缓冲区中,当环形缓冲区容量达到阈值后需要将环形缓冲区中的数据按照区域进行排序,区域内的数据按照关键字进行排序,并将排序后的结果存入一临时溢出文件中。当该Map任务执行完毕后,需要将对应该Map任务的所有的溢出文件进行归并排序,合并成一个中间结果文件。可见,每个Map任务均各自产生一个中间结果文件。
[0009]这种存储中间结果的方式,使得每台服务器产生大量的中间结果文件。若集群规模为1000个节点,需要处理10T的数据,就会产生100万个Map任务,平均每个节点就需要运行1000个Map任务,因此每个节点有可能需要同时打开1000个中间结果文件进行数据的传输,使得系统存储开销较高。
[0010]专利文献1(公开号为CN102209087A)公开了一种在具有存储网络(SAN)的数据中心进行MapReduce数据传输的方法,该数据中心包括部署有作业服务器、Map任务服务器和Reduce任务服务器的多台服务器,该方法包括:响应于接收到作业服务器分配的Map任务,Map任务服务器执行Map任务并产生Map任务输出结果;Map任务服务器将Map任务输出结果写入存储网络;以及响应于接收到作业服务器分配的Reduce任务,Reduce任务服务器从存储网络读取Map任务输出结果。但是该专利专注于利用存储网络的网络带宽优势,加速中间结果的传输效率,但依然使用传统的由Reduce任务请求中间结果的方式,存在如上所述的问题。

【发明内容】

[0011]本发明解决的技术问题在于,提供一种基于Hadoop的数据传输方法及系统,使得在Map任务的执行过程中就可以传输中间结果,提高Map任务与Reduce任务的并行程度。
[0012]更进一步的,本发明可以提高系统资源利用率,使得Reduce任务可以尽快执行后续计算逻辑,使得计算资源和网络资源得到了充分的利用。
[0013]更进一步的,本发明在每台服务器上只生成一个中间结果文件,减少了在传输中间结果时,打开的文件个数,降低系统存储开销。
[0014]为了解决上述问题,本发明公开了一种基于Hadoop的数据传输方法,该方法包括:
[0015]中间结果文件产生步骤,建立一个中间结果文件以随时存储所有Map任务所产生的中间结果;
[0016]索引建立步骤,建立索引文件,根据该中间结果文件随时更新该索引文件;
[0017]传送步骤,当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。
[0018]该索引文件针对每个该中间结果设置一条索引,该索引记载有对应的Reduce任务信息、传输标志位以及中间结果在该中间结果文件中的偏移位置。
[0019]该传送步骤进一步包括:当所述Reduce任务成功接收到该中间结果之后,对该中间结果所对应的索引中的传输标志位更新为已传输。
[0020]该中间结果文件产生步骤进一步包括:
[0021 ]步骤10,每个该Map任务将所产生的中间结果存储在缓冲区中;
[0022]步骤20,当该缓冲区的使用量达到缓冲区阈值后,将该缓冲区中存储的所有中间结果进行归并排序,将排序后的中间结果存储到临时溢出文件中;
[0023]步骤30,当临时溢出文件个数达到溢出文件阈值后,对所有临时溢出文件中的中间结果进行归并排序,将排序后的中间结果存储到该中间结果文件中。
[0024]该中间结果包括:关键字、值以及区域,该步骤20以及该步骤30中的归并排序均为:按照区域进行排序,区域内按照关键字进行排序。
[0025]本发明还公开了一种基于Hadoop的数据传输系统,该系统包括:
[0026]中间结果文件产生单元,用于建立一个中间结果文件以随时存储所有Map任务所产生的中间结果;
[0027]索引建立单元,用于建立索引文件,根据该中间结果文件随时更新该索引文件;
[0028]传送单元,用于当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。
[0029]该索引文件针对每个该中间结果设置一条索引,该索引记载有对应的Reduce任务信息、传输标志位以及中间结果在该中间结果文件中的偏移位置。[°03°]该传送单元进一步包括一更新单元,用于当所述Reduce任务成功接收到该中间结果之后,对该中间结果所对应的索引中的传输标志位更新为已传输。
[0031]该中间结果文件产生单元进一步包括:
[0032]第一存储单元,用于将每个该Map任务将所产生的中间结果存储在缓冲区中;
[0033]第二存储单元,用于当该缓冲区的使用量达到缓冲区阈值后,将该缓冲区中存储的所有中间结果进行归并排序,将排序后的中间结果存储到临时溢出文件中;
[0034]第三存储单元,用于当临时溢出文件个数达到溢出文件阈值后,对所有临时溢出文件中的中间结果进行归并排序,将排序后的中间结果存储到该中间结果文件中。
[0035]该中间结果包括:关键字、值以及区域,该第二存储单元以及该第三存储单元中的归并排序均为:按照区域进行排序,区域内按照关键字进行排序。
[0036]本发明还公开了一种分布式文件系统,包括所述的基于Hadoop的数据传输系统。
[0037]本发明的有益效果在于:
[0038]1.通过提高子任务间并发,缩短Hadoop任务的执行时间:守护进程在Map任务执行过程中传输中间结果,使得Map任务与Reduce任务的并行程度更高。
[0039]2.提高系统资源利用率:在Map任务执行过程中就可以进行中间结果的传输,Reduce任务也可以尽快的执行后续的计算逻辑,使得计算资源和网络资源得到了充分的利用。
[0040]3.降低系统存储开销:在每台服务器上只生成一个中间结果文件,减少了在传输中间结果时,打开的文件个数。
[0041]4、通过本发明所述的中间结果的多级缓存且多次归并排序的存储方式,使得最终存入中间结果文件中的数据实现了有序化,在此基础上,可在收集需要发送给同一 Reduce任务的预定条中间结果后,统一对该预定条中间结果进行发送,以提高传输效率。
【附图说明】
[0042]图1所示为Hadoop系统数据处理流程示意图;
[0043]图2所示为Hadoop系统中Map任务的中间结果存储方式示意图;
[0044]图3所示为本发明的一种基于Hadoop的数据传输方法的流程图;
[0045]图4A所示为本发明的Map任务存储中间结果的方法的流程图;
[0046]图4B所示为本发明的索引文件的结构示意图;
[0047]图5所示为本发明的基于Hadoop的数据传输方法的具体流程图;
[0048]图6所示为本发明的Reduce任务接收中间结果的流程图。
【具体实施方式】
[0049]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的基于Hadoop的数据传输方法及系统进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[°°50] 为了减少Reduce任务的等待时间,提高Map任务与Reduce任务的并行程度,同时降低系统存储开销,本发明对【背景技术】中每个Map任务均生成一个中间结果文件的方式进行了改进,修改为同一服务器中运行的所有Map任务均使用同一中间结果文件进行中间结果的存储,配合索引文件的使用,使得在Map任务的执行过程中就可以传输中间结果,随着中间结果的不断产生而主动推送给Reduce任务,从而提高Map任务与Reduce任务的并行程度,提高系统资源利用率。
[0051 ]如图3所示为本发明的一种基于Hadoop的数据传输方法的流程图,包括如下步骤:
[0052]中间结果文件产生步骤,建立一个中间结果文件以随时存储所有Map任务所产生的中间结果;
[0053]索引建立步骤,建立索引文件,根据该中间结果文件随时更新该索引文件;
[0054]传送步骤,当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。
[0055]具体来说,本发明通过同一中间结果文件存储服务器中的所有Map任务所产生的中间结果。随着Map任务的不断执行,所产生的中间结果可以依照所产生的时间顺序依次存储进中间结果文件中。
[0056]在另一优化实施例中,还可以按照如下方式进行中间结果的存储。如图4A所示为本发明的Map任务存储中间结果的方法,包括下列步骤:
[0057]步骤410,将中间结果存储到缓冲区:Map任务将产生的中间结果〈关键字,值,区域>存储在缓冲区中。
[0058]步骤420,将中间结果存储到溢出文件:当缓冲区的使用量达到缓冲区阈值后,将该缓冲区中的所有中间结果进行归并排序,将排序后的中间结果存储在临时溢出文件中,该归并排序首先按照中间结果中的“区域”这一字段进行排序,在同一区域内的中间结果按照“关键字”这一字段进行排序。
[0059]步骤430,将中间结果存储到中间结果文件:当临时溢出文件个数达到临时溢出文件阈值后,对所有的临时溢出文件中的中间结果进行归并排序,将排序后的中间结果添加到中间结果文件中。该归并排序依然是首先按照中间结果中的“区域”这一字段进行排序,在同一区域内的中间结果按照“关键字”这一字段进行排序。
[0060]由此可见,随着Map任务的不断执行,源源不断的产生中间结果,而这些中间结果通过上述的多级缓存且多次归并排序的方式,源源不断的存储进入中间结果文件。
[0061 ]本发明还建立有一索引文件,该索引文件用于为该中间结果文件中的每条中间结果建立索引。因此,每当中间结果文件中新增一条中间结果,则在该索引文件中为该新增中间结果对应增加一条索引。
[0062]如图4B所示为该索引文件的结构示意图。
[0063]每条索引记载有:对应的Reduce任务信息、传输标志位、中间结果在该中间结果文件中的偏移位置。
[0064]具体来说,由于中间结果文件包含多个区域,每个区域对应一个Reduce任务,故而通过中间结果中所记载的“区域”这一字段,就可以确定对应的Reduce任务信息。如图4B中所示,Reduce进程标号即所述的对应的Reduce任务信息。
[0065]传输标志位用于标记该条索引所对应的中间结果是否已经传输至Reduce任务。则在每条中间结果进入中间结果文件,并相应的产生一条索引时,其传输标志位均设置为“未传输”。在本实施例中,可通过“O”表示“未传输”,“I”表示“已传输”。
[0066]中间结果在该中间结果文件中的偏移位置代表着该中间结果在该中间结果文件中的实际存储位置。则通过该偏移位置可以在中间结果文件中定位到该条中间结果。
[0067]如图5所示为本发明的基于Hadoop的数据传输方法的具体流程图。本发明在Hadoop中安装一守护进程,通过该守护进程执行图5所述方法。
[0068]步骤11,执行Map任务,产生中间结果文件和所述中间结果文件的索引文件,该索弓I文件的结构如图4B所示;
[0069]步骤12,守护进程遍历该索引文件,查看所有中间结果的传输标志位;
[0070]步骤13,当服务器中所有Map任务执行完毕,且所有中间结果均为已传输,跳转至步骤18;否则,执行步骤14;
[0071]步骤14,若守护进程发现存在尚未传输的中间结果且对应的Reduce任务已经启动,则执行步骤15;否则,跳转至步骤12;
[0072]步骤15,守护进程主动向Reduce任务发送该未传输的中间结果;
[0073]守护进行将根据索引文件的指引,在中间结果文件中找到传输标志位为O的中间结果,并将其传送到与Reduce进程编号对应的Reduce任务;
[0074]步骤16,若守护进程收到应答消息,则执行步骤17;否则,跳转至步骤12;
[0075]步骤17,守护进程将索引文件中于步骤15中传输的中间结果的传输标志位改为已传输,跳转至步骤12;
[0076]守护进程收到来自Reduce任务的应答消息后,将索引文件中该中间结果的传输标志位标记为I ;
[0077]步骤18,守护进程退出。
[0078]相对应的,所述的Reduce任务接收中间结果的过程为,所述Reduce任务接收所述守护进程发送的中间结果,并向所述守护进程发送成功接收的消息,所述Reduce任务成功接收了所有所述中间结果后,再进行后续计算。具体如图6所示,包括下列步骤:
[0079]步骤21,Reduce任务收集中间结果;
[0080]步骤22,若Reduce任务成功接收中间结果,则跳转至步骤24;否则,执行步骤23;[0081 ] 步骤23 ,Reduce任务不做应答;
[0082]步骤24,Reduce任务向发送中间结果的守护进程返回成功接收消息;
[0083]步骤25,若Reduce任务成功接收了所有中间结果,则执行步骤26;否则,跳转至步骤 21.’
[0084]步骤26 ,Reduce任务进行后续计算。
[0085]基于以上内容可见,本发明的有益效果在于:
[0086]1.通过提高子任务间并发,缩短Hadoop任务的执行时间:守护进程在Map任务执行过程中传输中间结果,使得Map任务与Reduce任务的并行程度更高。
[0087]2.提高系统资源利用率:在Map任务执行过程中就可以进行中间结果的传输,Reduce任务也可以尽快的执行后续的计算逻辑,使得计算资源和网络资源得到了充分的利用。
[0088]3.降低系统存储开销:在每台服务器上只生成一个中间结果文件,减少了在传输中间结果时,打开的文件个数。
[0089]4、通过图4A所述的中间结果的多级缓存且多次归并排序的存储方式,使得最终存入中间结果文件中的数据实现了有序化,在此基础上,图5步骤15可在收集需要发送给同一Reduce任务的预定条中间结果后,统一对该预定条中间结果进行发送,以提高传输效率。
[0090]以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种基于Hadoop的数据传输方法,其特征在于,该方法包括: 中间结果文件产生步骤,建立一个中间结果文件以随时存储所有Map任务所产生的中间结果; 索引建立步骤,建立索引文件,根据该中间结果文件随时更新该索引文件; 传送步骤,当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。2.如权利要求1所述的方法,其特征在于,该索引文件针对每个该中间结果设置一条索弓I,该索引记载有对应的Reduce任务信息、传输标志位以及中间结果在该中间结果文件中的偏移位置。3.如权利要求2所述的方法,其特征在于,该传送步骤进一步包括: 当所述Reduce任务成功接收到该中间结果之后,对该中间结果所对应的索引中的传输标志位更新为已传输。4.如权利要求2所述的方法,其特征在于,该中间结果文件产生步骤进一步包括: 步骤10,每个该Map任务将所产生的中间结果存储在缓冲区中; 步骤20,当该缓冲区的使用量达到缓冲区阈值后,将该缓冲区中存储的所有中间结果进行归并排序,将排序后的中间结果存储到临时溢出文件中; 步骤30,当临时溢出文件个数达到溢出文件阈值后,对所有临时溢出文件中的中间结果进行归并排序,将排序后的中间结果存储到该中间结果文件中。5.如权利要求4所述的方法,其特征在于,该中间结果包括:关键字、值以及区域,该步骤20以及该步骤30中的归并排序均为:按照区域进行排序,区域内按照关键字进行排序。6.一种基于Hadoop的数据传输系统,其特征在于,该系统包括: 中间结果文件产生单元,用于建立一个中间结果文件以随时存储所有Map任务所产生的中间结果; 索引建立单元,用于建立索引文件,根据该中间结果文件随时更新该索引文件; 传送单元,用于当根据该索引文件判断出该中间结果文件中存在未传输的中间结果且对应的Reduce任务已经启动时,主动向该Reduce任务发送该未传输的中间结果。7.如权利要求6所述的系统,其特征在于,该索引文件针对每个该中间结果设置一条索弓I,该索引记载有对应的Reduce任务信息、传输标志位以及中间结果在该中间结果文件中的偏移位置。8.如权利要求7所述的系统,其特征在于,该传送单元进一步包括一更新单元,用于当所述Reduce任务成功接收到该中间结果之后,对该中间结果所对应的索引中的传输标志位更新为已传输。9.如权利要求7所述的系统,其特征在于,该中间结果文件产生单元进一步包括: 第一存储单元,用于将每个该Map任务将所产生的中间结果存储在缓冲区中; 第二存储单元,用于当该缓冲区的使用量达到缓冲区阈值后,将该缓冲区中存储的所有中间结果进行归并排序,将排序后的中间结果存储到临时溢出文件中; 第三存储单元,用于当临时溢出文件个数达到溢出文件阈值后,对所有临时溢出文件中的中间结果进行归并排序,将排序后的中间结果存储到该中间结果文件中。10.如权利要求9所述的系统,其特征在于,该中间结果包括:关键字、值以及区域,该第二存储单元以及该第三存储单元中的归并排序均为:按照区域进行排序,区域内按照关键字进彳丁排序。11.一种分布式文件系统,其特征在于,包括权利要求6?1中任一所述的基于Hadoop的数据传输系统。
【文档编号】G06F9/50GK105955819SQ201610243294
【公开日】2016年9月21日
【申请日】2016年4月18日
【发明人】曹政, 郭嘉梁, 李强
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1