CN107391250B - 一种提高Mapreduce任务Shuffle性能的控制器调度方法 - Google Patents
一种提高Mapreduce任务Shuffle性能的控制器调度方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task 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阶段严重影响任务的执行效率,因为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任务的运行节点,一共有选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi;
设最佳vi为vmin,vmin满足以下公式:
步骤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任务的运行节点,一共有选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi;
设最佳vi为vmin,vmin满足以下公式:
步骤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任务的运行节点,一共有选择方式,设其中任一一种选择方式为一个分区,对分区进行编号,有m!种编号方式;
步骤2.4:设每个j对应一种分区,每种分区编号下Shuffle进程数据传输量为vi,i∈(0,m!-1),对Key进行采样,统计每个Mapper节点对应分区的数据量,并把这个结果写入到HDFS临时文件,由HDFS临时文件统计每个map节点输出的数据在某个分区中的数据量,得到vi;
设最佳vi为vmin,vmin满足以下公式:
步骤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类型。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090501B (zh) * | 2018-10-23 | 2024-05-28 | 深信服科技股份有限公司 | 任务调度方法、装置、设备及计算机可读存储介质 |
Family Cites Families (5)
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任务并行化方法 |
-
2017
- 2017-08-11 CN CN201710684587.6A patent/CN107391250B/zh active Active
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 |