CN106250233B - MapReduce性能优化系统及优化方法 - Google Patents

MapReduce性能优化系统及优化方法 Download PDF

Info

Publication number
CN106250233B
CN106250233B CN201610586980.7A CN201610586980A CN106250233B CN 106250233 B CN106250233 B CN 106250233B CN 201610586980 A CN201610586980 A CN 201610586980A CN 106250233 B CN106250233 B CN 106250233B
Authority
CN
China
Prior art keywords
key
reduce
node
reduction
subtask
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610586980.7A
Other languages
English (en)
Other versions
CN106250233A (zh
Inventor
姜进磊
武永卫
王博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yangtze Delta Region Institute of Tsinghua University Zhejiang
Original Assignee
Yangtze Delta Region Institute of Tsinghua University Zhejiang
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yangtze Delta Region Institute of Tsinghua University Zhejiang filed Critical Yangtze Delta Region Institute of Tsinghua University Zhejiang
Priority to CN201610586980.7A priority Critical patent/CN106250233B/zh
Publication of CN106250233A publication Critical patent/CN106250233A/zh
Application granted granted Critical
Publication of CN106250233B publication Critical patent/CN106250233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种MapReduce性能优化系统及方法,其中,系统包括:Skew‑‑主节点,用于作为主协调器全局地对Reduce子任务间的Key分布进行管理,并且将Reduce子任务调度到合适的执行节点上;多个Skew‑‑从节点,每个Skew‑‑从节点包括:Key监控器与IO监控器,用于收集Key相关的信息,并将Key相关的信息发送至Skew‑‑主节点。该优化系统可以优化MapReduce在倾斜数据上的性能,简单易实现。

Description

MapReduce性能优化系统及优化方法
技术领域
本发明涉及分布式计算技术领域,特别涉及一种MapReduce性能优化系统及优化方法。
背景技术
互联网和万维网的快速增长,导致了大量的信息在网上传播。此外,企业和政府机构产生了大量的结构化和非结构化信息,这些信息需要进行处理,分析和链接。数据密集型应用程序,如系统生物学,气候建模,数据挖掘和高性能计算所产生的的数据量一路飙升,从GB到TB乃至PB级。
MapReduce是一个处理大规模数据的编程模型和分布式计算模型,具有广泛的应用,例如分布式的基于模式的搜索、分布式排序、网页链接图反转、Web访问日志统计、倒排索引结构、文档聚类、机器学习等等。此外,MapReduce模型已经成功应用于多核系统、网格式桌面系统、分布式计算环境、动态云环境以及移动计算环境。由于MapReduce的高可编程性,许多企业和组织都自己实现了MapReduce模型,比如Google公司的MapReduce、Yahoo公司的Hadoop、微软的Dryad以及Facebook的Hive等等。
MapReduce在设计之初假设输入数据是均匀分布的,因此默认使用对键Key进行哈希的方法,通过保证分配给每个归约Reduce子任务的键Key的数量基本相同来达到负载均衡的目的。但是,当输入数据存在较大倾斜时,每个键Key对应的值Value数量差异较大,键Key的数量相同并不意味着数据量相同,因此使用该方法并不能做到很好的负载均衡,那些分配了过多数据的归约Reduce子任务势必会运行非常长的时间,从而导致MapReduce性能的严重下降。如图1所示,图1显示了Ranked-Inverted-Index测试用例的运行结果(该实验环境配置为24个处理容器(containers,子任务处理单元)来处理495个Map子任务和40个Reduce子任务,不同的块代表不同的子任务,由于Hadoop MapReduce默认提前进行重排Shuffle—当5%的映射Map子任务完成时就已经开始了重排Shuffle,所以部分重排Shuffle时间和映射Map子任务重合,没有在图中显示出来),从图中可以看出最慢的归约Reduce子任务的运行时间是平均归约Reduce子任务运行时间的4.57倍,而在MapReduce模型中,整个任务的执行过程是由最慢子任务决定的,因此整个任务的执行时间都被显著拖慢。
另外,在现实应用中,数据倾斜现象非常普遍,在科学计算中倾斜尤为普遍,因此优化MapReduce在倾斜数据上的性能显得非常重要。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种MapReduce性能优化系统,该系统可以优化MapReduce在倾斜数据上的性能。
本发明的另一个目的在于提出一种MapReduce性能优化方法。
为达到上述目的,本发明一方面实施例提出了一种MapReduce性能优化系统,包括:Skew--主节点,用于作为主协调器全局地对归约Reduce子任务间的键Key分布进行管理,并且将所述归约Reduce子任务调度到合适的执行节点上,其中,所述Skew--主节点包括:键Key分配器,用于根据归约Reduce任务的复杂度将Keys均匀地分配到每一个归约Reduce子任务上;归约节点Reducer选择器,用于根据键Key的位置信息把所述归约Reduce子任务调度到所述合适的执行节点上;多个Skew--从节点,所述多个Skew--从节点位于资源管理器Hadoop YARN的节点管理器上,所述多个Skew--从节点中每个Skew--从节点包括:键Key监控器与输入输出IO监控器,用于收集键Key相关的信息,所述Key相关的信息包括分组group大小、所述键Key的位置信息以及每个节点的输入输出IO占用信息,并将所述键Key相关的信息发送至所述Skew--主节点。
本发明实施例的MapReduce性能优化系统,可以使用一种称之为复杂度感知的Key键分配方法,以及与之对应的局部性感知的归约节点Reducer选择器选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制来保证MapReduce的性能。复杂度感知的Key键分配方法不仅考虑键Key记录的大小,也考虑归约Reduce函数的复杂度,从而能够更好地在各个归约Reduce子任务间平衡计算开销。局部性感知的归约节点Reducer选择器选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制则通过利用数据局部性来减少数据传输和提升资源利用率来减少复杂度感知的Key键分配带来的额外开销,实现优化MapReduce在倾斜数据上的性能的目的,简单易实现。
另外,根据本发明上述实施例的MapReduce性能优化系统还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,分配给所述归约Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
进一步地,在本发明的一个实施例中,通过相应的装箱问题使所述归约Reduce子任务间的计算量均衡。
进一步地,在本发明的一个实施例中,通过本地感知的Reducer选择算法使数据本地化。
进一步地,在本发明的一个实施例中,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将所述归约Reduce子任务的数据从映射Map完成的Map映射节点传输到归约Reduce节点。
为达到上述目的,本发明另一方面实施例提出了一种MapReduce性能优化方法,包括以下步骤:S1,所述Skew--主节点对所述归约Reduce子任务间的键Key分布进行管理,并且将所述归约Reduce子任务调度到所述合适的执行节点上;S2,键Key分配器根据所述归约Reduce任务的复杂度将所述Keys均匀地分配到所述每一个归约Reduce子任务上,并且所述归约节点Reducer选择器根据所述键Key的位置信息把所述归约Reduce子任务调度到所述合适的执行节点上;S3,所述键Key监控器与所述输入输出IO监控器收集所述键Key相关的信息,并将所述键Key相关的信息发送至所述Skew--主节点。
本发明实施例的MapReduce性能优化方法,可以使用一种称之为复杂度感知的Key键分配方法,以及与之对应的局部性感知的归约节点Reducer选择器选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制来保证MapReduce的性能。复杂度感知的Key键分配方法不仅考虑键Key记录的大小,也考虑归约函数Reduce的复杂度,从而能够更好地在各个归约Reduce子任务间平衡计算开销。局部性感知的归约节点Reducer选择器选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制则通过利用数据局部性来减少数据传输和提升资源利用率来减少复杂度感知的Key键分配带来的额外开销,实现优化MapReduce在倾斜数据上的性能的目的,简单易实现。
另外,根据本发明上述实施例的MapReduce性能优化方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,分配给所述归约Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
进一步地,在本发明的一个实施例中,通过相应的装箱问题使所述归约Reduce子任务间的计算量均衡。
进一步地,在本发明的一个实施例中,通过本地感知的Reducer选择算法使数据本地化。
进一步地,在本发明的一个实施例中,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将所述归约Reduce子任务的数据从映射Map完成的映射Map节点传输到归约Reduce节点。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为相关技术中Ranked-Inverted-Index作业执行各个子任务的运行时间示意图;
图2为根据本发明一个实施例的MapReduce性能优化系统的结构示意图;
图3为根据本发明一个实施例的Skew--与Hadoop任务执行时间对比示意图;
图4为根据本发明一个实施例的Reduce执行复杂度测定法与统一线性复杂度法和“真实复杂度”法性能对比结果示意图;
图5为根据本发明一个实施例的不同倾斜分布对Skew--的影响示意图;
图6为根据本发明一个实施例的提前重排Shuffle和只是全映射节点Mapper执行运行时间对比图示意图;以及
图7为根据本发明一个实施例的MapReduce性能优化方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述根据本发明实施例提出的MapReduce性能优化系统及优化方法,首先将参照附图描述根据本发明实施例提出的MapReduce性能优化系统。
图2是本发明一个实施例的MapReduce性能优化系统的结构示意图。
如图2所示,该MapReduce性能优化系统包括:Skew--主节点100和多个Skew--从节点(如Skew--从节点201、Skew--从节点202、Skew--从节点203所示)。
其中,Skew--主节点100用于作为主协调器全局地对归约Reduce子任务间的键Key分布进行管理,并且将归约Reduce子任务调度到合适的执行节点上,其中,Skew--主节点100包括:键Key分配器101和归约节点Reducer选择器102,键Key分配器101用于根据归约Reduce任务的复杂度将Keys均匀地分配到每一个归约Reduce子任务上;归约节点Reducer选择器102用于根据键Key的位置信息把归约Reduce子任务调度到合适的执行节点上。多个Skew--从节点位于资源管理器Hadoop YARN的节点管理器(如节点管理器301、节点管理器302、节点管理器303所示)上,多个Skew--从节点中每个Skew--从节点包括:键Key监控器(如Key监控器2011、Key监控器2021、Key监控器2031所示)与输入输出IO监控器(IO监控器2012、IO监控器2022、IO监控器2032所示),用于收集键Key相关的信息,键Key相关的信息包括分组group大小、键Key的位置信息以及每个节点的输入输出IO占用信息,并将键Key相关的信息发送至Skew--主节点100。本发明实施例的优化系统可以优化MapReduce在倾斜数据上的性能,简单易实现。
其中,在本发明的一个实施例中,分配给Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
进一步地,在本发明的一个实施例中,通过相应的装箱问题使归约Reduce子任务间的计算量均衡。
进一步地,在本发明的一个实施例中,通过本地感知的归约节点Reducer选择算法使数据本地化。
进一步地,在本发明的一个实施例中,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将归约Reduce子任务的数据从映射Map完成的映射Map节点传输到归约Reduce节点。
需要说明的是,在自动识别出作业的重排Shuffle类型之后,所执行的操作是确定的:对于非重重排Shuffle-heavy类型(也就是文中的Shuffle-light和Shuffle-medium)的作业,则启用提前重排Shuffle,这也是Hadoop MapReduce框架的缺省做法;对于重重排Shuffle-heavy类型的作业,按照所提出的方法处理,不启用提前重排Shuffle,而是等到所有映射Map任务均完成之后再调度归约Reduce任务,然后传输数据。
综上所述,可以理解的是,本发明实施例的目的在于解决由归约Reduce子任务输入数据的随机分配以及归约Reduce子任务随机调度到执行节点导致的归约Reduce子任务非均衡的计算量而造成的MapReduce在倾斜数据的性能下降的问题,本发明实施例通过使用一种称之为基于复杂度键Key分布的离线数据划分方法,并且使用三个称之为本地感知归约Reducer选择、全映射节点Mapper执行和重排Shuffle感知调控的组件进行智能调度。
在本发明的实施例中,相对于现有的支持MapReduce模型的分布式文件系统相比,本发明提出的技术方案具有如下优点:
1、提出了一种称之为基于复杂度分布键Key的方法来划分中间数据并且把它们分配到各个归约Reduce工作节点,第一次既考虑键Key群组的大小,同时也考虑归约Reduce函数的复杂度来在归约Reduce阶段进行负载均衡;
2、提出了另外三种策略,称之为本地感知归约Reducer选择、全映射节点Mapper执行和重排Shuffle感知调控,来更好地利用计算资源以确保基于复杂度键Key分布的性能提升;以及
3、将Skew--集成到了资源管理器Hadoop YARN。
本发明实施例可以适用于通用场景下支持MapReduce计算模型的分布式计算系统,能够大大提高在多任务,大数据背景下MapReduce计算任务的执行效率,显著加快任务的执行速度。
具体而言,在本发明的实施例中,复杂度感知的键Key分布方法,目的是缓和归约Reduce子任务间负载不均衡的问题。该方法的核心是基于采样的归约Reduce执行复杂度探测方法和多个归约Reduce子任务间考虑计算复杂度的键Key均衡分布方法,包括以下步骤:
S1、分配给每一个归约Reduce子任务的数据块partition包含多个分组group,每一个分组group都是由用户提供的归约Reduce函数一次处理。由于每归约Reduce函数由各种各样的应用提供,函数的复杂度也是大不一样。而且,需要特意指出的是,所定义的归约Reduce执行复杂度与通常算法中提到的计算复杂度是有本质区别的,比如某个归约Reduce任务,虽然其计算复杂度是O(n2),但是当该任务的大部分时间花在输入输出IO上,也就是该任务的瓶颈为输入输出IO时,该归约Reduce执行复杂度应该是O(n)而不是O(n2)。对于MapReduce框架来说,用户提供的任务是一个黑盒子,关于黑盒子探测问题目前已经有很多研究工作了,然而,这些探测方法要么耗时比较长要么探测的准确度与应用有关。另一个方法是让用户在向框架提交任务时来指定归约Reduce执行复杂度,然而这样做的话很显然违背了框架透明性的原则,再者,即使是任务提交者也不一定能够很准确的知道归约Reduce执行复杂度(在大多数情况下任务提交者最多知道函数的计算复杂度)。
各种各样的任务执行复杂度大致可以分为四种:常数、logN、多项式和指数。而在根据归约Reduce执行复杂度进行键Key分配时,根据每一个分组group的开销比率进行分配,因此只需要测定执行复杂度的最高指数项即可,而无需测定系数值以及低阶项的指数和系数值。在Skew--中,使用一种基于采样的方法来决定任务的归约Reduce执行复杂度。使用不同的输入数据集大小来运行归约Reduce任务并获取相应的执行时间。使用这个方法也许会耗费一定的时间完成,然而,在MapReduce任务的执行过程一旦有一部分Map子任务完成,就可以取得归约Reduce子任务的输入数据来开始复杂度的测定,也就是说可以把该测定过程与映射Map阶段重叠起来,这样也就对整个任务来说不会有额外的时间开销。
S2、归约Reduce子任务分配Keys的目的是使归约Reduce子任务间的计算量尽可能的均衡,这一类型的最优分配方法可以通过相应的装箱问题(bin packing problem)解决,然而不幸的是,根据计算复杂理论装箱问题是一个NP难问题,因此使用0-1背包问题作为该问题的近似解决方案。将未分配的键Key的计算开销(根据Reduce执行复杂度及该键Key对应的值values的数量得出该键Key的计算开销,比如,当归约Reduce执行复杂度为O(n2),值values数量为100时,该键Key对应的计算开销为1002=10000)作为背包重量,每一个键Key组的开销作为货物价值和重量,在for循环的每一步中调用GetKnapSack函数去得到选择的货物来作为每一个归约Reduce子任务的键Key组。
S3、数据本地化是MapReduce优化时所遵循的重要准则,因此提出了基于本地感知的Reducer选择算法。在Hadoop中,每一个映射Map子任务和映射Reduce子任务都是由单独的计算资源(在Hadoop YARN被称之为容器container,在Hadoop MapReduce v1中称之为槽slot)执行的,然而,输入输出IO资源比如硬盘资源和网络资源是由每一个计算节点上的所有子任务之间共享的。因此,当调度归约Reduce子任务到计算节点上时,不但要考虑数据的分布情况同时也应该考虑每一个节点的输入输出IO负载情况。1)首先按照每一个归约Reduce子任务的输入数据集大小来对这些节点进行逆序排序,然后2)挑选前1/3(选择这一参数是因为在实验中发现该参数是归约IO利用率以及数据传输量间一个很好的均衡点)的节点作为任务调度的候选节点,最后3)选择具有最小下行网络占用百分比和硬盘读取带宽占用百分比的节点作为Reduce子任务的调度节点。
S4、在许多MapReduce框架中,比如Hadoop,当一小部分映射Map子任务完成后,就会提前调度归约Reduce子任务开始数据重排Shuffle—将归约Reduce子任务的数据从映射Map完成的映射Map节点传输到归约Reduce节点。提前重排Shuffle的优点是当网络状况不是很好时,将数据传输和计算重叠起来可以节省大量的数据传输时间。然而,这些优点也会带来开销:映射Map子任务和归约Reduce子任务共享MapReduce集群中的计算资源(比如,CPU资源,内存资源),比如说,在Hadoop中映射Map子任务和归约Reduce子任务都是以容器container的形式分配计算资源。提前调度的归约Reduce子任务不可避免的会占用一些容器containers,从而分配给映射Map子任务的容器containers会减少,因此会降低映射Map子任务的并行度并拖长整个映射Map阶段。随着网络硬件的发展,比如千兆、百G网络以及支持远程直接内存访问(RDMA)技术的无限宽带(RDMA-enabledInfiniBand),网络带宽变得越来越大,使得提前重排Shuffle的优点变得微不足道。
在认识到提前重排Shuffle会拖慢映射Map阶段,禁止了提前重排Shuffle并且把所有的容器containers都分配给映射Map子任务以使其能够全速执行。这种方法同样使得Skew--在获取到全局键Key分布信息后再进行基于复杂度键Key分布和本地感知归约节点Reducer选择,从而做出更加优化的决策。
S5、由于MapReduce广泛应用到各种领域,各种类型的应用都运行在MapReduce上。从重排Shuffle数据量(换句话说,从归约Reduce子任务的输入数据量)的角度来看,MapReduce应用可以大致分为三类:Shuffle-light(轻Shuffle型)、Shuffle-medium(中Shuffle型)和Shuffle-heavy(重Shuffle型)。对于Shuffle-light和Shuffle-medium类型的应用,归约Reduce子任务的输入数据量比较少,归约Reduce阶段的执行时间占整个任务时间的一小部分(在测试用例中归约Reduce阶段的运行时间不到整个任务执行时间的5%),基于复杂度键Key分布组件在这些应用中只有很少的性能改善,有时该改善比基于复杂度键Key分布的额外开销还大,因此针对这两类应用,Skew--只是使用全映射节点Mapper执行组件进行优化,而不进行键Key分配。对于重重排Shuffle-heavy应用,归约Reduce阶段的执行时间一般占整个任务很大的一部分,基于复杂度键Key分布可以带来很大的时间节省,虽然该组件也有一定的额外开销,但是与节省的时间相比该开销就非常小。
下面以一个具体实施例对本发明实施例的优化系统进行详细赘述。
本发明基于MapReduce模型,提出了Skew--,用来改善输入数据倾斜情况下的MapReduce性能。Skew--使用一种称之为复杂度感知的Key分布方法,并且使用三个称之为本地感知归约节点Reducer选择、全映射节点Mapper执行和重排Shuffle感知调控的组件进行智能调度。基于复杂度键Key分布不仅考虑键Key记录的大小也考虑归约Reduce函数的复杂度,以更好地在各个归约Reduce子任务间平衡计算开销。本地感知归约节点Reducer选择、全归约节点Mapper执行和重排Shuffle感知调控分别利用数据本地性来减少数据传输,更加有效利用资源来减少离线键Key分配带来的额外开销。结合使用这四个组件来确保MapReduce应用在倾斜数据上的性能。
为了验证本发明实施例对MapReduce模型的支持效果,设计了具有7个节点的实验环境,分别在传统YARN和基于YARN修改的Skew--下运行13个测试用例。统计各个测试用例的执行时间进行比较。
各任务执行时间如图3所示,图中Hadoop表示传统Hadoop的Yarn,Skew--表示采用本发明提出的MapReduce倾斜消除方法,并且以传统Hadoop中用例的时间为基准进行了归一化,Skew--取得了相对于HadoopYarnx1.98倍的加速比。
图4显示了对归约Reduce执行复杂度测定精确度对MapReduce性能影响也进行了的评测结果。将Skew--与线性复杂度(在进行键Key分配是,把所有任务的归约Reduce执行复杂度均当作线性)、“真实复杂度”(Skew--使用“真实复杂度”进行键Key分配)性能分布进行了对比。结果显示归约Reduce执行复杂度测定法性能趋近于“真实复杂度”法性能。
图5显示了Skew--相对于Hadoop在不同齐夫分布Zipf参数下的加速比情况。由于Skew--对于Shuffle-light和Shuffle-medium任务,只使用全Mapper执行进行优化,因此这两类任务的加速比不受齐夫分布Zipf参数s的影响。而当s越大时,在各个键组key groups之间的倾斜就越大,Skew--在重重排Shuffle-heavy任务上的加速比也就越大。
在标准的Hadoop MapReduce中,重排Shuffle过程在部分(默认5%)Map子任务完成时机已经开始以重叠数据传输和计算来以期减少整个任务的完成时间。然而,这一方法不可避免地拖慢Map阶段。同样也进行了一个实验来对比提前重排Shuffle和只是全映射节点Mapper执行,其结果如图6所示。从图中可以看出,提前重排Shuffle所节省的时间与只是全映射节点Mapper执行节省的时间相比是非常有限的—提前重排Shuffle节省最多时间是在self-join任务中最多节省36s,而在该任务中全映射节点Mapper执行节省了116s。
根据本发明实施例的MapReduce性能优化系统,可以使用一种称之为复杂度感知的键Key分配方法,以及与之对应的局部性感知的归约节点Reducer选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制来保证MapReduce的性能。复杂度感知的键Key分配方法不仅考虑键Key记录的大小,也考虑归约Reduce函数的复杂度,从而能够更好地在各个归约Reduce子任务间平衡计算开销。局部性感知的归约节点Reducer选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制则通过利用数据局部性来减少数据传输和提升资源利用率来减少复杂度感知的键Key分配带来的额外开销,实现优化MapReduce在倾斜数据上的性能的目的,简单易实现。
其次参照附图描述根据本发明实施例提出的MapReduce性能优化。
图7是本发明一个实施例的MapReduce性能优化的流程图。
如图7所示,该MapReduce性能优化包括以下步骤:
步骤S1,Skew--主节点对归约Reduce子任务间的键Key分布进行管理,并且将归约Reduce子任务调度到合适的执行节点上。
步骤S2,键Key分配器根据Reduce任务的复杂度将Keys均匀地分配到每一个归约Reduce子任务上,并且归约节点Reducer选择器根据键Key的位置信息把归约Reduce子任务调度到合适的执行节点上。
步骤S3,键Key监控器与输入输出IO监控器收集键Key相关的信息,并将键Key相关的信息发送至Skew--主节点。
进一步地,在本发明的一个实施例中,分配给归约Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
进一步地,在本发明的一个实施例中,通过相应的装箱问题使归约Reduce子任务间的计算量均衡。
进一步地,在本发明的一个实施例中,通过本地感知的归约节点Reducer选择算法使数据本地化。
进一步地,在本发明的一个实施例中,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将归约Reduce子任务的数据从映射Map完成的Map映射节点传输到归约Reduce节点。
需要说明的是,前述对MapReduce性能系统实施例的解释说明也适用于该实施例的MapReduce性能方法,此处不再赘述。
根据本发明实施例的MapReduce性能优化方法,可以使用一种称之为复杂度感知的键Key分配方法,以及与之对应的局部性感知的归约节点Reducer选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制来保证MapReduce的性能。复杂度感知的键Key分配方法不仅考虑键Key记录的大小,也考虑归约Reduce函数的复杂度,从而能够更好地在各个归约Reduce子任务间平衡计算开销。局部性感知的归约节点Reducer选择、全映射节点Mapper执行和重排Shuffle类型感知的调控等机制则通过利用数据局部性来减少数据传输和提升资源利用率来减少复杂度感知的键Key分配带来的额外开销,实现优化MapReduce在倾斜数据上的性能的目的,简单易实现。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (8)

1.一种MapReduce性能优化系统,其特征在于,包括:
Skew--主节点,用于作为主协调器全局地对归约Reduce子任务间的键Key分布进行管理,并且将所述归约Reduce子任务调度到合适的执行节点上,其中,所述Skew--主节点包括:键Key分配器,用于根据归约Reduce任务的复杂度将Keys均匀地分配到每一个归约Reduce子任务上;归约节点Reducer选择器,用于根据键Key的位置信息把所述归约Reduce子任务调度到所述合适的执行节点上;
多个Skew--从节点,所述多个Skew--从节点位于资源管理器Hadoop YARN的节点管理器上,所述多个Skew--从节点中每个Skew--从节点包括:键Key监控器与输入输出IO监控器,用于收集键Key相关的信息,所述Key相关的信息包括分组group大小、所述键Key的位置信息以及每个节点的输入输出IO占用信息,并将所述键Key相关的信息发送至所述Skew--主节点。
2.根据权利要求1所述的MapReduce性能优化系统,其特征在于,分配给所述归约Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
3.根据权利要求1所述的MapReduce性能优化系统,其特征在于,通过相应的装箱问题使所述归约Reduce子任务间的计算量均衡。
4.根据权利要求1所述的MapReduce性能优化系统,其特征在于,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将所述归约Reduce子任务的数据从映射Map完成的Map映射节点传输到归约Reduce节点。
5.一种MapReduce性能优化方法,其特征在于,包括以下步骤:
S1,Skew--主节点对归约Reduce子任务间的键Key分布进行管理,并且将所述归约Reduce子任务调度到合适的执行节点上;
S2,键Key分配器根据归约Reduce任务的复杂度将所述Keys均匀地分配到所述每一个归约Reduce子任务上,并且归约节点Reducer选择器根据键Key的位置信息把所述归约Reduce子任务调度到所述合适的执行节点上;以及
S3,键Key监控器与输入输出IO监控器收集键Key相关的信息,并将所述键Key相关的信息发送至所述Skew--主节点。
6.根据权利要求5所述的MapReduce性能优化方法,其特征在于,分配给所述归约Reduce子任务的数据块partition包含多个分组group,其中,每个分组group由归约Reduce函数一次处理。
7.根据权利要求5所述的MapReduce性能优化方法,其特征在于,通过相应的装箱问题使所述归约Reduce子任务间的计算量均衡。
8.根据权利要求5所述的MapReduce性能优化方法,其特征在于,通过自动识别重排Shuffle的类型判断是否提前调度归约Reduce子任务开始数据重排Shuffle,以将所述归约Reduce子任务的数据从映射Map完成的Map映射节点传输到归约Reduce节点。
CN201610586980.7A 2016-07-21 2016-07-21 MapReduce性能优化系统及优化方法 Active CN106250233B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610586980.7A CN106250233B (zh) 2016-07-21 2016-07-21 MapReduce性能优化系统及优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610586980.7A CN106250233B (zh) 2016-07-21 2016-07-21 MapReduce性能优化系统及优化方法

Publications (2)

Publication Number Publication Date
CN106250233A CN106250233A (zh) 2016-12-21
CN106250233B true CN106250233B (zh) 2020-03-27

Family

ID=57603708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610586980.7A Active CN106250233B (zh) 2016-07-21 2016-07-21 MapReduce性能优化系统及优化方法

Country Status (1)

Country Link
CN (1) CN106250233B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360065B2 (en) * 2016-09-08 2019-07-23 International Business Machines Corporation Smart reduce task scheduler
CN108241472B (zh) * 2017-12-01 2021-03-12 北京大学 一种支持局部性表达函数的大数据处理方法和系统
CN110609735B (zh) * 2018-06-15 2023-07-18 伊姆西Ip控股有限责任公司 任务管理方法、设备和计算机程序产品
CN109947530B (zh) * 2019-01-25 2021-09-07 西安交通大学 一种针对云平台的多维度虚拟机映射方法
CN110502337B (zh) * 2019-07-12 2023-02-07 上海交通大学 针对Hadoop MapReduce中混洗阶段的优化系统
CN110673794B (zh) * 2019-09-18 2021-12-17 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
CN113688602A (zh) * 2021-10-26 2021-11-23 中电云数智科技有限公司 一种任务处理方法以及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078941A (zh) * 2012-12-31 2013-05-01 中金数据系统有限公司 一种分布式计算系统的任务调度方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078941A (zh) * 2012-12-31 2013-05-01 中金数据系统有限公司 一种分布式计算系统的任务调度方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Improving MapReduce Performance by Balancing Skewed Loads;FAN Yuanquan;《China Communications》;20140831;全文 *
SKewTune:Mitigating Skew in MapReduce Applications;YongChul Kwon;《ACM SIGMOD会议 2012》;20120524;全文 *
SpongeFiles:Mitigating Data Skew in MapReduce Using Distributed Memory;Khaled Elmeleegy;《ACM SIGMOD会议 2014》;20140627;全文 *

Also Published As

Publication number Publication date
CN106250233A (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
CN106250233B (zh) MapReduce性能优化系统及优化方法
CN110168516B (zh) 用于大规模并行处理的动态计算节点分组方法及系统
CN110619595B (zh) 一种基于多fpga加速器互联的图计算优化方法
Li et al. Map-Balance-Reduce: An improved parallel programming model for load balancing of MapReduce
CN108475212B (zh) 使用动态分区处理数据的方法、系统和计算机可读介质
Vats et al. Performance evaluation of K-means clustering on Hadoop infrastructure
CN105900063A (zh) 多处理环境中的调度方法和装置
EP3079060B1 (en) Load balancing for large in-memory databases
Rupprecht et al. SquirrelJoin: Network-aware distributed join processing with lazy partitioning
Senthilkumar et al. A survey on job scheduling in big data
Yang et al. Balancing job performance with system performance via locality-aware scheduling on torus-connected systems
Wang et al. Actcap: Accelerating mapreduce on heterogeneous clusters with capability-aware data placement
Arifuzzaman et al. A fast parallel algorithm for counting triangles in graphs using dynamic load balancing
CN108427602B (zh) 一种分布式计算任务的协同调度方法及装置
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
Shahvarani et al. Distributed stream KNN join
Al-kahtani et al. An efficient distributed algorithm for big data processing
Chen et al. HiClus: Highly scalable density-based clustering with heterogeneous cloud
Li et al. {MilliSort} and {MilliQuery}:{Large-Scale}{Data-Intensive} Computing in Milliseconds
Packiaraj et al. Hypar-fca: a distributed framework based on hybrid partitioning for fca
Wang et al. Improved intermediate data management for mapreduce frameworks
Wang et al. On mapreduce scheduling in hadoop yarn on heterogeneous clusters
CN110175172A (zh) 基于稀疏二分图的极大二分团并行枚举方法
Lee et al. A greedy load balancing algorithm for faas platforms
Mao et al. A fine-grained and dynamic MapReduce task scheduling scheme for the heterogeneous cloud environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20191219

Address after: 314001 9F, No. 705, Asia Pacific Road, Nanhu District, Jiaxing City, Zhejiang Province

Applicant after: Qinghua Changsanjiao Research Inst., Zhejiang

Address before: 315105 Zhejiang city of Ningbo province Yinzhou District Qiming Road No. 818 building 14, No. 108

Applicant before: Innovation center of Yin Zhou Qinghua Changsanjiao Research Inst., Zhejiang

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant