针对Hadoop MapReduce中混洗阶段的优化系统转让专利

申请号 : CN201910627734.5

文献号 : CN110502337B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 管海兵吴仲轩任锐戚正伟

申请人 : 上海交通大学

摘要 :

本发明提供了一种针对Hadoop MapReduce中混洗阶段的优化系统,该优化系统以守护进程方式运行在Hadoop MapReduce的工作节点以及主节点中,并使用进程间通信以及远程过程调用的方式与Hadoop MapReduce进行通信。同时提供了一种基于上述优化系统实现的优化方法。本发明所提供的优化系统运行后接管Hadoop MapReduce任务运行中的所有中间数据,通过利用预先合并以及预先混洗的方式,一方面合理利用了Map阶段的空闲网络带宽,另一方面在合并同节点中的中间数据后有效减少小文件读写,从而优化了MapReduce任务的完成时间。

权利要求 :

1.一种针对Hadoop MapReduce中混洗阶段的优化系统,其特征在于,包括系统主节点和系统工作节点;其中:所述系统主节点包括:调度器模块以及通讯模块a,所述调度器模块用于调度分区文件进行提前合并的时间、提前混洗的时间以及混洗结果的去处;所述通讯模块a使用进程间通信以及远程过程调用实现系统主节点与Hadoop MapReduce主节点和系统工作节点之间的通讯;

所述系统工作节点包括:混洗处理模块以及通讯模块b,所述混洗处理模块将同节点上的所有临时文件提前合并成一个大的临时文件,并根据调度器模块指示的时间对大的临时文件进行提前混洗;所述通讯模块b使用进程间通信以及远程过程调用实现系统工作节点与系统主节点和Hadoop MapReduce工作节点之间的通讯;

所述提前合并merge过程包括:混洗处理模块向Hadoop MapReduce工作节点获取Map计算结果的临时文件路径,每当监听到一个Map子任务完成,混洗处理模块触发一次提前合并,将新获取的临时文件与上一次提前合并的结果合并;混洗处理模块重复进行上述过程,最终将该Hadoop MapReduce工作节点的文件系统中的所有临时文件合并为一个中间数据文件;

所述提前混洗shuffle过程包括:当同一批运行的Map子任务完成并完成提前合并后,混洗处理模块触发提前混洗;混洗处理模块根据调度器模块指示,将中间数据文件混洗到指定Hadoop MapReduce工作节点。

2.根据权利要求1所述的针对Hadoop MapReduce中混洗阶段的优化系统,其特征在于,所述优化系统以守护进程的方式运行在Hadoop MapReduce的工作节点中。

3.根据权利要求1所述的针对Hadoop MapReduce中混洗阶段的优化系统,其特征在于,在提前合并过程前,还包括如下过程:在接收到提交的新任务后,Hadoop MapReduce将使用进程间通信通知调度器模块,调度器模块通知所有的系统工作节点,系统工作节点开始监听Hadoop MapReduce工作节点中的子任务完成情况。

4.根据权利要求1所述的针对Hadoop MapReduce中混洗阶段的优化系统,其特征在于,在提前混洗过程后,还包括如下过程:在Reduce子任务启动后,混洗处理模块通知该Reduce子任务中间数据文件的路径;

Reduce子任务将直接从本地文件系统顺序读取中间数据文件并进行计算。

说明书 :

针对Hadoop MapReduce中混洗阶段的优化系统

技术领域

[0001] 本发明涉及大数据和云计算技术领域,具体涉及一种针对Hadoop MapReduce中混洗(Shuffle)阶段的优化系统。

背景技术

[0002] MapReduce是一个用于处理大数据的分布式计算框架。Hadoop MapReduce是MapReduce最为知名并被广泛使用的一个开源实现。Hadoop MapReduce使用者可以通过简单的编写Map以及Reduce算法在大规模的集群(最大可支持上千节点)上并行的处理海量数据(TB级甚至PB级的数据量)。并且,Hadoop MapReduce提供了强大的容错能力,确保任务在上千个节点中完成。
[0003] Hadoop MapReduce遵从BSP(Bulk Synchronous Parallel)模型,把分布式计算过程抽象为三个阶段:Map,混洗(Shuffle)以及Reduce。
[0004] Map阶段的运行被分为二个子阶段:Map计算以及分区(Partition)阶段。在Map计算阶段,每个工作节点根据提交的算法中的Map方法计算输入数据并输出中间数据,中间数据由键值对组成。在分区阶段,工作节点根据提交的分区函数对中间数据进行分区,每个分区与每个Reduce子任务是一一对应的映射关系。最终,Map阶段输出的中间数据储存在磁盘中。
[0005] 在混洗(Shuffle)阶段,每个工作节点根据Map阶段中的分区结果重新分配中间数据,工作节点通过网络把相同分区的中间数据传输到指定节点,并储存在磁盘中。
[0006] Reduce阶段的运行被分为二个子阶段:排序(Sort)以及Reduce计算。在排序阶段,工作节点从磁盘中读取出混洗过的中间数据,并对键(Key)进行排序。在Reduce计算阶段,工作节点根据调教的算法中的Reduce方法计算中间数据,最终输出计算结果。
[0007] 在目前的Hadoop MapReduce实现中,存在两个不足之处会对性能造成重大影响:其一,混洗阶段与Reduce阶段耦合,造成Map阶段的网络带宽资源闲置;其二,混洗阶段的大量小文件读写,使得磁盘读写是混洗阶段的瓶颈。
[0008] 具体地,
[0009] 在Hadoop MapReduce中,混洗阶段以及Reduce阶段是耦合在一起的,工作节点需要等到Reduce阶段开始才能进行数据混洗,这导致了Map阶段的网络带宽资源完全闲置。并且根据研究结果显示,在大数据处理任务中,混洗阶段平均占任务总完成时间的三分之一。因此,网络带宽资源的不高效使用,将会严重影响Hadoop MapReduce的性能。
[0010] 在Hadoop MapReduce的生产环境使用中,无论是官方文档还是业内使用经验,都建议将单一MapReduce任务(job)切分成多个小的子任务(task)(即配置大量的Map以及Reduce子任务数),这有助于提升任务执行的并行性以及减少子任务出现落后者(straggler)的影响。经过无数的使用结果证明,上述方法对于优化任务完成时间具有显著效果,并且在大规模集群中效果尤其显著。但是,将任务切分成大量的子任务会造成混洗阶段需要读写大量的小文件。这样大量的小数据量的与随机的I/O磁盘读写将会成为混洗阶段的瓶颈,并严重影响任务完成时间。
[0011] 目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。

发明内容

[0012] 本发明针对现有技术中存在的上述不足,提出了一种针对Hadoop MapReduce中混洗阶段的优化系统。本发明所提供的系统,是一个主从架构的分布式系统,系统以守护进程方式运行在Hadoop MapReduce的工作节点中。本发明所提供的方法,采用本发明所提供的系统接管MapReduce任务运行中的所有中间数据,通过利用预先合并(pre‑merge)以及预先混洗(pre‑shuffle)的方式,一方面合理利用了Map阶段的网络带宽,另一方面有效减少小文件读写,从而优化了MapReduce任务的完成时间。
[0013] 本发明是通过以下技术方案实现的。
[0014] 根据本发明的一个方面,提供了一种针对Hadoop MapReduce中混洗阶段的优化系统,包括系统主节点和系统工作节点;其中:
[0015] 所述系统主节点包括:调度器模块以及通讯模块a,所述调度器模块用于调度分区文件进行提前合并的时间、提前混洗的时间以及混洗结果的去处;所述通讯模块a使用进程间通信以及远程过程调用实现系统主节点与Hadoop MapReduce主节点和系统工作节点之间的通讯;
[0016] 所述系统工作节点包括:混洗处理模块以及通讯模块b,所述混洗处理模块将同节点上的所有临时文件提前合并成一个大的临时文件,并根据调度器模块指示的时间对大的临时文件进行提前混洗;所述通讯模块b使用进程间通信以及远程过程调用实现系统工作节点与系统主节点和Hadoop MapReduce工作节点之间的通讯。
[0017] 优选地,所述优化系统以守护进程的方式运行在Hadoop MapReduce的工作节点中。
[0018] 根据本发明的另一个方面,提供了一种针对Hadoop MapReduce中混洗阶段的优化方法,采用上述的优化系统,包括:
[0019] 提前合并过程:混洗处理模块向Hadoop MapReduce工作节点获取Map计算结果的临时文件路径,每当监听到一个Map子任务完成,混洗处理模块触发一次提前合并,将新获取的临时文件与上一次提前合并的结果合并;混洗处理模块重复进行上述过程,最终将该Hadoop MapReduce工作节点的文件系统中的所有临时文件合并为一个中间数据文件;
[0020] 提前混洗过程:当同一批运行的Map子任务完成并完成提前合并后,混洗处理模块触发提前混洗;混洗处理模块根据调度器模块指示,将中间数据文件混洗到指定Hadoop MapReduce工作节点。
[0021] 其中,所述指定Hadoop MapReduce工作节点采用随机指定的方式。
[0022] 优选地,在提前合并过程前,还包括如下过程:
[0023] 在接收到提交的新任务后,Hadoop MapReduce将使用进程间通信通知调度器模块,调度器模块通知所有的系统工作节点,系统工作节点开始监听Hadoop MapReduce工作节点中的子任务完成情况。
[0024] 优选地,在提前混洗过程后,还包括如下过程:
[0025] 在Reduce子任务启动后,混洗处理模块通知该Reduce子任务中间数据文件的路径;Reduce子任务将直接从本地文件系统顺序读取中间数据文件并进行计算。
[0026] 与现有技术相比,本发明具有如下有益效果:
[0027] 1、本发明通过提前合并的方法,将小文件在Map计算一完成后就提前合并成一个大文件,有效的减少了文件读写次数,从而缩短混洗阶段的数据读取时间,并优化了磁盘读写的尾延迟(tail latency)。具体地,由于MapReduce计算任务会将任务拆分为多个Map子任务,Map子任务计算后的中间数据存储在Hadoop MapReduce工作节点的文件系统之中,所以在计算过程中同个文件系统中将存有多个不同Map子任务的中间数据。在每个Map子任务中的Map计算完成后,系统工作节点将会对Hadoop MapReduce工作节点中同个文件系统上的所有中间数据进行合并,并输出成一个大文件,随后的混洗阶段将直接从此合并后的文件中读取中间数据。
[0028] 2、本发明通过预先混洗的方法,将Map阶段以及混洗阶段并行进行,充分利用了原先Map阶段中闲置的网络带宽资源,从而优化了任务完成时间。具体地,目前Hadoop MapReduce的实现中,Reduce以及混洗阶段紧密耦合在一起,中间数据需要在Reduce子任务的进程中进行传输。本发明中,系统工作节点将接管Hadoop MapReduce中的整个混洗阶段,在每个Map子任务中的Map计算完成后,系统工作节点马上将输出数据进行提前合并,随后马上根据调度器模块指示使用网络传输到指定工作节点。由于MapReduce计算任务会将任务拆分为多个Map子任务,Map子任务将在工作节点上分批运行,所以本发明系统可以有效的将预先混洗与Map计算并行进行,有效的提高Map阶段的资源使用率。
[0029] 3、本发明提供的针对Hadoop MapReduce中混洗阶段的优化系统,其中系统以守护进程方式运行在Hadoop MapReduce的工作节点以及主节点中,系统使用进程间通信以及远程过程调用的方式与Hadoop MapReduce进行通信;系统运行后接管Hadoop MapReduce任务运行中的所有中间数据,通过利用预先合并(pre‑merge)以及预先混洗(pre‑shuffle)的方式,一方面合理利用了Map阶段的空闲网络带宽,另一方面在合并同节点中的中间数据后有效减少小文件读写,从而优化了MapReduce任务的完成时间,实现了对现有Hadoop MapReduce的优化。

附图说明

[0030] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0031] 图1为本发明系统架构图
[0032] 图2为本发明运行中的系统流程对比示意图

具体实施方式

[0033] 下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
[0034] 本发明实施例提供了一种针对Hadoop MapReduce中混洗阶段的优化系统,包括系统主节点和系统工作节点;其中:
[0035] 所述系统主节点包括:调度器模块以及通讯模块a,所述调度器模块用于调度分区文件进行提前合并的时间、提前混洗的时间以及混洗结果的去处;所述通讯模块a使用进程间通信以及远程过程调用实现系统主节点与Hadoop MapReduce主节点和系统工作节点之间的通讯;
[0036] 所述系统工作节点包括:混洗处理模块以及通讯模块b,所述混洗处理模块将同节点上的所有临时文件提前合并成一个大的临时文件,并根据调度器模块指示的时间对大的临时文件进行提前混洗;所述通讯模块b使用进程间通信以及远程过程调用实现系统工作节点与系统主节点和Hadoop MapReduce工作节点之间的通讯。
[0037] 进一步地,所述优化系统以守护进程的方式运行在Hadoop MapReduce的工作节点中。
[0038] 本发明实施例同时提供了一种针对Hadoop MapReduce中混洗阶段的优化方法,采用上述的优化系统,包括:
[0039] 提前合并过程:混洗处理模块向Hadoop MapReduce工作节点获取Map计算结果的临时文件路径,每当监听到一个Map子任务完成,混洗处理模块触发一次提前合并,将新获取的临时文件与上一次提前合并的结果合并;混洗处理模块重复进行上述过程,最终将该Hadoop MapReduce工作节点的文件系统中的所有临时文件合并为一个中间数据文件;
[0040] 提前混洗过程:当同一批运行的Map子任务完成并完成提前合并后,混洗处理模块触发提前混洗;混洗处理模块根据调度器模块指示,将中间数据文件混洗到指定Hadoop MapReduce工作节点。
[0041] 进一步地,在提前合并过程前,还包括如下过程:
[0042] 在接收到提交的新任务后,Hadoop MapReduce将使用进程间通信通知调度器模块,调度器模块通知所有的系统工作节点,系统工作节点开始监听Hadoop MapReduce工作节点中的子任务完成情况。
[0043] 进一步地,在提前混洗过程后,还包括如下过程:
[0044] 在Reduce子任务启动后,混洗处理模块通知该Reduce子任务中间数据文件的路径;Reduce子任务将直接从本地文件系统顺序读取中间数据文件并进行计算。
[0045] 以下结合附图对本发明上述实施例作进一步的详细说明。
[0046] 如图1所示,本发明上述实施例提供的优化系统,是一个主从结构的分布式系统,包括系统主节点和系统工作节点。系统主节点包括一个调度器模块以及通讯模块a,系统工作节点包括一个混洗处理模块以及通讯模块b(图1中皆省略了上述通讯模块a和b),其中:调度器模块用于调度何时进行分区文件的提前合并(即分区文件提前合并的时间),并且调度提前混洗何时进行(即提前混洗的时间)以及混洗去何处(即混洗结果的去处);通讯模块a使用进程间通信以及远程过程调用实现系统主节点与系统工作节点以及Hadoop MapReduce主节点进行通讯,获取临时文件存放路径以及子任务完成情况;混洗处理模块用于把同节点上的所有临时文件提前合并成一个大的临时文件(即中间数据文件),并根据调度器模块指示对中间数据文件进行提前混洗,临时文件的路径以及进行混洗传输的目的地都是通过通信模块b从调度器模块获得。
[0047] 图2展示了本发明优化方法的工作流程,以下将结合附图对工作流程进行详细描述:
[0048] 首先,在接收到提交的新任务后,Hadoop MapReduce将使用进程间通信通知优化系统中的调度器模块。随后,调度器模块通过通信模块通知所有的系统工作节点,系统工作节点开始监听Hadoop MapReduce工作节点中的子任务完成情况。
[0049] 其次,在监听到Map子任务完成后,混洗处理模块通过通信模块向Hadoop MapReduce工作节点获取Map计算结果的临时文件路径(临时文件数量取决于任务输入数据量以及Map计算的算法)。每当监听到一个Map子任务完成,混洗处理模块就会触发一次提前合并,将新获取的临时文件与上一次提前合并的结果合并。混洗处理模块将重复进行上述过程,最终将该节点的文件系统中的所有临时文件合并为单一个大文件,形成中间数据文件。
[0050] 再次,由于Map子任务将在工作节点上分批运行,当一批Map子任务完成并完成提前合并后,混洗处理模块就会触发提前混洗。混洗处理模块根据调度器模块指示,使用网络传输将中间数据文件混洗到指定工作节点。在提前混洗中,混洗处理模块将直接传输合并好的中间数据文件,有效的减少小文件读写次数。
[0051] 最终,在Reduce子任务启动后,混洗处理模块通过通信模块通知该Reduce子任务中间数据文件的路径。Reduce子任务将直接从本地文件系统顺序读取中间数据文件并进行计算,最后输出计算结果。
[0052] 本发明上述实施例提供的针对Hadoop MapReduce中混洗阶段的优化系统,系统以守护进程方式运行在Hadoop MapReduce的工作节点以及主节点中,使用进程间通信以及远程过程调用的方式与Hadoop MapReduce进行通信。系统运行后将接管Hadoop MapReduce任务运行中的所有中间数据,通过利用预先合并(pre‑merge)以及预先混洗(pre‑shuffle)的方式,一方面合理利用了Map阶段的空闲网络带宽,另一方面在合并同节点中的中间数据后有效减少小文件读写,从而优化了MapReduce任务的完成时间。
[0053] 本发明上述实施例提供的针对Hadoop MapReduce中混洗阶段的优化系统,通过提前合并的方法将小文件在Map计算一完成后就提前合并成一个大文件,有效的减少了文件读写次数,从而缩短混洗阶段的数据读取时间,并优化了磁盘读写的尾延迟(tail latency)。
[0054] 本发明上述实施例提供的针对Hadoop MapReduce中混洗阶段的优化系统,通过提前混洗的方法将Map阶段以及混洗阶段并行进行,充分利用了原先Map阶段中闲置的网络带宽资源,从而优化了任务完成时间。
[0055] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。