CN104679590B - 分布式计算***中的Map优化方法及装置 - Google Patents

分布式计算***中的Map优化方法及装置 Download PDF

Info

Publication number
CN104679590B
CN104679590B CN201310617998.5A CN201310617998A CN104679590B CN 104679590 B CN104679590 B CN 104679590B CN 201310617998 A CN201310617998 A CN 201310617998A CN 104679590 B CN104679590 B CN 104679590B
Authority
CN
China
Prior art keywords
map
mapreduce operation
value
mean value
optimization
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
CN201310617998.5A
Other languages
English (en)
Other versions
CN104679590A (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.)
Alibaba Chengdu Software and Technology Co Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310617998.5A priority Critical patent/CN104679590B/zh
Publication of CN104679590A publication Critical patent/CN104679590A/zh
Application granted granted Critical
Publication of CN104679590B publication Critical patent/CN104679590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请实施例公开了分布式计算***中的Map优化方法及装置,其中,所述方法包括:获取MapReduce作业在预置时间段内的历史执行日志;根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;根据所述目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;如果是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。通过本申请,能够降低Map端数据倾斜的发生概率,提高MapReduce作业执行效率。

Description

分布式计算***中的Map优化方法及装置
技术领域
本申请涉及分布式计算技术领域,特别是涉及分布式计算***中的Map优化方法及装置。
背景技术
分布式计算是近年提出的一种计算方式,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。目前业界通用的分布式计算框架是MapReduce框架。使用该框架最著名的分布式计算产品是Hadoop。
一个Hadoop作业在执行时,会根据输入的文件大小、文件个数及其他一些参数,通过Hadoop设计的规则分配Map计算资源。例如,现有的Hadoop基于规则的Map计算资源的具体分配方式为:在计算一个作业需要的Map计算资源数(下文简称Map数)之前首先要计算分片的大小。计算分片大小的公式是:
分片大小=min(dfs.block.size,totalSize/Mapred.Map.tasks) (1)
totalSize是一个作业总的输入大小,参数Mapred.Map.tasks是一个Hadoop开放给用户供用户手动调整的参数,默认值是2。dfs.block.size是分布式文件***的数据块的大小,默认为64MB。
计算好了分片大小之后接下来计算Map数。Map数的计算是以文件为单位的,针对每一个输入到作业的文件做一个循环判断:
如果文件大小/分片大小>1.1,则分配一个Map资源,这个Map资源处理的数据大小=分片大小,文件剩余大小=文件大小-分片大小;
如果文件剩余大小/分片大小<1.1,将剩余的部分分配给一个Map资源。
举几个例子(以dfs.block.size=64MB,Mapred.Map.tasks=2为例):
例一:输入只有一个文件,大小为100M,分片大小=dfs.block.size,则Map数为2,第一个Map处理的数据大小为64M,第二个Map处理的数据大小为36M。
例二:输入只有一个文件,大小为65M,分片大小=dfs.block.size,则Map数为1,处理的分片大小为65M(因为65/64<1.1)。
例三:输入有两个文件,大小为100M和20M,分片大小=dfs.block.size,则Map数为3,第一个文件分为两个Map,第一个Map处理的数据大小为64M,第二个为36M,第二个文件分为一个Map,处理的数据大小为20M。
Hadoop通过这种方式分配Map计算资源最显著的缺陷是当受到小文件干扰时非常容易产生Map端数据倾斜。所谓Map端数据倾斜是指Hadoop为一个MapReduce作业分配N个Map计算资源进行分布式计算时,其中有1个Map计算资源的执行时间大幅超过其他N-1个Map计算资源的执行时间。产生Map端数据倾斜的根本原因是数据在Map计算资源之间的分配不均匀。
例如,某一个MapReduce作业输入有100个文件,其中99个文件的大小为1MB,另外一个文件的大小为61MB。这时计算出的分片大小=64MB。那么Hadoop要为这个作业要分配100个Map计算资源,其中99个Map计算资源分别只需处理1MB的数据(对应99个1MB的文件),而唯独有一个要处理61MB的数据(对应61MB的文件),这就产生了Map端数据倾斜。
Map端数据倾斜是影响MapReduce作业执行效率的一个主要原因。因此,如何降低Map端数据倾斜的发生概率,以提高MapReduce作业执行效率,成为迫切需要本领域技术人员解决的技术问题。
发明内容
本申请实施例提供了Map优化方法及装置,能够降低Map端数据倾斜的发生概率,提高MapReduce作业执行效率。
本申请提供了如下方案:
一种分布式计算***中的Map优化方法,包括:
获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
如果是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
一种分布式计算***中的Map优化装置,包括:
历史执行日志获取单元,用于获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
均值计算单元,用于根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
第一判断单元,用于根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
取值调节单元,用于如果所述第一判断单元的判断结果为是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
Map分配单元,用于利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
通过本申请实施例,可以根据MapReduce作业在预置时间段内的执行时间长度均值,预测可能会产生Map端数据倾斜问题的MapReduce作业,进而根据执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,并利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为目标MapReduce作业分配Map数。因此,本申请实施例提供了一种可行的Map优化实现方式,从而解决MapReduce作业的Map端数据倾斜问题。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的方法的流程图;
图2是本申请实施例提供的装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
首先需要说明的是,本申请发明人在实现本申请的过程中发现,针对数据倾斜的问题,如果能够调整一下Mapred.Map.tasks的数值,将比较大的文件(例如,背景技术部分的例子中所描述的61M的文件)分配给更多的Map计算资源去处理,就可以解决Map端数据倾斜的问题。例如,将Mapred.Map.tasks设置为16,则根据公式(1)计算出的分片大小=10MB。那么Hadoop要为这个MapReduce作业分配105个Map计算资源,其中99个Map计算资源分别只处理1MB的数据。61MB的那个文件被分配给6个Map计算资源去处理,其中5个分别处理10MB的数据,另外一个处理11MB的数据。这样,通过调整Mapred.Map.tasks参数,少量增加Map计算资源,Map端的数据倾斜就得到了极大的缓解,从而起到了对作业优化的效果。
但是,在这个解决Map端数据倾斜的实现方式中,有两个关键问题需要解决:
第一:并不是每个MapReduce作业都会产生Map端数据倾斜的问题,如果不会产生Map端数据倾斜,就没有必要进行优化。因此,如何在MapReduce作业执行前准确预测一个MapReduce作业是否为可能会产生Map端数据倾斜的作业,进而对其进行优化,是需要解决的问题;
第二:在优化的过程中,如何对Mapred.Map.tasks进行设置以达到最好的优化效果。
本申请实施例就是基于上述考虑,提供了对MapReduce作业使用的Map数进行优化的实现方式,该实现方式通过分析经过采样的MapReduce作业的历史执行日志来自动预测可能会产生Map端数据倾斜的MapReduce作业,同时通过采样数据自反馈的调节Mapred.Map.tasks参数,从而解决了上述两个关键点,进而很好的解决了MapReduce作业的Map端数据倾斜问题。下面进行详细地介绍。
参见图1,本申请实施例首先提供了一种分布式计算***中的Map优化方法,该方法可以包括以下步骤:
S101:获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
本申请发明人通过对一万多个MapReduce作业的历史执行日志进行分析,发现在分布式计算集群计算资源充足的情况下,Map阶段执行时间超过某时间长度阈值(为便于与后续的其他时间阈值区分,这里称为第一时间长度阈值,例如,一般为T分钟)的MapReduce作业基本上是存在Map端数据倾斜问题的。其中,T的值根据集群大小、运行作业数、作业复杂程度的不同而不同,通常在3到10分钟之间。
因此,在具体实现时,本申请实施例首先需要获取MapReduce作业在预置时间段内(例如,最近三天、五天等)的历史执行日志,从中获取MapReduce作业在每次执行时,在Map阶段的执行时间长度以及使用的Map数。需要说明的是,每个MapReduce作业会有各自的历史执行日志,因此,可以分别获取各个MapReduce作业各自对应的历史执行日志。当然,同一MapReduce作业在三天内(当然还可能是更长的时间)的执行次数可能有多次,为了降低后续步骤中的计算量,可以对历史执行日志进行采样。例如,某MapReduce作业在三天内共被执行了1000次,可以通过随机等采样方式采集到该MapReduce作业在其中100次执行过程中,分别在Map阶段的执行时间长度以及使用的Map数。
S102:根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
在获取到MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数之后,可以计算出MapReduce作业在采样时间段内(例如,前述例子中的三天)的执行时间长度均值,以及使用的Map数均值。
S103:根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
在本申请实施例中,可在需要执行某目标MapReduce作业时,利用从该目标MapReduce作业的历史执行日志中采集并计算得到的数据,对当前执行过程中需使用的Map数进行优化。如前文所述,由于经分析可知,执行时间长度均值超过第一时间长度阈值的MapReduce作业一般是可能会产生Map端数据倾斜的作业,因此,首先就可以根据目标MapReduce作业的执行时间长度均值判断目标MapReduce作业是否需要进行Map优化。例如,直接判断目标MapReduce作业的执行时间长度均值是否大于第一时间长度阈值,如果是,则可以直接判定其需要进行Map优化。
需要说明的是,如果该目标MapReduce作业的采样数据中只有一条或者少数几条执行日志,则采样数据过少,无法进行有效的预测,因此,可以不进行优化。当然,如果该目标MapReduce作业没有采样数据,也就是说,可能是一个首次执行的作业,同样无法进行预测,因此也不进行优化。
S104:如果是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
在确定了当前需要执行的目标MapReduce作业需要进行Map优化后,可以根据该目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对公式(1)中的参数Mapred.Map.tasks的取值进行调节。也就是说,具体在对Mapred.Map.tasks的取值进行调节时,需要考虑目标MapReduce作业的执行时间长度均值以及使用的Map数均值这两个方面的因素。更具体的调节方式在后文中会有详细地介绍。
S105:利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
在调节了Mapred.Map.tasks的取值之后,就可以重新利用公式(1)计算分片大小,这样就可以利用计算得到的分片大小为目标MapReduce作业分配Map数,从而达到Map优化的目的。
总之,在本申请实施例中,可以根据MapReduce作业在预置时间段内的执行时间长度均值,预测可能会产生Map端数据倾斜问题的MapReduce作业,进而根据执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,并利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为目标MapReduce作业分配Map数。因此,本申请实施例提供了一种可行的Map优化实现方式,从而解决MapReduce作业的Map端数据倾斜问题。
在具体实现时,在每次对一个MapReduce作业进行Map优化后,都可以在历史优化记录中对优化的时间以及优化后的Mapred.Map.tasks的取值进行保存。这样,可以首先判断是否存在当前目标MapReduce作业的历史优化记录,也即判断过去是否曾对该目标MapReduce作业进行过优化。如果不存在当前目标MapReduce作业的历史优化记录,则可以直接判断目标MapReduce作业的执行时间长度均值是否大于预置的第一时间长度阈值,如果是,则判定该目标MapReduce作业需要进行Map优化。如果存在当前目标MapReduce作业的历史优化记录,则除了判断目标MapReduce作业的执行时间长度均值是否大于预置的第一时间长度阈值之外,还可以判断以下三个条件是否均满足:一、历史优化记录中记录的上次优化的时间到当前时间的时间间隔大于第三时间长度阈值(例如两天);第二、优化次数不超过预置的次数阈值(例如10次);第三、上次优化后的Map数小于Map数阈值(例如200)。如果目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,并且以上三个条件均满足,则可以判定目标MapReduce作业需要进行Map优化。也就是说,如果距离上次优化的时间还比较短,例如还不到两天,则可以不必重新优化;或者如果对于同一MapReduce作业的优化次数已经很多次,例如超过了10次,则可以不必再对该MapReduce作业进行优化;再或者,如果上次优化后的Map数大于Map数阈值,也可以不必再对该MapReduce作业进行优化。对于存在历史优化记录以及不存在历史优化记录的情况,具体的优化方式会略有不同,下面分别进行介绍。
首先,对于不存在历史优化记录的情况,根据目标MapReduce作业的执行时间长度均值可以对应不同的优化策略,其中,具体的时间区间以及对应的优化策略可以是预先制定好的。因此,可以根据目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略,然后在目标优化策略中,就可以根据目标MapReduce作业使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节。
其中,如果所述目标MapReduce作业的执行时间长度均值大于第二时间长度阈值(例如,30分钟),则选择第一优化策略,如果目标MapReduce作业的执行时间长度均值大于第一时间长度阈值(也即前文所述的T,如5分钟等),且小于第二时间长度阈值(如30分钟),则选择第二优化策略。
在第一优化策略中,可以首先判断目标MapReduce作业使用的Map数均值大于某Map数阈值(例如200),如果是,则可以直接将Mapred.Map.tasks的取值确定为该Map数阈值。如果小于该Map数阈值,则可以利用以下公式确定Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a1),b1),c1),Map数阈值)
其中,ceil(Map数均值)表示对Map数均值进行向上取整;0<a1<1,b1、c1为正整数,并且b1<c1<Map数阈值。
公式中各个参数的取值根据集群大小、运行作业数、作业复杂程度等的不同而不同,具体的取值可以根据经验等进行确定。例如,在一种实现方式下,假设a1=0.2,b1=10,c1=50,Map数阈值=200。则上述公式为:
min(ceil(Map数均值)+min(max(ceil(Map数均值*0.2),10),50),200)
这样,假设之前统计出的当前目标MapReduce作业使用的Map数均值为150.5,则以上公式可以分解为:
ceil(150.5)=151;
Map数均值*0.2=150.5*0.2=30.1;
ceil(Map数均值*0.2)=ceil(30.1)=31;
max(ceil(Map数均值*0.2),10)=max(31,10)=31;
min(max(ceil(Map数均值*0.2),10),50)=min(31,50)=31;
ceil(Map数均值)+min(max(ceil(Map数均值*0.2),10),50)=151+31=182;
min(ceil(Map数均值)+min(max(ceil(Map数均值*0.2),10),50),200)=min(182,200)=182。
也就是说,之前目标MapReduce作业使用的Map数均值为150.5,调节后的Mapred.Map.tasks的取值为182。
完成此次优化之后,则可以在历史优化记录中记录下此次优化的时间以及优化后的Mapred.Map.tasks的取值,供后续的优化程序参考。
而在第二优化策略中,也就是对应平均执行时间在T到30分钟之间的目标MapReduce作业,同样可以首先判断目标MapReduce作业使用的Map数均值大于某Map数阈值(例如200),如果是,则可以直接将Mapred.Map.tasks的取值确定为该Map数阈值。如果小于该Map数阈值,则可以利用以下公式确定Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a2),b2),c2),Map数阈值)
其中,ceil(Map数均值)表示对Map数均值进行向上取整;0<a2<1,b2、c2为正整数,并且b2<c2<Map数阈值。另外,与第一优化策略中的a1、b1、c1相比还具有以下特点:a1>a2、b1>b2,c1>c2。
例如,在一种实现方式下,假设a2=0.1,b1=5,c1=20,Map数阈值=200。则上述公式为:
min(ceil(Map数均值)+min(max(ceil(Map数均值*0.1),5),20),200)
这样,仍然假设之前统计出的当前目标MapReduce作业使用的Map数均值为150.5,则以上公式可以分解为:
ceil(150.5)=151;
Map数均值*0.1=150.5*0.1=15.05;
ceil(Map数均值*0.1)=ceil(15.05)=16;
max(ceil(Map数均值*0.1),5)=max(16,5)=16;
min(max(ceil(Map数均值*0.1),5),20)=min(16,20)=16;
ceil(Map数均值)+min(max(ceil(Map数均值*0.1),5),20)=151+16=167;
min(ceil(Map数均值)+min(max(ceil(Map数均值*0.1),5),20),200)=min(167,200)=167。
也就是说,之前目标MapReduce作业使用的Map数均值为150.5,调节后的Mapred.Map.tasks的取值为167。
通过与第一优化策略相比可以看出,在目标MapReduce作业使用的Map数均值相同的情况下,第二优化策略中调整后的Mapred.Map.tasks的取值相对较小,相应的,计算出的分片大小会相对较大,最终分配的Map数会比较少。也就是说,在目标MapReduce作业的执行时间均值比较短的情况下,证明Map端数据倾斜的问题并不是很严重,因此,可以不必过多的增加Map数,以避免造成Map资源的浪费。
以上对首次执行Map优化的具体实现方式进行了介绍。如果某目标MapReduce作业之前已经进行过Map优化,则具体的优化方式可以不同,下面进行介绍。
在存在历史优化记录的情况下,同样可以根据目标MapReduce作业的执行时间长度均值对应不同的优化策略,其中,具体的时间区间以及对应的优化策略同样可以是预先制定好的。因此,可以根据目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略。但是在目标优化策略中,不再根据目标MapReduce作业使用的Map数均值,对Mapred.Map.tasks的取值进行调节,而是根据上次优化后的Mapred.Map.tasks的取值,对Mapred.Map.tasks的取值进行调节。
其中,如果目标MapReduce作业的执行时间长度均值大于第二时间长度阈值(例如30分钟),则选择第三优化策略,如果目标MapReduce作业的执行时间长度均值大于第一时间长度阈值(也即前文所述的T,如5分钟等),且小于第二时间长度阈值(如30分钟),则选择第四优化策略。
在第三优化策略中,可以利用以下公式确定Mapred.Map.tasks的取值:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*a3),b3),c3),Map数阈值)
其中,0<a3<1,b3、c3为正整数,并且b3<c3<Map数阈值。
例如,在一种实现方式下,a3、b3、c3的取值可以与第一优化策略中的取值相同。也就是说,假设a3=0.2,b3=10,c3=50,Map数阈值=200。则上述公式为:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*0.2),10),50),200)
这样,假设上次优化后的Mapred.Map.tasks的取值为前述例子中的167,则以上公式可以分解为:
ceil(167)=167;
上次优化后的Mapred.Map.tasks的取值*0.2=167*0.2=33.4;
ceil(上次优化后的Mapred.Map.tasks的取值*0.2)=ceil(33.4)=34;
max(ceil(上次优化后的Mapred.Map.tasks的取值*0.2),10)=max(34,10)=34;
min(max(ceil(上次优化后的Mapred.Map.tasks的取值*0.2),10),50)=min(34,50)=34;
ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*0.2),10),50)=167+34=201;
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*0.2),10),50),200)=min(201,200)=200。
也就是说,目标MapReduce作业上次优化后的Mapred.Map.tasks的取值为167,则调节后的Mapred.Map.tasks的取值为200,也即在上次调节的基础上,Mapred.Map.tasks的取值继续增大,进而分片大小继续减少,分配给目标MapReduce作业的Map数进一步增多。
同样,完成此次优化之后,则可以在历史优化记录中记录下此次优化的时间以及优化后的Mapred.Map.tasks的取值,供后续的优化程序参考。
而在第四优化策略中,也就是对应平均执行时间在T到30分钟之间的目标MapReduce作业,可以利用以下公式确定Mapred.Map.tasks的取值:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*a4),b4),c4),Map数阈值)
其中,0<a4<1,b4、c4为正整数,并且b4<c4<Map数阈值。另外,与第三优化策略中的a3、b3、c3相比还具有以下特点:a3>a4、b3>b4,c3>c4。
例如,在一种实现方式下,a4、b4、c4的取值可以与第二优化策略中相同。如,a4=0.1,b4=5,c4=20,Map数阈值=200。则上述公式为:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*0.1),5),20),200)
这样,仍然假设目标MapReduce作业上次优化后的Mapred.Map.tasks的取值为167,则以上公式可以分解为:
ceil(167)=167;
上次优化后的Mapred.Map.tasks的取值*0.1=167*0.1=16.7;
ceil(Map数均值*0.1)=ceil(16.7)=17;
max(ceil(Map数均值*0.1),5)=max(17,5)=17;
min(max(ceil(Map数均值*0.1),5),20)=min(17,20)=17;
ceil(Map数均值)+min(max(ceil(Map数均值*0.1),5),20)=167+17=184;
min(ceil(Map数均值)+min(max(ceil(Map数均值*0.1),5),20),200)=min(184,200)=184。
也就是说,目标MapReduce作业上次优化后的Mapred.Map.tasks的取值为167,此次进一步优化后的Mapred.Map.tasks的取值为184,相对于上一次优化,Mapred.Map.tasks的取值继续增加,分配给目标MapReduce作业的Map数也就进一步增加。
类似的,通过与第三优化策略相比可以看出,在目标MapReduce作业使用的Map数均值相同的情况下,第四优化策略中调整后的Mapred.Map.tasks的取值相对较小,相应的,计算出的分片大小会相对较大,最终分配的Map数会比较少。相当于在解决Map端数据倾斜问题的同时,还考虑了资源成本的问题,最终使得效率与成本得到兼顾。
实验证明,本申请实施例所设计的基于成本优化的Map优化方法可以解决Hadoop的MapReduce作业中95%的Map端数据倾斜问题,可以将Map端数据倾斜的MapReduce作业的Map阶段执行时间平均缩短一半以上。当然,具体优化效果还与Hadoop集群的大小、MapReduce作业的多少、MapReduce作业的复杂程度等诸多因素有关。
与本申请实施例提供的分布式计算***中的Map优化方法相对应,本申请实施例还提供了一种分布式计算***中的Map优化装置,参见图2,该装置可以包括:
历史执行日志获取单元201,用于获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
均值计算单元202,用于根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
第一判断单元203,用于根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
取值调节单元204,用于如果所述第一判断单元的判断结果为是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
Map分配单元205,用于利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
具体实现时,每次对一个MapReduce作业进行Map优化后,在历史优化记录中对优化的时间以及优化后的Mapred.Map.tasks的取值进行保存;所述装置还可以包括:
历史优化记录判断单元,用于判断是否存在所述目标MapReduce作业的历史优化记录;
如果不存在,所述第一判断单元203具体用于:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,则判定所述目标MapReduce作业需要进行Map优化。
取值调节单元204包括:
策略选择子单元,用于根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略;
调节子单元,用于在所述目标优化策略中,根据所述目标MapReduce作业使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节。
其中,策略选择子单元具体用于如果所述目标MapReduce作业的执行时间长度均值大于第二时间长度阈值,则选择第一优化策略,如果所述目标MapReduce作业的执行时间长度均值大于第一时间长度阈值小于第二时间长度阈值,则选择第二优化策略;
所述在所述目标优化策略中,如果所述目标MapReduce作业使用的Map数均值大于Map数阈值,则在所述第一优化策略以及所述第二优化策略中,将所述Mapred.Map.tasks的取值确定为所述Map数阈值;如果所述目标MapReduce作业使用的Map数均值小于Map数阈值,则在所述第一优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a1),b1),c1),Map数阈值);
在所述第二优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a2),b2),c2),Map数阈值);
其中,0<a1<1,0<a2<1,且a1>a2;
b1、c1、b2、c2均为正整数,且b1<c1<Map数阈值,b2<c2<Map数阈值,b1>b2,c1>c2。
如果存在所述目标MapReduce作业的历史优化记录,所述装置还包括:
第二判断单元,用于判断所述历史优化记录是否同时满足以下条件:所述历史优化记录中记录的上次优化的时间到当前时间的时间间隔大于第三时间长度阈值,优化次数不超过预置的次数阈值,以及上次优化后的Map数小于Map数阈值;
所述第一判断单元具体用于:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,且所述第二判断单元的判断结果均为是,则判定所述目标MapReduce作业需要进行Map优化。
此时,该装置还可以包括:
策略选择单元,用于根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略;
调节单元,用于在所述目标优化策略中,根据所述目标MapReduce作业上次优化后的Mapred.Map.tasks的取值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节。
其中,如果所述目标MapReduce作业的执行时间长度均值大于第二时间长度阈值,则选择第三优化策略,如果所述目标MapReduce作业的执行时间长度均值大于第一时间长度阈值小于第二时间长度阈值,则选择第四优化策略。
在所述第三优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*a3),b3),c3),Map数阈值)
在所述第四优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(上次优化的Mapred.Map.tasks值)+min(max(ceil(上次优化的Mapred.Map.tasks值*a4),b4),c4),Map数阈值);
其中,0<a3<1,0<a4<1,且a3>a4;
b3、c3、b4、c4均为正整数,且b3<c3<Map数阈值,b4<c4<Map数阈值,b3>b4,c3>c4。
总之,在本申请实施例提供的上述装置中,可以根据MapReduce作业在预置时间段内的执行时间长度均值,预测可能会产生Map端数据倾斜问题的MapReduce作业,进而根据执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,并利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为目标MapReduce作业分配Map数。因此,本申请实施例提供了一种可行的Map优化实现方式,从而解决MapReduce作业的Map端数据倾斜问题。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的Map优化方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种分布式计算***中的Map优化方法,其特征在于,包括:
获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
如果是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
2.根据权利要求1所述的方法,其特征在于,每次对一个MapReduce作业进行Map优化后,在历史优化记录中对优化的时间以及优化后的Mapred.Map.tasks的取值进行保存;所述方法还包括:
判断是否存在所述目标MapReduce作业的历史优化记录;
如果不存在,所述根据所述目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化,包括:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,则判定所述目标MapReduce作业需要进行Map优化。
3.根据权利要求2所述的方法,其特征在于,所述根据目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,包括:
根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略;
在所述目标优化策略中,根据所述目标MapReduce作业使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略,包括:
如果所述目标MapReduce作业的执行时间长度均值大于第二时间长度阈值,则选择第一优化策略,如果所述目标MapReduce作业的执行时间长度均值大于第一时间长度阈值小于第二时间长度阈值,则选择第二优化策略;
所述在所述目标优化策略中,根据所述目标MapReduce作业使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,包括:
如果所述目标MapReduce作业使用的Map数均值大于Map数阈值,则在所述第一优化策略以及所述第二优化策略中,将所述Mapred.Map.tasks的取值确定为所述Map数阈值;
如果所述目标MapReduce作业使用的Map数均值小于Map数阈值,则:
在所述第一优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a1),b1),c1),Map数阈值);
在所述第二优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(Map数均值)+min(max(ceil(Map数均值*a2),b2),c2),Map数阈值);
其中,0<a1<1,0<a2<1,且a1>a2;
b1、c1、b2、c2均为正整数,且b1<c1<Map数阈值,b2<c2<Map数阈值,b1>b2,c1>c2。
5.根据权利要求2所述的方法,其特征在于,如果存在所述目标MapReduce作业的历史优化记录,所述方法还包括:
判断所述历史优化记录是否同时满足以下条件:所述历史优化记录中记录的上次优化的时间到当前时间的时间间隔大于第三时间长度阈值,优化次数不超过预置的次数阈值,以及上次优化后的Map数小于Map数阈值;
所述根据所述目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化,包括:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,且所述历史优化记录满足各个条件,则判定所述目标MapReduce作业需要进行Map优化。
6.根据权利要求5所述的方法,其特征在于,还包括:
根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略;
在所述目标优化策略中,根据所述目标MapReduce作业上次优化后的Mapred.Map.tasks的取值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标MapReduce作业的执行时间长度均值所属的区间,选择对应的目标优化策略,包括:
如果所述目标MapReduce作业的执行时间长度均值大于第二时间长度阈值,则选择第三优化策略;
如果所述目标MapReduce作业的执行时间长度均值大于第一时间长度阈值小于第二时间长度阈值,则选择第四优化策略;
所述在所述目标优化策略中,根据所述目标MapReduce作业上次优化后的Mapred.Map.tasks的取值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节,包括:
在所述第三优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(上次优化后的Mapred.Map.tasks的取值)+min(max(ceil(上次优化后的Mapred.Map.tasks的取值*a3),b3),c3),Map数阈值)
在所述第四优化策略中,通过以下公式确定所述Mapred.Map.tasks的取值:
min(ceil(上次优化的Mapred.Map.tasks值)+min(max(ceil(上次优化的Mapred.Map.tasks值*a4),b4),c4),Map数阈值);
其中,0<a3<1,0<a4<1,且a3>a4;
b3、c3、b4、c4均为正整数,且b3<c3<Map数阈值,b4<c4<Map数阈值,b3>b4,c3>c4。
8.一种分布式计算***中的Map优化装置,其特征在于,包括:
历史执行日志获取单元,用于获取MapReduce作业在预置时间段内的历史执行日志;所述历史执行日志中包括MapReduce作业每次执行时,在Map阶段的执行时间长度以及使用的Map数;
均值计算单元,用于根据所述历史执行日志计算MapReduce作业的执行时间长度均值,以及使用的Map数均值;
第一判断单元,用于根据目标MapReduce作业的执行时间长度均值判断所述目标MapReduce作业是否需要进行Map优化;
取值调节单元,用于如果所述第一判断单元的判断结果为是,则根据所述目标MapReduce作业的执行时间长度均值以及使用的Map数均值,对分片大小计算公式中的参数Mapred.Map.tasks的取值进行调节;
Map分配单元,用于利用调节后的参数Mapred.Map.tasks的取值计算分片大小,并利用计算得到的分片大小为所述目标MapReduce作业分配Map数,以便基于分配的Map数执行所述目标MapReduce作业。
9.根据权利要求8所述的装置,其特征在于,每次对一个MapReduce作业进行Map优化后,在历史优化记录中对优化的时间以及优化后的Mapred.Map.tasks的取值进行保存;所述装置还包括:
历史优化记录判断单元,用于判断是否存在所述目标MapReduce作业的历史优化记录;
如果不存在,所述第一判断单元具体用于:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,则判定所述目标MapReduce作业需要进行Map优化。
10.根据权利要求9所述的装置,其特征在于,如果存在所述目标MapReduce作业的历史优化记录,所述装置还包括:
第二判断单元,用于判断所述历史优化记录是否同时满足以下条件:所述历史优化记录中记录的上次优化的时间到当前时间的时间间隔大于第三时间长度阈值,优化次数不超过预置的次数阈值,以及上次优化后的Map数小于Map数阈值;
所述第一判断单元具体用于:
如果所述目标MapReduce作业的执行时间长度均值大于预置的第一时间长度阈值,且所述第二判断单元的判断结果均为是,则判定所述目标MapReduce作业需要进行Map优化。
CN201310617998.5A 2013-11-27 2013-11-27 分布式计算***中的Map优化方法及装置 Active CN104679590B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310617998.5A CN104679590B (zh) 2013-11-27 2013-11-27 分布式计算***中的Map优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310617998.5A CN104679590B (zh) 2013-11-27 2013-11-27 分布式计算***中的Map优化方法及装置

Publications (2)

Publication Number Publication Date
CN104679590A CN104679590A (zh) 2015-06-03
CN104679590B true CN104679590B (zh) 2018-12-07

Family

ID=53314682

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310617998.5A Active CN104679590B (zh) 2013-11-27 2013-11-27 分布式计算***中的Map优化方法及装置

Country Status (1)

Country Link
CN (1) CN104679590B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095413B (zh) * 2015-07-09 2018-11-23 北京京东尚科信息技术有限公司 一种解决数据倾斜的方法及装置
CN105975463A (zh) * 2015-09-25 2016-09-28 武汉安天信息技术有限责任公司 一种基于MapReduce识别优化数据倾斜的方法及***
CN106708606B (zh) * 2015-11-17 2020-07-07 阿里巴巴集团控股有限公司 基于MapReduce的数据处理方法及装置
CN107038072B (zh) * 2016-02-03 2019-10-25 博雅网络游戏开发(深圳)有限公司 基于Hadoop***的任务调度方法和装置
CN107291767B (zh) * 2016-04-11 2020-07-17 西门子工厂自动化工程有限公司 任务执行时间的优化处理方法和装置
CN106021495B (zh) * 2016-05-20 2017-10-31 清华大学 一种分布式迭代计算***的任务参数优化方法
CN107577531B (zh) * 2016-07-05 2020-12-04 阿里巴巴集团控股有限公司 负载均衡方法及装置
CN110704515B (zh) * 2019-12-11 2020-06-02 四川新网银行股份有限公司 基于MapReduce模型的两阶段在线化采样方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102725753A (zh) * 2011-11-28 2012-10-10 华为技术有限公司 优化数据访问的方法及装置、优化数据存储的方法及装置
CN103064664A (zh) * 2012-11-28 2013-04-24 华中科技大学 一种基于性能预估的Hadoop参数自动优化方法和***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060200552A1 (en) * 2005-03-07 2006-09-07 Beigi Mandis S Method and apparatus for domain-independent system parameter configuration
US8799916B2 (en) * 2011-02-02 2014-08-05 Hewlett-Packard Development Company, L. P. Determining an allocation of resources for a job
US9367601B2 (en) * 2012-03-26 2016-06-14 Duke University Cost-based optimization of configuration parameters and cluster sizing for hadoop

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102725753A (zh) * 2011-11-28 2012-10-10 华为技术有限公司 优化数据访问的方法及装置、优化数据存储的方法及装置
CN103064664A (zh) * 2012-11-28 2013-04-24 华中科技大学 一种基于性能预估的Hadoop参数自动优化方法和***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
[Hive]从一个经典案例看优化mapred.map.tasks的重要性;小狼_百度;《http://blog.csdn.net/xiaolang85/article/details/9065031》;20130609;第1页 *

Also Published As

Publication number Publication date
CN104679590A (zh) 2015-06-03

Similar Documents

Publication Publication Date Title
CN104679590B (zh) 分布式计算***中的Map优化方法及装置
US11153370B2 (en) Resource scheduling method and system
CN105812177B (zh) 一种网络故障处理方法和处理设备
US20180198855A1 (en) Method and apparatus for scheduling calculation tasks among clusters
EP3550768B1 (en) Network quality detection method and system
CN103778148B (zh) Hadoop分布式文件***数据文件的生命周期管理方法和设备
CN103336792B (zh) 数据分区方法和装置
US20130326028A1 (en) Server migration
CN104217004B (zh) 一种交易***的数据库热点的监控方法及装置
CN107483292B (zh) 用于云平台的动态监控方法
CN109271257A (zh) 一种虚拟机迁移部署的方法及设备
CN106790482A (zh) 资源调度方法及资源调度***
CN107577724A (zh) 一种大数据处理方法
CN103442087B (zh) 一种基于响应时间趋势分析的Web服务***访问量控制装置和方法
CN111985851B (zh) 银行网点资源调度方法及装置
CN103366022A (zh) 信息处理***及其处理方法
CN112598443A (zh) 一种基于深度学习的线上渠道业务数据处理方法及***
CN106095843B (zh) 社交账号挖掘方法及装置
US9591067B2 (en) Methods and apparatus for allocating cloud-based media resources
US9319291B2 (en) Server system, management device, server management method, and program
CN104111875A (zh) 云数据中心新增任务数动态控制装置、***及方法
CN110365799A (zh) 一种集群多节点调度方法、装置和计算机可读存储介质
KhudaBukhsh et al. Generalized cost-based job scheduling in very large heterogeneous cluster systems
WO2020082518A1 (zh) 一种识别带宽需求突发的方法和装置
CN105897841A (zh) 用于网络资源处理的调度方法、设备、***及子调度器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211109

Address after: Room 201, floor 2, building 15, No. 1999, Yizhou Avenue, Chengdu hi tech Zone, Chengdu, Sichuan

Patentee after: Alibaba (Chengdu) Software Technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: ALIBABA GROUP HOLDING Ltd.