CN106844054A - 一种Hadoop MapReduce的优化方法 - Google Patents
一种Hadoop MapReduce的优化方法 Download PDFInfo
- Publication number
- CN106844054A CN106844054A CN201710052152.XA CN201710052152A CN106844054A CN 106844054 A CN106844054 A CN 106844054A CN 201710052152 A CN201710052152 A CN 201710052152A CN 106844054 A CN106844054 A CN 106844054A
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- mapreduce
- job
- setup
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000005457 optimization Methods 0.000 title claims abstract description 12
- 238000004140 cleaning Methods 0.000 abstract description 3
- 238000004883 computer application Methods 0.000 abstract description 2
- 238000002360 preparation method Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating 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)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种Hadoop MapReduce的优化方法,属于计算机应用技术领域。一个作业的生命周期中有三个任务,包括setup任务、MapReduce任务和cleanup任务,将setup任务与clean任务合并进MapReduce任务,在一个作业在完成初始化时,直接启动MapReduce任务;即在map端首先执行setup任务,进行作业环境的创建,在reduce端最后执行clean任务,清理临时目录。本发明通过分析MapReduce框架内部的作业执行过程,对执行过程中的环境准备和清理做了优化,有效的节约了至少4个心跳周期的时间,实现了MapReduce作业执行性能的优化。
Description
技术领域
本发明属于计算机应用领域,涉及一种Hadoop MapReduce的优化方法。
背景技术
Hadoop是一个由Apache基金会开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。
Hadoop MapReduce并行计算框架构建于Hadoop分布式文件系统(HDFS)之上,包含一个主节点和若干从节点,核心节点是JobTracker,功能是负责任务调度,管理作业,TaskTracker是任务节点,负责执行JobTracker分发过来的任务。
作业和任务是并行计算框架的两个重要概念,下面先介绍一下作业执行的状态转换过程以及任务的时序流程。
在目前的Hadoop MapReduce执行框架中,作业初始状态从NEW开始,继而进入PREP.INTIALIZIN状态进行初始化,目的是为了读取输入数据的数据块描述信息,并创建所有的map和reduce任务,初始化成功后,进入PREP.INTIALIZED状态,此时,一个特殊的setup任务启动,此任务的作用是创建作业的运行环境,然后作业进入RUNNING阶段,在此阶段,作业不会立即被处理,而是处在RUNNING.WAIT状态等待被调度,被调度后,任务才开始执行,此时作业进入RUNNING.TASK状态,真正的进行任务处理,当所有的map和reduce任务完成以后,作业进入RUNNING.SUC.WAIT状态,此时,另一个特殊的cleanup任务启动,此任务的目的是清理作业的运行环境,然后作业进入结束阶段,下图是作业的状态转换图,图中的每个状态下,作业都有可能被用户主动杀死,进入KILLED状态,也有可能在执行任务的过程中因为种种原因失败,进入FAILED状态。
任务(Task)是Hadoop MapReduce框架进行并行化计算的基本单位,Task的整个生存周期是我们所要分析的重要对象,在框架的实现中,两端分别对应TaskInProgress和TaskTracker.TaskInProgress两个对象,当一个作业被提交到Hadoop系统的时,JobTracker对作业进行初始化,此时作业内的任务被全部创建好,等待TaskTracker来请求任务,我们可以简单分析一下task的生命周期。
JobTracker接受任务时,创建TaskInProgress,此时Task处于UNASSIGNED状态,TaskTracker经过一个心跳周期后请求分配任务,待JobTracker收到请求后分配一个TaskInProgress任务给TaskTracker,这是第一次心跳通信。
TaskTracker收到任务后创建TaskTracker.TaskInProgress对象,并启动Chi ld进程来执行任务,此时TaskTracker将任务状态更新为RUNNING。
再过一个心跳周期,Task向JobTracker报告Task状态的改变,JobTracker也将状态更新为RUNNING,此为第二次心跳周期,任务执行期间TaskTracker还会周期性的向JobTracker发送心跳信息,在任务执行完之后,TaskTracker会将状态变为CMMIT_PENDING,发送给JobTracker。
JobTracker收到消息后,会返回确认消息,表示允许提交,此时TaskTracker会将结果提交,并把任务装态更新为SUCCEEDED,再过一个周期,TaskTracker再次发送心跳消息,JobTracker也将任务状态更新为SUCCEEDED,至此,一个任务的生命周期结束。
分析作业的状态转换过程,我们可以看出一个作业的生命周期中,有三个任务,在执行所有的常规任务之前,会先执行一个setup任务,之后执行正常的MapReduce任务,在所有的任务执行完成之后,会执行一个cleanup任务。根据任务的生命周期我们可以知道setup任务的执行必须经过分配任务和报告完成任务至少两个心跳周期,同样的,cleanup任务至少也会消耗两个心跳周期,这就大大增加了系统的运行时间,setup任务和cleanup任务消耗的心跳周期会直接影响整个系统的性能。
发明内容
有鉴于此,本发明的目的在于提供一种Hadoop MapReduce的优化方法,将setup任务和cleanup任务合并MapReduce任务中,至少减少四个心跳周期,从而提高执行效率。
为达到上述目的,本发明提供如下技术方案:
一种Hadoop MapReduce的优化方法,一个作业的生命周期中有三个任务,包括setup任务、MapReduce任务和cleanup任务,将setup任务与clean任务合并进MapReduce任务,在一个作业在完成初始化时,直接启动MapReduce任务;即在map端首先执行setup任务,进行作业环境的创建,在reduce端最后执行clean任务,清理临时目录;然后作业结束,实现作业状态的优化。
进一步的,所述在在map端首先执行setup任务,在reduce端最后执行clean任务的实现方法为:在MapTask类中添加一个“setupJob()”方法,在ReduceTask类中添加一个“cleanJob()”方法,在Map任务的最开始阶段调用Task类的“runJobSetupTask()”方法,在reduce任务的最后阶段调用Task类的“runJobCleanupTask()”方法。
本发明的有益效果在于:通过分析MapReduce框架内部的作业执行过程,对执行过程中的环境准备和清理做了优化,合并setup任务与cleanup任务,有效的节约了至少4个心跳周期的时间,实现了MapReduce作业执行性能的优化。
附图说明
为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
图1为优化前的作业状态转化图;
图2为优化后的作业状态转化图。
具体实施方式
下面将结合附图,对本发明的优选实施例进行详细的描述。
参照图1优化前的作业状态图,一个作业的生命周期中有三个任务,包括setup任务、MapReduce任务和cleanup任务,根据任务的生命周期我们可以知道setup任务的执行必须经过一下两个步骤:
分配setup任务,经过一个心跳周期,待JobTracker收到TaskTracker的任务请求,则将setup任务分发给TaskTracker
Setup任务完成,TaskTracker执行完setup任务后,通过心跳信息向JobTracker报告完成信息,这是第二次心跳通信
补充一点,在任务执行过程中,TaskTracker还会周期性的向JobTracker发送心跳信息,但是以上两个心跳信息不可避免,是一定存在的。
同样的,cleanup任务至少也会消耗两个心跳周期,心跳消息除了包含有任务请求信息只玩,还包含任务执行状态,节点信息等内容。在标准的Hadoop系统中,少于100个节点的心跳周期为3s,当集群大于100个节点后,每多100个节点,心跳周期增加1s。由此可以计算出,setup任务与cleanup任务至少花费了12s的时间,虽然12s时间不算长,但如果对于一个执行时间为1min的段作业而言,整个作业环境的创建与清理就花销了20%左右的比例,这对系统的性能还是有相当大的影响。
通过分析Hadoop的源码,我们发现setup的主要任务是创建一个临时的输出目录,而cleanup任务是为了删除该目录。这两项任务本身的耗时并不长,真正消耗时间的是JobTracker与TaskTracker之间的心跳等待中,因此,我们从如下角度考虑优化策略。
将setup与clean任务合并进MapReduce任务,也就是说,当一个作业在完成初始化时,我们直接启动MapReduce任务,在map端做的第一件事,就是setup,进行作业环境的创建,在reduce端做的最后一件事就是clean,清理临时目录。为此,我们可以在MapTask类中添加一个“setupJob()”方法,在ReduceTask类中添加一个“cleanJob()”方法,在Map任务的最开始阶段调用Task类的“runJobSetupTask()”方法,在reduce任务的最后阶段调用Task类的“runJobCleanupTask()”方法,然后作业结束,优化后的作业状态转换图如图2所示,优化后的流程图中没有了PREP.SETUP状态,被合并进了RUNNING.WAIT状态,也没有了CLEANUP状态,被合并进了RUNNING.SUC.WAIT状态。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。
Claims (2)
1.一种Hadoop MapReduce的优化方法,其特征在于:一个作业的生命周期中有三个任务,包括setup任务、MapReduce任务和cleanup任务,将setup任务与clean任务合并进MapReduce任务,在一个作业在完成初始化时,直接启动MapReduce任务;即在map端首先执行setup任务,进行作业环境的创建,在reduce端最后执行clean任务,清理临时目录;然后作业结束,实现作业状态的优化。
2.根据权利要求1所述的一种Hadoop MapReduce的优化方法,其特征在于:所述在在map端首先执行setup任务,在reduce端最后执行clean任务的实现方法为:在MapTask类中添加一个“setupJob()”方法,在ReduceTask类中添加一个“cleanJob()”方法,在Map任务的最开始阶段调用Task类的“runJobSetupTask()”方法,在reduce任务的最后阶段调用Task类的“runJobCleanupTask()”方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710052152.XA CN106844054A (zh) | 2017-01-23 | 2017-01-23 | 一种Hadoop MapReduce的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710052152.XA CN106844054A (zh) | 2017-01-23 | 2017-01-23 | 一种Hadoop MapReduce的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106844054A true CN106844054A (zh) | 2017-06-13 |
Family
ID=59121051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710052152.XA Pending CN106844054A (zh) | 2017-01-23 | 2017-01-23 | 一种Hadoop MapReduce的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844054A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130254196A1 (en) * | 2012-03-26 | 2013-09-26 | Duke University | Cost-based optimization of configuration parameters and cluster sizing for hadoop |
CN103336790A (zh) * | 2013-06-06 | 2013-10-02 | 湖州师范学院 | 基于Hadoop的邻域粗糙集快速属性约简方法 |
CN103838626A (zh) * | 2014-02-27 | 2014-06-04 | 华为技术有限公司 | 一种处理串行任务的数据处理装置及方法 |
CN104573106A (zh) * | 2015-01-30 | 2015-04-29 | 浙江大学城市学院 | 一种基于案例推理技术的城市建设智能审批方法 |
-
2017
- 2017-01-23 CN CN201710052152.XA patent/CN106844054A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130254196A1 (en) * | 2012-03-26 | 2013-09-26 | Duke University | Cost-based optimization of configuration parameters and cluster sizing for hadoop |
CN103336790A (zh) * | 2013-06-06 | 2013-10-02 | 湖州师范学院 | 基于Hadoop的邻域粗糙集快速属性约简方法 |
CN103838626A (zh) * | 2014-02-27 | 2014-06-04 | 华为技术有限公司 | 一种处理串行任务的数据处理装置及方法 |
CN104573106A (zh) * | 2015-01-30 | 2015-04-29 | 浙江大学城市学院 | 一种基于案例推理技术的城市建设智能审批方法 |
Non-Patent Citations (2)
Title |
---|
杨勇 等: "基于MapReduce 的关联规则并行增量更新算法", 《重庆邮电大学学报( 自然科学版)》 * |
顾荣 等: "Hadoop MapReduce短作业执行性能优化", 《计算机研究与发展》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808334B (zh) | 一种基于资源重用的MapReduce短作业优化系统及方法 | |
CN109034396B (zh) | 用于处理分布式集群中的深度学习作业的方法和装置 | |
CN105956021A (zh) | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 | |
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
CN101887367B (zh) | 一种多级并行化编程方法 | |
EP3180695B1 (en) | Systems and methods for auto-scaling a big data system | |
CN115248728A (zh) | 面向智能计算的分布式训练任务调度方法、系统和装置 | |
CN115237581A (zh) | 一种面向异构算力的多策略智能调度方法和装置 | |
JP2022008781A (ja) | 分散型トレーニング方法、システム、デバイス、記憶媒体、及びプログラム | |
CN110457397A (zh) | 一种数据同步的方法及装置 | |
CN104360903A (zh) | Spark作业调度系统中实现任务数据解耦的方法 | |
CN107807983B (zh) | 一种支持大规模动态图数据查询的并行处理框架的设计方法 | |
CN110308984B (zh) | 一种用于处理地理分布式数据的跨集群计算系统 | |
CN106656525B (zh) | 一种数据广播系统、数据广播方法及设备 | |
CN113760638B (zh) | 一种基于kubernetes集群的日志服务方法和装置 | |
Wang et al. | An efficient and non-intrusive GPU scheduling framework for deep learning training systems | |
Yan et al. | Performance optimization for short MapReduce job execution in Hadoop | |
CN104243617A (zh) | 一种异构集群中面向混合负载的任务调度方法及系统 | |
CN110232087A (zh) | 大数据增量迭代方法、装置、计算机设备和存储介质 | |
CN112130966A (zh) | 任务调度方法和系统 | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
Guan et al. | Fleet: Flexible efficient ensemble training for heterogeneous deep neural networks | |
CN106095552A (zh) | 一种基于i/o去重的多任务图处理方法及系统 | |
CN106371924A (zh) | 一种最小化MapReduce集群能耗的任务调度方法 | |
CN115934362B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170613 |
|
RJ01 | Rejection of invention patent application after publication |