CN107391250B - 一种提高Mapreduce任务Shuffle性能的控制器调度方法 - Google Patents

一种提高Mapreduce任务Shuffle性能的控制器调度方法 Download PDF

Info

Publication number
CN107391250B
CN107391250B CN201710684587.6A CN201710684587A CN107391250B CN 107391250 B CN107391250 B CN 107391250B CN 201710684587 A CN201710684587 A CN 201710684587A CN 107391250 B CN107391250 B CN 107391250B
Authority
CN
China
Prior art keywords
task
mapper
temporary
nodes
controller
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
CN201710684587.6A
Other languages
English (en)
Other versions
CN107391250A (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.)
Chengdu Youe Data Co ltd
Original Assignee
Chengdu Youe Data Co 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 Chengdu Youe Data Co ltd filed Critical Chengdu Youe Data Co ltd
Priority to CN201710684587.6A priority Critical patent/CN107391250B/zh
Publication of CN107391250A publication Critical patent/CN107391250A/zh
Application granted granted Critical
Publication of CN107391250B publication Critical patent/CN107391250B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了涉及分布式系统领域,特别涉及一种提高Mapreduce任务Shuffle性能的控制器调度方法。用户提供必备参数;生成控制器,再根据必备参数对控制器进行定义;加载步骤1中的进行定义后的控制器,生成临时Mapper任务,采集临时Mapper任务结果数据,分析临时Mapper任务中产生的Key,控制器根据Mapper任务的分区方式确定Reducer任务的启动节点;启动Mapreduce任务,在进行Reducer任务前调度步骤2的控制器,确定Reducer任务的启动节点,启动Reducer任务,最后输出Mapreduce任务的最终结果。本发明提供一种可以优化shuffle流程的控制器,降低了Mapper任务完成后节点间数据传输的距离;降低了在网络中传输的数据量;屏蔽了不同数据、业务逻辑的差异性,使得shuffle的优化更通用。

Description

一种提高Mapreduce任务Shuffle性能的控制器调度方法
技术领域
本发明涉及分布式系统领域,特别涉及一种提高Mapreduce任务Shuffle性能的控制器调度方法。
背景技术
在一个Mapreduce任务中,Shuffle阶段严重影响任务的执行效率,因为Shuffle阶段会引起大量数据网络传输,而在数据的传输过程中引起的丢包、时延、网络堵塞的几率会成倍提升。一个正常的Mapreduce任务可能变得缓慢甚至不会运行成功。对开发人员来说,上述场景的发生都会浪费大量的时间去调优、分析错误日志。所以优化Shuffle阶段的运行流程对于提高任务的执行速度有重要意义。
发明内容
本发明的目的在于克服现有技术中Mapreduce任务网络堵塞几率高、需浪费大量时间去调优以及分析错误日志的问题,提供一种提高Mapreduce任务Shuffle性能的控制器调度方法,降低了Mapper任务完成后节点间数据传输的距离,降低了在网络中传输的数据量,同时屏蔽了不同数据、业务逻辑的差异性,使得Shuffle的优化更通用。
为了实现上述发明目的,本发明提供了以下技术方案:
一种提高Mapreduce任务Shuffle性能的控制器调度方法,包括以下几个步骤:
步骤1:用户提供必备参数;生成控制器,再根据必备参数对控制器进行定义;
步骤2:加载步骤1中的进行定义后的控制器,生成临时Mapper任务,采集临时Mapper任务结果数据,分析临时Mapper任务中产生的Key,控制器根据临时Mapper任务的分区方式确定Reducer任务的启动节点;
步骤3:启动Mapreduce任务,在进行Reducer任务前调度步骤2的控制器,确定Reducer任务的启动节点,启动Reducer任务,最后输出Mapreduce任务的最终结果。
所述步骤1中所述必备参数包括包括输入路径、自定义分区器、Mapper任务输出的KV类型。
具体地,步骤2包括以下几个步骤:
步骤2.1:根据定义的必备参数,生成一个只有Mapper阶段的任务,同时不输出KV,分析必备参数,得到临时Mapper任务的启动位置及启动个数;
步骤2.2:启动步骤2.1的任务,同时在每个临时Mapper任务中嵌入统计Key的计数器,该计数器对分区、Key、临时Mapper任务的节点位置和Key的数量进行动态统计,在每个临时Mapper任务结束时将对应的统计结果更新到数据库;
步骤2.3:设运行临时Mapper任务的节点即数据块的节点有n个,在临时Mapper任务的n个节点中选择任意m个节点作为Reducer任务的运行节点,一共有
Figure GDA0002660132310000021
选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi
设最佳vi为vmin,vmin满足以下公式:
Figure GDA0002660132310000022
步骤2.5:用按照公式和限制条件得出的vmin确定m个节点,并按照得出的节点进行分区编号得到一组节点,该组节点为Shuffle进程中传输数据量最小、传输距离最短的节点;
步骤2.6:将步骤2.5得到的一组节点设置为Reducer任务的执行节点。
具体地,步骤3包括以下几个步骤:
步骤3.1:所述Mapreduce任务的Shuffle进程分为Map端和Reduce端;输入分片到Map端,每个输入分片由对应的每个Mapper任务进行处理,然后将Mapper任务处理结果放在一个环形内存缓冲区,若环形内存缓冲区溢出,则在本地文件系统中创建一个溢出文件,将环形内存缓冲区的数据写入这个溢出文件;
步骤3.2:根据Reducer任务的数目将数据划分为相同数目的分区,同时启动步骤2的控制器;
步骤3.3:输入分片经过Mapper任务处理完成后,将Mapper任务处理过程中产生的溢出文件进行合并,再将合并文件输出到Reduce端;
步骤3.4:Reduce端接收Map端输出的合并文件,再进行合并处理,再由步骤2的控制器确定Reducer任务的执行节点,然后开始Reducer任务;
步骤3.5:经过Reducer任务处理后,输出处理后的结果。
与现有技术相比,本发明的有益效果:
1.本发明能大大降低整个数据的传输量、磁盘的IO,不用为了某一特定任务做数据采样,具有很强的通用性;
2.本发明能屏蔽不同数据或业务逻辑的差异性,使得Shuffle进程的优化更通用;
3.本发明相对一般的Mapreduce任务,由于整个Mapper任务只有及少量的输出,且都是在本地运算,因此时间消耗极小,可以极大地提升任务的执行效率。
附图说明:
图1为本发明的使用流程图。
具体实施方式
下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
一种提高Mapreduce任务Shuffle性能的控制器调度方法,包括以下几个步骤:
步骤1:用户提供必备参数;生成控制器,再根据必备参数对控制器进行定义;
所述步骤1中所述必备参数包括包括输入路径、自定义分区器、Mapper任务输出的KV类型。
步骤2:加载步骤1中的进行定义后的控制器,生成临时Mapper任务,采集临时Mapper任务结果数据,分析临时Mapper任务中产生的Key,控制器根据临时Mapper任务的分区方式确定Reducer任务的启动节点;
具体地,如图1所示,步骤2包括以下几个步骤:
步骤2.1:根据定义的必备参数,生成一个只有Mapper阶段的任务,同时不输出KV,分析必备参数,得到临时Mapper任务的启动位置及启动个数;
步骤2.2:启动步骤2.1的任务,同时在每个临时Mapper任务中嵌入统计Key的计数器,该计数器对分区、Key、临时Mapper任务的节点位置和Key的数量进行动态统计,在每个临时Mapper任务结束时将对应的统计结果更新到数据库;
步骤2.3:设运行临时Mapper任务的节点即数据块的节点有n个,在临时Mapper任务的n个节点中选择任意m个节点作为Reducer任务的运行节点,一共有
Figure GDA0002660132310000041
选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi
设最佳vi为vmin,vmin满足以下公式:
Figure GDA0002660132310000042
步骤2.5:用按照公式和限制条件得出的vmin确定m个节点,并按照得出的节点进行分区编号得到一组节点,该组节点为Shuffle进程中传输数据量最小、传输距离最短的节点;
步骤2.6:将步骤2.5得到的一组节点设置为Reducer任务的执行节点。
步骤3:启动Mapreduce任务,在进行Reducer任务前调度步骤2的控制器,确定Reducer任务的启动节点,启动Reducer任务,最后输出Mapreduce任务的最终结果。
具体地,步骤3包括以下几个步骤:
步骤3.1:所述Mapreduce任务的Shuffle进程分为Map端和Reduce端;输入分片到Map端,每个输入分片由对应的每个Mapper任务进行处理,然后将Mapper任务处理结果放在一个环形内存缓冲区,若环形内存缓冲区溢出,则在本地文件系统中创建一个溢出文件,将环形内存缓冲区的数据写入这个溢出文件;
步骤3.2:根据Reducer任务的数目将数据划分为相同数目的分区,同时启动步骤2的控制器;
步骤3.3:输入分片经过Mapper任务处理完成后,将Mapper任务处理过程中产生的溢出文件进行合并,再将合并文件输出到Reduce端;
步骤3.4:Reduce端接收Map端输出的合并文件,再进行合并处理,再由步骤2的控制器确定Reducer任务的执行节点,然后开始Reducer任务;
步骤3.5:经过Reducer任务处理后,输出处理后的结果。
实施例1:
步骤2.4中,设有4个Mapper任务节点,分别为1节点、2节点、3节点和4节点,则需要分区数为2,那么Reducer任务也有2个,在1-4Mapper任务节点中任意选2个节点启动Reducer任务,一共有Ck中取法,比如选择1节点和2节点为Reducer节点的启动节点,这种取法为j,那么编号方式有m!种,即2种:
1节点:分区号0,2节点:分区号1;
1节点:分区号1,2节点:分区号2。
分区确定后,计算数据量vi,公式为:
vi=(从2、3、4节点传输到1节点的数据量)+(从1、3、4节点传输到2节点的数据量)
按照上述方式计算,找到最佳vi即vmin,确定传输量最小的启动节点,当启动Mapreduce任务后,根据该控制器确定的启动节点启动Reducer任务,减少数据传输量。

Claims (3)

1.一种提高Mapreduce任务Shuffle性能的控制器调度方法,其特征在于,包括以下几个步骤:
步骤1:用户提供必备参数;生成控制器,再根据必备参数对控制器进行定义;
步骤2:加载步骤1中的进行定义后的控制器,生成临时Mapper任务,采集临时Mapper任务结果数据,分析临时Mapper任务中产生的Key,控制器根据临时Mapper任务的分区方式确定Reducer任务的启动节点;
步骤3:启动Mapreduce任务,在进行Reducer任务前调度步骤2的控制器,确定Reducer任务的启动节点,启动Reducer任务,最后输出Mapreduce任务的最终结果;
所述步骤2包括以下几个步骤:
步骤2.1:根据定义的必备参数,生成一个临时Mapper任务,同时不输出KV,分析必备参数,得到临时Mapper任务的启动位置及启动个数;
步骤2.2:启动步骤2.1的任务,同时在每个临时Mapper任务中嵌入统计Key的计数器,该计数器对分区、Key、临时Mapper任务的节点位置和Key的数量进行动态统计,在每个临时Mapper任务结束时将对应的统计结果更新到数据库;
步骤2.3:设运行临时Mapper任务的节点有n个,在临时Mapper任务的n个节点中选择任意m个节点作为Reducer任务的运行节点,一共有
Figure FDA0002660132300000011
选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi
设最佳vi为vmin,vmin满足以下公式:
Figure FDA0002660132300000021
步骤2.5:用按照公式和限制条件得出的vmin确定m个节点,并按照得出的节点进行分区编号得到一组节点,该组节点为Shuffle进程中传输数据量最小、传输距离最短的节点;
步骤2.6:将步骤2.5得到的一组节点设置为Reducer任务的执行节点。
2.根据权利要求1所述的一种提高Mapreduce任务Shuffle性能的控制器调度方法,其特征在于,所述步骤3包括以下几个步骤:
步骤3.1:所述Mapreduce任务的Shuffle进程分为Map端和Reduce端;输入分片到Map端,每个输入分片由对应的每个Mapper任务进行处理,然后将Mapper任务处理结果放在一个环形内存缓冲区,若环形内存缓冲区溢出,则在本地文件系统中创建一个溢出文件,将环形内存缓冲区的数据写入这个溢出文件;
步骤3.2:根据Reducer任务的数目将数据划分为相同数目的分区,同时启动步骤2的控制器;
步骤3.3:输入分片经过Mapper任务处理完成后,将Mapper任务处理过程中产生的溢出文件进行合并,再将合并文件输出到Reduce端;
步骤3.4:Reduce端接收Map端输出的合并文件,再进行合并处理,再由步骤2的控制器确定Reducer任务的执行节点,然后开始Reducer任务;
步骤3.5:经过Reducer任务处理后,输出处理后的结果。
3.根据权利要求1所述的一种提高Mapreduce任务Shuffle性能的控制器调度方法,其特征在于,所述步骤1中所述必备参数包括输入路径、自定义分区器、Mapper任务输出的KV类型。
CN201710684587.6A 2017-08-11 2017-08-11 一种提高Mapreduce任务Shuffle性能的控制器调度方法 Active CN107391250B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710684587.6A CN107391250B (zh) 2017-08-11 2017-08-11 一种提高Mapreduce任务Shuffle性能的控制器调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710684587.6A CN107391250B (zh) 2017-08-11 2017-08-11 一种提高Mapreduce任务Shuffle性能的控制器调度方法

Publications (2)

Publication Number Publication Date
CN107391250A CN107391250A (zh) 2017-11-24
CN107391250B true CN107391250B (zh) 2021-02-05

Family

ID=60354286

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710684587.6A Active CN107391250B (zh) 2017-08-11 2017-08-11 一种提高Mapreduce任务Shuffle性能的控制器调度方法

Country Status (1)

Country Link
CN (1) CN107391250B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111090501B (zh) * 2018-10-23 2024-05-28 深信服科技股份有限公司 任务调度方法、装置、设备及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662639A (zh) * 2012-04-10 2012-09-12 南京航空航天大学 一种基于Mapreduce的多GPU协同计算方法
CN103617087B (zh) * 2013-11-25 2017-04-26 华中科技大学 一种适合迭代计算的MapReduce优化方法
CN105808334B (zh) * 2016-03-04 2016-12-28 山东大学 一种基于资源重用的MapReduce短作业优化系统及方法
CN105808354B (zh) * 2016-03-10 2019-02-15 西北大学 利用WLAN网络组建临时Hadoop环境的方法
CN106055311B (zh) * 2016-05-26 2018-06-26 浙江工业大学 基于流水线多线程的MapReduce任务并行化方法

Also Published As

Publication number Publication date
CN107391250A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
US8572575B2 (en) Debugging a map reduce application on a cluster
EP2932377B1 (en) Reachability-based coordination for cyclic dataflow
US8661023B1 (en) Optimizing search query logic to speed retrieval
Khomenko Model checking based on prefixes of Petri net unfoldings
WO2016107488A1 (zh) 一种流图优化方法及其装置
JP6205066B2 (ja) ストリームデータ処理方法、ストリームデータ処理装置及び記憶媒体
US20090063527A1 (en) Processing of database statements with join predicates on range-partitioned tables
CN108694221B (zh) 数据实时分析方法、模块、设备和装置
JP2020095701A (ja) ストレージでの最適な動的シャードを生成する装置及びシステム
CN109408046B (zh) 一种基于图的最短路Web服务组合方法
US11250059B2 (en) Optimizing graph queries by performing early pruning
EP2840498B1 (en) Program, information processing device and event processing method
Cederman et al. Concurrent data structures for efficient streaming aggregation
CN107391250B (zh) 一种提高Mapreduce任务Shuffle性能的控制器调度方法
CN108073641B (zh) 查询数据表的方法和装置
US8667008B2 (en) Search request control apparatus and search request control method
Sax et al. Performance optimization for distributed intra-node-parallel streaming systems
CN114238516A (zh) 数据同步方法、系统及计算机可读介质
Nykiel et al. Sharing across multiple MapReduce jobs
WO2015165297A1 (zh) 一种不确定图查询方法及装置
CN107133281B (zh) 一种基于分组的全局多查询优化方法
US8341577B1 (en) Parallel circuit simulation with partitions
CN114138330A (zh) 基于知识图谱的代码克隆检测优化方法、装置和电子设备
EP3113038B1 (en) A data handling method
CN113342550A (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