CN108804224A - 一种基于Spark框架的中间数据权重设置方法 - Google Patents

一种基于Spark框架的中间数据权重设置方法 Download PDF

Info

Publication number
CN108804224A
CN108804224A CN201810493605.7A CN201810493605A CN108804224A CN 108804224 A CN108804224 A CN 108804224A CN 201810493605 A CN201810493605 A CN 201810493605A CN 108804224 A CN108804224 A CN 108804224A
Authority
CN
China
Prior art keywords
key
rdd
fragments
sample
occurrences
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.)
Granted
Application number
CN201810493605.7A
Other languages
English (en)
Other versions
CN108804224B (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.)
Hunan University
Original Assignee
Hunan University
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 Hunan University filed Critical Hunan University
Priority to CN201810493605.7A priority Critical patent/CN108804224B/zh
Publication of CN108804224A publication Critical patent/CN108804224A/zh
Application granted granted Critical
Publication of CN108804224B publication Critical patent/CN108804224B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于Spark框架的中间数据权重设置方法,采用对RDD分片中的键值对进行采样,并通过采样数据估算出中间数据的分布情况,并根据该分布情况为中间数据设置权重值,从而使得分片更加均衡,总体执行更加均衡,提高执行效率。

Description

一种基于Spark框架的中间数据权重设置方法
技术领域
本发明涉及大数据处理技术领域,尤其涉及一种基于Spark框架的中间数据权重设置方法。
背景技术
近年来,互联网技术在生活中高度的普及和应用吸引了越来越多的网民用户,大量用户的涌入产生了大量的数据,而这些海量的数据包含了巨大的价值,对分析用户的行为习惯具有重要的作用。为了更好地分析蕴藏在这些数据中的信息,很多企业选择将数据迁移到廉价、容错性强的云环境中进行处理。Google提出的MapReduce编程模型,为处理海量数据提供了很好的数据处理方法。作为一种处理大数据的并行编程模型,MapReduce由于其具有很好的可扩展性、可用性、容错性,成为数据库领域的研究热点。Spark和Hadoop均采用了MapReduce计算框架,Spark基于RDD(Resilient distributed datasets)的内存计算的设计使得其性能更加优秀。但是,一些MapReduce框架及并行计算的固有问题依然会成为任务执行的性能瓶颈。
现有技术提出了一些分片优化技术。这些技术通过使数据(每一组数据均为键值对)分片更加均匀来提高任务执行效率。其中一个关键的步骤就是对中间数据的keycluster(键簇)分布进行估计并设定权重。受限于Hadoop框架的思路限制,这些技术直接对中间数据采样并以键值对数量划分。Spark按stage执行作业的方式导致这些基于传统MapReduce框架方法并不完全适用于Spark框架。为了优化这些技术的性能,需要充分结合Spark的特点,设计出最适合Spark自身的中间数据估计方法和key cluster权重定义方式。
虽然直接对中间数据采样会带来巨大的时延和开销,但可以对执行shuffle操作的RDD分片进行采样,然后间接分析出中间数据的key分布。虽然因为map端聚合的存在,两者分布不能完全等同,但是可以根据map端聚合方式,来估计变换后的键值对数量,以此拟合中间数据的key分布。
在得到key分布之后,需要设定key的权重和划分标准。一个Spark的reduce任务可以分为两个部分:shuffle-op(会导致shuffle操作的算子)和normal-op(其他普通算子)。受限于以往Hadoop的MapReduce框架的思考限制,现存的方法都只考虑了shuffle-op的执行。然而在Spark***中,每个reduce任务获取中间数据的输入后开始执行,在执行完shuffle-op后,分片的键值对数量可能已经发生巨大的变化。这意味着,即使中间数据分片均匀,也无法保证normal-op执行时分片依然均匀。因此,设定权重应该权衡shuffle-op与normal-op的均衡,使得整个执行更加均衡。
发明内容
为了解决现有技术中存在的问题,本发明提供了一种基于Spark框架的中间数据权重设置方法,采用对RDD分片中的键值对进行采样,并通过采样数据估算出中间数据的分布情况,并根据该分布情况为中间数据设置权重值,从而使得分片更加均衡,总体执行更加均衡,提高执行效率。
本发明提供了一种基于Spark框架的中间数据权重设置方法,包括:
步骤S1:按照预设抽样比例从原始RDD分片中选取目标RDD分片;
步骤S2:对所述目标RDD分片进行并行采样获得样本键值对,并根据所述样本键值对获取所述目标RDD分片的键出现频率列表和目标RDD分片实际采样率;
步骤S3:根据所述目标RDD分片的键出现频率列表和目标RDD分片采样率,获取所述原始RDD分片的键出现频率列表;
步骤S4:根据所述原始RDD分片的键出现频率列表,设置中间数据的权重;
所述权重为所述原始RDD分片的键出现频率与执行shuffle算子后的键出现频率之和;
其中,所述执行shuffle算子后的键出现频率根据所述原始RDD分片的键出现频率通过预设公式获得。
在Spark框架中,每个shuffle算子会将一个Spark应用切割成两个阶段,map阶段和reduce阶段。如果一个原始RDD分片数量为m,则在map阶段的map任务数量也为m个。经过shuffle操作后,进入reduce阶段,RDD分片数目改变。这个分片数目是由Spark用户自己设定的,或者由Spark***默认设定的。例如,若reduce阶段RDD分片数量设定为r,则ruduce任务数量也为r。而每个map任务处理每一个对应的RDD分片,其处理结果即为中间数据。Shuffle阶段会将这些中间数据分割到不同的新的分片中。产生的每个新的分片,由每一个相应的reduce任务进行处理。
在RDD分片中保存的数据为一组一组的键值对<key,value>,本发明方案从原始RDD分片中抽样取出目标RDD分片,对目标RDD分片中的键值对进行采样,并统计采样键值对中键出现频率(即key的出现频率),然后估算出采样键值对所在的RDD分片中的键出现频率,并估算所有RDD分片中的键出现频率,最后根据所有RDD分片中的键出现频率和经过shuffle算子处理后的键出现频率来设置中间数据的权重值。
根据具体不同的RDD算子,预设公式不同。不同的算子涉及到的RDD数量有所不同。
对于涉及到单个RDD的算子,执行shuffle算子后的键出现频率计算方式见下表。
对于涉及到两个RDD的算子,执行shuffle算子后的键出现频率计算方式见下表。
进一步的,步骤S1中的所述预设抽样比例为ratio,其中,R为抽样比例系数,R为整数,S为执行任务的节点数量,m为原始RDD分片数量。
从原始RDD分片中抽取目标RDD分片的抽样比例ratio设置为执行任务节点数量与原始RDD分片数量的比值的倍数,即其中,R用于调节抽样分片的比例。若Spark应用的输入数据的key均匀分布,并且只包含一个shuffle过程,可以将ratio设置为较小的值,即只对一小部分分片采样。对于其他的应用,须设定较大的ratio。在具体抽样时,首先使用mapPartitionsWithIndex将每个原始RDD分片映射成一个迭代器。然后用filter算子筛选出索引号小于ratio*m的分片作为目标RDD分片。
进一步的,步骤S2中获取目标RDD分片实际采样率的具体步骤为:
步骤S21:随机生成采样步长;
步骤S22:判断所述采样步长是否满足接受条件:当所述采样步长不满足接受条件时,返回步骤S21,当所述采样步长满足接受条件时,以所述采样步长对目标RDD分片进行一次无放回采样,获取一个样本键值对,并将所述样本键值对放入样本集中;
步骤S23:将所述样本键值对的键出现频率增加1,并判断样本集中的样本键值对个数是否达到采样数量:当样本集中的样本键值对个数达到采样数量时,停止采样,获得所述样本集的键出现频率列表,并计算所述目标RDD分片实际采样率,当样本集中的样本键值对个数未达到采样数量时,返回步骤S21;
其中,采样数量为numim为原始RDD分片数量,r为Spark框架中的reduce任务数量,leni为目标RDD分片包含的键值对数量,rate为初始预设采样率,φ为预设最低采样个数,i为分片序号,i∈(0,m-1);
采样步长为sini表示还需采样的数量,Ni表示目标RDD分片中未处理的键值对数量,u为0到1之间的随机数;
时,所述接受条件为:
时,所述接受条件为:
α为预设阈值,v为0到1之间的随机数,j为连乘符号中的变量,j∈(0,si);
实际采样率为ratei
本发明方案采用基于步长的接受/拒绝采样算法对目标RDD分片的键值对进行抽样。为了避免内存溢出和提高采样数,在对每个分片采样时,选择边采样边统计的方式。其中,最低采样数是为了防止小分片中的键值对数据被忽略,故默认设置为100。具体采样时,随机生成步长,当步长满足接受条件时,按步长进行采样,当一个键值对被选中时,将采样记录中该键值对的key的出现频率加一。直到完成numi个键值对的采样,采样过程结束。然后计算实际采样率其中,预设阈值α的值默认为0.05。
进一步的,步骤S3获取所述原始RDD分片的键出现频率列表的具体步骤为:
步骤S31:每一个目标RDD分片i的键k的出现频率为trans(i,k);
步骤S32:根据每一个目标RDD分片的键出现频率获得原始RDD分片的键出现频率ck
其中,freqi,k为每一个样本键值对中键k的出现频率,MSC=0表示mapSideCombine为false,MSC=1表示mapSideCombine为true;
m为原始RDD分片的数量,ratio为预设抽样比例。
因为当应用map执行时,可能会进行map端的聚合,即根据键将键值对进行聚合。而是否进行map端聚合则由mapSideCombine的值决定。若mapSideCombine=true则会执行map端的聚合,即key相同的键值对会聚合在一起。mapSideCombine对中间数据的分布会产生很大影响,因此分两种情况来进行计算。因为原始RDD分片的数量与map任务数量相等,故此处m实际上为map任务数量。
进一步的,步骤S4中所述权重为wk,wk=cks(ck);
其中,λ为map任务与reduce任务工作量的比率,s(ck)为执行shuffle算子后的键出现频率。
s(ck)是将ck代入与算子对应的公式计算得出,得到的是执行shuffle算子后的键出现频率。
有益效果
本发明提供了一种基于Spark框架的中间数据权重设置方法。首先采用基于步长的接收/拒绝采样算法对RDD分片中的键值对进行采样。然后,根据是否进行map端键值对聚合,基于采样数据估算出中间数据的分布情况,最后根据该分布情况为中间数据设置权重值。
本发明根据原始RDD分片数据的采样来估计中间数据分布,而无需等待任务执行完成后再对中间数据进行采样。若直接对中间数据采样,计算完分片权重后,还需重新分片。因此,通过采样估计中间数据分布可以大大节省时间上的开销。
本发明在估计中间数据分布的过程中,考虑了Map端键值对聚合的影响,可以获得更加精确的估计数据。若不考虑Map端聚合,在进行计算时,会得到虚假的信息,从而使得分片分割不均,降低任务执行效率。
本发明在设定键权重时,不仅考虑了原始RDD中键的频率,还考虑了shuffle算子执行后键的频率。这为分片提供了更加合理的划分依据,提高了分片均匀程度,并且提高后续Reduce任务的执行效率。
附图说明
图1是本发明提供的一种基于Spark框架的中间数据权重设置方法的步骤图;
图2是本发明提供的方法的整体流程图;
图3是本发明提供的方法中步骤S2的采样流程图。
具体实施方式
为了方便理解本发明方案的内容,下面结合具体实施例进行进一步阐述。
具体而言,假设原始RDD分片一共有10个分片,分片的预设抽样比例ratio为0.2,则我们只选择两个分片(即ratio*m=0.2×10=2)作为目标RDD分片。假设对分片0和分片1进行采样,两个分片的初始预设采样率rate分别为0.2和0.25,采样得到key频率分别为[(A,3),(B,4),(C,6)]和[(A,2),(B,5),(C,1)]。然后,计算各个分片的key频率经过trans(i,k)函数转换的结果。假设在此例中,mapSideCombine为true,那么可知所有key的频率都置为1,比如trans(0,A)=(A,1),则两个分片的key频率变成了[(A,1),(B,1),(C,1)]和[(A,1),(B,1),(C,1)];假设此例中mapSideCombine为false,那么每个key的trans(i,k)函数为比如分片0中key A的则两个分片的频率变成了[(A,15),(B,20),(C,30)]和[(A,8),(B,20),(C,4)]。然后,需要计算所有分片汇集的结果,即估计中间数据中每个key k的频率ck,在此以mapSideCombine为false的结果进行说明。汇集后得到的整体key频率为[(A,115),(B,200),(C,170)]。其中,因为A在两个分片中频率freqi,k分别为15和8,预设抽样比例ratio为0.2,所以A的频率计算过程为B和C计算同理。
之后,计算每个key cluster的权重。根据不用的Spark算子,具有不同的计算方法。假设此时运行的是groupBy算子,即将相同的key的键值对聚合成一个键值对。那么在经历groupby的shuffle之后,key频率变为[(A,1),(B,1),(C,1)]。那么key权重为[(A,115+1λ),(B,200+1λ),(C,170+1λ)],λ设为1,则最终权重分布为[(A,116),(B,201),(C,171)]
综上所述,本发明提供了一种基于Spark框架的中间数据权重设置方法,首先采用基于步长的接收/拒绝采样算法对RDD分片中的键值对进行采样。然后,根据是否进行map端键值对聚合,基于采样数据估算出中间数据的分布情况,最后根据该分布情况为中间数据设置权重值。
本发明根据原始RDD分片数据的采样来估计中间数据分布,而无需等待任务执行完成后再对中间数据进行采样。若直接对中间数据采样,计算完分片权重后,还需重新分片。因此,通过采样估计中间数据分布可以大大节省时间上的开销。
本发明在估计中间数据分布的过程中,考虑了Map端键值对聚合的影响,可以获得更加精确的估计数据。若不考虑Map端聚合,在进行计算时,会得到虚假的信息,从而使得分片分割不均,降低任务执行效率。
本发明在设定键权重时,不仅考虑了原始RDD中键的频率,还考虑了shuffle算子执行后键的频率。这为分片提供了更加合理的划分依据,提高了分片均匀程度,并且提高后续Reduce任务的执行效率。
以上所述仅为本发明的实施例而已,并不用以限制本发明,凡在本发明精神和原则之内,所作任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于Spark框架的中间数据权重设置方法,其特征在于,包括:
步骤S1:按照预设抽样比例从原始RDD分片中选取目标RDD分片;
步骤S2:对所述目标RDD分片进行并行采样获得样本键值对,并根据所述样本键值对获取所述目标RDD分片的键出现频率列表和目标RDD分片实际采样率;
步骤S3:根据所述目标RDD分片的键出现频率列表和目标RDD分片采样率,获取所述原始RDD分片的键出现频率列表;
步骤S4:根据所述原始RDD分片的键出现频率列表,设置中间数据的权重;
所述权重为所述原始RDD分片的键出现频率与执行shuffle算子后的键出现频率之和;
其中,所述执行shuffle算子后的键出现频率根据所述原始RDD分片的键出现频率通过预设公式获得。
2.根据权利要求1所述的方法,其特征在于,步骤S1中的所述预设抽样比例为ratio,其中,R为抽样比例系数,R为整数,S为执行任务的节点数量,m为原始RDD分片数量。
3.根据权利要求1所述的方法,其特征在于,步骤S2中获取目标RDD分片实际采样率的具体步骤为:
步骤S21:随机生成采样步长;
步骤S22:判断所述采样步长是否满足接受条件:当所述采样步长不满足接受条件时,返回步骤S21,当所述采样步长满足接受条件时,以所述采样步长对目标RDD分片进行一次无放回采样,获取一个样本键值对,并将所述样本键值对放入样本集中;
步骤S23:将所述样本键值对的键出现频率增加1,并判断样本集中的样本键值对个数是否达到采样数量:当样本集中的样本键值对个数达到采样数量时,停止采样,获得所述样本集的键出现频率列表,并计算所述目标RDD分片实际采样率,当样本集中的样本键值对个数未达到采样数量时,返回步骤S21;
其中,采样数量为numim为原始RDD分片数量,r为Spark框架中的reduce任务数量,leni为目标RDD分片包含的键值对数量,rate为初始预设采样率,φ为预设最低采样个数,i为分片序号,i∈(0,m-1);
采样步长为sini表示还需采样的数量,Ni表示目标RDD分片中未处理的键值对数量,u为0到1之间的随机数;
时,所述接受条件为:
时,所述接受条件为:
α为预设阈值,v为0到1之间的随机数,j为连乘符号中的变量,j∈(0,si);
实际采样率为ratei
4.根据权利要求1所述的方法,其特征在于,步骤S3获取所述原始RDD分片的键出现频率列表的具体步骤为:
步骤S31:每一个目标RDD分片i的键k的出现频率为trans(i,k);
步骤S32:根据每一个目标RDD分片的键出现频率获得原始RDD分片的键出现频率ck
其中,freqi,k为每一个样本键值对中键k的出现频率,MSC=0表示mapSideCombine为false,MSC=1表示mapSideCombine为true;
m为原始RDD分片的数量,ratio为预设抽样比例。
5.根据权利要求4所述的方法,其特征在于,步骤S4中所述权重为wk,wk=ck+λs(ck);
其中,λ为map任务与reduce任务工作量的比率,s(ck)为执行shuffle算子后的键出现频率。
CN201810493605.7A 2018-05-22 2018-05-22 一种基于Spark框架的中间数据权重设置方法 Active CN108804224B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810493605.7A CN108804224B (zh) 2018-05-22 2018-05-22 一种基于Spark框架的中间数据权重设置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810493605.7A CN108804224B (zh) 2018-05-22 2018-05-22 一种基于Spark框架的中间数据权重设置方法

Publications (2)

Publication Number Publication Date
CN108804224A true CN108804224A (zh) 2018-11-13
CN108804224B CN108804224B (zh) 2021-06-11

Family

ID=64092738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810493605.7A Active CN108804224B (zh) 2018-05-22 2018-05-22 一种基于Spark框架的中间数据权重设置方法

Country Status (1)

Country Link
CN (1) CN108804224B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110033096A (zh) * 2019-03-07 2019-07-19 北京大学 一种用于强化学习的状态数据生成方法和***
CN112000467A (zh) * 2020-07-24 2020-11-27 广东技术师范大学 一种数据倾斜处理方法、装置、终端设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170235809A1 (en) * 2016-02-17 2017-08-17 Talentica Software (India) Private Limited System and method of using replication for additional semantically defined partitioning
CN107066612A (zh) * 2017-05-05 2017-08-18 郑州云海信息技术有限公司 一种基于SparkJoin操作的自适应数据倾斜调整方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170235809A1 (en) * 2016-02-17 2017-08-17 Talentica Software (India) Private Limited System and method of using replication for additional semantically defined partitioning
CN107066612A (zh) * 2017-05-05 2017-08-18 郑州云海信息技术有限公司 一种基于SparkJoin操作的自适应数据倾斜调整方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TANG Z ET AL.: "An intermediate data placement algorithm for load balancing in Spark computing environment", 《FUTURE GENERATION COMPUTER SYSTEMS-THE INTERNATIONAL JOURNAL OF ESCIENCE》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110033096A (zh) * 2019-03-07 2019-07-19 北京大学 一种用于强化学习的状态数据生成方法和***
CN110033096B (zh) * 2019-03-07 2021-04-02 北京大学 一种用于强化学习的状态数据生成方法和***
CN112000467A (zh) * 2020-07-24 2020-11-27 广东技术师范大学 一种数据倾斜处理方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN108804224B (zh) 2021-06-11

Similar Documents

Publication Publication Date Title
CN109885397B (zh) 一种边缘计算环境中时延优化的负载任务迁移算法
CN105446979B (zh) 数据挖掘方法和节点
CN109740755B (zh) 一种基于梯度下降法的数据处理方法及相关装置
WO2016101628A1 (zh) 一种数据建模中的数据处理方法及装置
CN110069502A (zh) 基于Spark架构的数据均衡分区方法及计算机存储介质
CN106250457B (zh) 大数据平台物化视图的查询处理方法及***
CN113515351A (zh) 一种基于能耗与QoS协同优化的资源调度实现方法
CN103559205A (zh) 基于MapReduce的并行特征选择方法
CN109634744A (zh) 一种基于云平台资源分配的精确匹配方法,设备及存储介质
CN104765765B (zh) 一种基于时间窗口可移动的动态数据快速处理方法
Chen et al. Trace-based analysis and prediction of cloud computing user behavior using the fractal modeling technique
CN108804224A (zh) 一种基于Spark框架的中间数据权重设置方法
Wang et al. Dynamic and decentralized global analytics via machine learning
CN106874332B (zh) 数据库访问方法和装置
CN108628889B (zh) 基于时间片的数据抽样方法、***和装置
CN109977977A (zh) 一种识别***的方法及对应装置
CN109995834A (zh) 大流量数据处理方法、装置、计算设备及存储介质
CN110191005B (zh) 一种告警日志处理方法及***
CN105468726B (zh) 基于本地计算和分布式计算的数据计算方法及***
WO2018098670A1 (zh) 一种进行数据处理的方法和装置
JP5388134B2 (ja) 計算機システム、及び、移動データ決定方法
CN116166443A (zh) 一种游戏任务***的负载优化方法及***
CN106874215B (zh) 一种基于Spark算子的序列化存储优化方法
WO2023005264A1 (zh) 一种数据处理方法和装置
CN115314400A (zh) 网络***异常检测方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant