CN103699441B - 基于任务粒度的MapReduce报表任务执行方法 - Google Patents
基于任务粒度的MapReduce报表任务执行方法 Download PDFInfo
- Publication number
- CN103699441B CN103699441B CN201310656006.XA CN201310656006A CN103699441B CN 103699441 B CN103699441 B CN 103699441B CN 201310656006 A CN201310656006 A CN 201310656006A CN 103699441 B CN103699441 B CN 103699441B
- Authority
- CN
- China
- Prior art keywords
- task
- subtask
- job
- mapreduce
- access control
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于任务粒度的MapReduce报表任务执行方法,包括以下步骤:S10、验证数据报表任务Jobi的合法性以及优先级,将数据报表任务放入Job队列中;S20、基于最小粒度分割,依次对每一Jobi进行子任务划分,得到包含所有子任务的集合Set1;S30、去除集合Set1中重复的子任务,得到集合Set2;S40、对集合Set2中的子任务进行最大粒度合并,得到集合Set3;S50、根据hadoop即时计算能力以及集合Set3的子任务数量创建运算单元;S60、由运算单元执行集合Set3的子任务。本发明可以自适应寻找报表计算任务队列中的可复用的子任务,并执行分割和合并,有效提高计算效率。
Description
【技术领域】
本发明涉及一种基于任务粒度的MapReduce报表任务执行方法。
【背景技术】
在大数据时代,数据量成爆炸式增长,这导致了对数据的计算处理和有效存储提出了极高的要求。Hadoop生态圈的提出为海量数据的大规模计算和分布式可靠存储提供了一个强大的工具。在Hadoop中,MapReduce是一个为海量数据的批量分析和计算提供了一个可靠、易用、可规模化的关键组件,特别是广泛用于基于海量日志数据的报表计算。然而,在现实使用中,MapReduce框架下的报表计算任务的执行受到了Hadoop集群的处理能力以及集群内部各节点之间数据传输速度的制约,特别是在多任务执行的情况下,MapReduce任务的执行不可避免地出现竞争。
针对相同数据集的报表计算任务往往有如下特点:(1)由于计算所基于的是同一个数据集,导致相同的数据可能会被多个MapReduce任务执行完全相同的读取过程,由于Hadoop Distributed File System的读写性能是影响MapReduce计算性能的关键因素之一,所以针对相同数据的多个报表计算任务会重复读取一个数据集导致性能下降;(2)Hadoop的MapReduce任务执行机制缺乏相应策略,现在原生的hadoop集群对于MapReduce多任务的执行没有做出任何优化,如果存在相同或者可复用的报表计算任务,该任务仍会被执行多次;(3)基于相同数据集的报表计算任务通常是基于相同的计算条件的,因此,多个报表计算任务的某些计算子任务可以被合并。
现有常用方法是没有进行任何优化,导致hadoop计算性能浪费。另一个方法是使用pig或者hive等工具来优化数据报表计算过程,但是pig和hive都是基于单个任务的优化,无法对一个任务的队列进行整体优化,且pig和hive的优化取决于它们的脚本语句,对脚本编写者的要求更高。
【发明内容】
本发明旨在解决上述现有技术中存在的问题,提出一种基于任务粒度的MapReduce报表任务执行方法。
本发明提出的基于任务粒度的MapReduce报表任务执行方法包括以下步骤:S10、验证数据报表任务Jobi的合法性以及优先级,将数据报表任务放入Job队列中,其中,1≤i≤K,K为所述数据报表任务的个数;S20、基于最小粒度分割,依次对每一Jobi进行子任务划分,得到包含所有子任务的集合Set1;S30、去除集合Set1中重复的子任务,得到集合Set2;S40、对集合Set2中的子任务进行最大粒度合并,得到集合Set3,其中,每一Jobi依赖于集合Set3中的若干子任务;S50、根据hadoop即时计算能力以及集合Set3的子任务数量创建运算单元;S60、由所述运算单元执行集合Set3的子任务。
本发明提出的基于任务粒度的MapReduce报表任务执行方法可以自适应寻找报表计算任务队列中的可复用的子任务,并执行分割和合并,最大限度地利用Hadoop集群的计算能力和数据读写能力,有效地提高了计算效率。
【附图说明】
图1为本发明提出的基于任务粒度的MapReduce报表任务执行方法流程图。
图2为本发明提出的基于任务粒度的MapReduce报表任务执行方法环境架构图。
图3为本发明一实施例的基于任务粒度的MapReduce报表任务执行方法步骤示意图。
【具体实施方式】
下面结合具体实施例及附图对本发明作进一步详细说明。下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明的技术方案,而不应当理解为对本发明的限制。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
本发明提供一种基于任务粒度的MapReduce报表任务执行方法,如图1所示,该方法包括以下步骤:S10、验证数据报表任务Jobi的合法性以及优先级,将数据报表任务放入Job队列中,其中,1≤i≤K,K为所述数据报表任务的个数;S20、基于最小粒度分割,依次对每一Jobi进行子任务划分,得到包含所有子任务的集合Set1;S30、去除集合Set1中重复的子任务,得到集合Set2;S40、对集合Set2中的子任务进行最大粒度合并,得到集合Set3,其中,每一Jobi依赖于集合Set3中的若干子任务;S50、根据hadoop即时计算能力以及集合Set3的子任务数量创建运算单元;S60、由所述运算单元执行集合Set3的子任务。
以应用于Hadopp环境下的MapReduce框架下基于任务粒度的数据报表任务优化执行方法为例,本发明所公开的框架由Waitress、Manager、TaskExecutor、Worker四个模块组成,模块之间拓扑结构反映了框架的执行流程。其中,一个Mapreduce框架下的数据报表计算任务可以被分割为多个子任务,该Mapreduce任务的执行可以被分解为由这些子任务所组成的拓扑结构的执行;对于一组数据报表计算任务,先对每个数据报表计算任务执行最小粒度的分割,得到若干的子任务,然后去掉重复的子任务,接着执行最大粒度的合并,得到最终执行的子任务序列。
具体地,Waitress模块负责验证数据报表任务的合法性和优先级,报告具体的任务执行进度给任务递交者;Manager模块维护了两个队列:Job队列和Task队列,任务递交者递交的MapReduce任务称为Job,经过优化后生成MapReduce任务称为Task;Manage模块一方面负责动态处理Job队列,根据Job队列的变化,动态地分割和合并相关Job,把Job队列优化为一个Task队列;TaskExecutor模块负责执行Task队列,TaskExecutor模块根据hadoop的即时计算能力动态创建多个worker,由worker负责执行一个具体的Task。
优选地,可使TaskExecutor模块维护了一个缓存池TaskResultCache,其中 存储了历史Task的执行结果,如果Task队列中存在一个Task,其执行结果已经被缓存在TaskResultPool中,则该Task可以避免被执行。
Worker为一个负责执行task的线程或者进程,负责监视Hadoop中该Task的执行,并把Task的执行情况反馈给TaskExecutor模块。
例如对于数据报表任务Job队列{Job1,Job2,…},每个Jobi都可以基于最小粒度分割被分割为一个由若干Task组成的集合Seti={taski1,taski2,…},该Jobi的执行结果为taski1,taski2,…执行结果的并集;Job队列{Job1,Job2,…}中,对所有的Jobi执行分割操作,得到若干个Task集合,基于最大粒度合并合并这些集合,得到无重复项的Task集合Setall={task1,task2,…};对集合Setall,将其划分为若干个子集Set′1,Set′2,…,任意Jobi的执行依赖于某些子集的执行,然后对于一个子集Set′i,合并该子集包含的所有Task为一个独立的MapReduce任务taski′,则Job队列{Job1,Job2,…}被处理为Task队列{task′1,task′2,…}。对于一个Jobi,如果依赖于{task′i,task′j,…},其执行结果等于task′i,task′j,…执行结果的并集。
图2所示为Hadopp环境下的MapReduce框架下基于任务粒度的数据报表任务优化执行方法环境架构图。
如图3所示,在一实施例中,以一Job队列{Job1,Job2,Job3}为例,在执行最小粒度分割时,Job1被分割为Set1={task3、task4、task5},Job2可以为分割为Set2={task1、task2、task3},Job3可以被分割为Set3={task1、task2}(task1-task5都是不可再分割的Mapreduce任务),合并它们并去掉重复task,得到Setall=Set1∪Set2∪Set3={task1,task2,task3,task4,task5},然后执行最大粒度合并,合并task1和task2为新的子任务task12,合并task4和task5为新的子任务task45,task3保留独立,则Job1依赖于task3和task45,Job2依赖于task12 和task3,Job3则是task12。至此得到的新的Task队列为{Task12,Task45,Task3},Task的队列中的任务排序可以由任务递交者的优先级决定。
TaskExecutor模块根据Hadoop集群的计算状态从Task队列中取出一个任务,首先检查是否在TaskResultCache中已经存在,如果没有,则生成一个worker,然后把该任务交由worker向Hadoop集群递交执行,并由worker持续监视执行状态。
最终,Job1的执行结果就是task3和task45的执行结果的并集;Job2的执行结果就是task12和task3的执行结果的并集;Job3的执行结果就是task12的执行结果。
以租车交易记录的报表计算任务为例,一原始无序的数据集中的每一个数据项为一个出租车交易记录:{号牌号码,经度,纬度,汇报时间,车辆状态,车牌种类,上车时间,下车时间,营业里程,计时时间,消费金额,空驶里程,所属出租车公司}。假设有Job1的报表计算条件为{出租车类型=红的,交易日期类型=工作日,所属出租车公司=公司A,单次交易营运时间={7,12},单次交易营运里程<100km,单车单天营运交易数={100,200},单车单天营运金额>800,单车单天行驶里程>200km,营业日期范围={2012-02-01,2012-03-15};Job2的报表计算条件为{出租车类型=红的,交易日期类型=周末,所属出租车公司=所有,单次交易营运时间={8,20},单次交易营运里程<100km,单车单天营运交易数={100,200},单车单天营运金额>1000,单车单天行驶里程>200km,营业日期范围={2012-02-01,2012-03-15}。如果没有任何优化,则Hadoop计算集群会对同样一个数据集基于不同的计算条件执行完全相同的操作,无法避免对数据集的重复读写和重复计算。
而采用本发明所提出的优化执行方法,则首先对每个Job执行最小粒度的 分割,例如Job1被分割为九个Task,每个Task的计算条件分别为{出租车类型=红的}、{交易日期类型=工作日}、{所属出租车公司=公司A}、{单次交易营运时间={7,12}}、{单次交易营运里程<100km}、{单车单天营运交易数={100,200}}、{单车单天营运金额>800}、{单车单天行驶里程>200km}、{营业日期范围={2012-02-01,2012-03-15}};同理,对Job2执行最小粒度分割而生成一组Task。接着,执行最大粒度的合并,生成一个由Task1,Task2,Task3组成的Task队列,其中Task1计算条件为{出租车类型=红的,单次交易营运里程<100km,单车单天营运交易数={100,200},单车单天行驶里程>200km,营业日期范围={2012-02-01,2012-03-15}};Task2计算条件为{交易日期类型=工作日,所属出租车公司=公司A,单次交易营运时间={7,12},单车单天营运金额>800};Task3计算条件为{交易日期类型=周末,所属出租车公司=所有,单次交易营运时间={8,20},单车单天营运金额>1000}。TaskExecutor模块从Task队列中取得Task,然后检查是否在TaskResultCache中是否已经存在该task的执行结果,如果没有,则创建一个worker,交由worker执行。最终,可知Job1的执行结果为Task1和Task2执行结果的并集;Job2的执行结果为Task1和Task3执行结果的并集;worker执行完毕之后,TaskExecutor模块会把Task1,Task2和Task3的执行结果进行缓存。
本发明提出的基于任务粒度的MapReduce报表任务执行方法可以自适应寻找报表计算任务队列中的可复用的子任务,并执行分割和合并,最大限度地利用Hadoop集群的计算能力和数据读写能力,有效地提高了计算效率。
虽然本发明参照当前的较佳实施方式进行了描述,但本领域的技术人员应能理解,上述较佳实施方式仅用来解释和说明本发明的技术方案,而并非用来限定本发明的保护范围,任何在本发明的精神和原则范围之内,所做的任何修饰、等效替换、变形、改进等,均应包含在本发明的权利要求保护范围之内。
Claims (6)
1.一种基于任务粒度的MapReduce报表任务执行方法,包括以下步骤:
S10、验证数据报表任务Jobi的合法性以及优先级,将数据报表任务放入Job队列中,其中,1≤i≤K,K为所述数据报表任务的个数;
S20、基于最小粒度分割,依次对每一Jobi进行子任务划分,得到包含所有子任务的集合Set1;
S30、去除集合Set1中重复的子任务,得到集合Set2;
S40、对集合Set2中的子任务进行最大粒度合并,得到集合Set3,其中,每一Jobi依赖于集合Set3中的若干子任务,所述最大粒度合并具体为:找出jobi中多次同时出现的多个子任务或在jobi中同时出现只出现一次的多个子任务,并将所述多个子任务分别进行合并;
S50、根据Hadoop即时计算能力以及集合Set3的子任务数量创建运算单元;
S60、由所述运算单元执行集合Set3的子任务。
2.根据权利要求1所述的基于任务粒度的MapReduce报表任务执行方法,其特征在于,将集合Set3子任务的执行结果存入缓存池中。
3.根据权利要求2所述的基于任务粒度的MapReduce报表任务执行方法,其特征在于,在所述缓存池中对集合Set3的子任务进行检索,若相应子任务执行结果已存在,则不创建相应子任务的运算单元;若相应子任务执行结果不存在,则创建相应子任务的运算单元。
4.根据权利要求1至3任意一项所述的基于任务粒度的MapReduce报表任务执行方法,其特征在于,所述运算单元为线程或者进程。
5.根据权利要求1所述的基于任务粒度的MapReduce报表任务执行方法,其特征在于,集合Set3中的每一子任务为集合Set2中若干子任务的并集。
6.根据权利要求1所述的基于任务粒度的MapReduce报表任务执行方法,其特征在于,所述运算单元与集合Set3的子任务一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310656006.XA CN103699441B (zh) | 2013-12-05 | 2013-12-05 | 基于任务粒度的MapReduce报表任务执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310656006.XA CN103699441B (zh) | 2013-12-05 | 2013-12-05 | 基于任务粒度的MapReduce报表任务执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699441A CN103699441A (zh) | 2014-04-02 |
CN103699441B true CN103699441B (zh) | 2017-07-18 |
Family
ID=50360980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310656006.XA Active CN103699441B (zh) | 2013-12-05 | 2013-12-05 | 基于任务粒度的MapReduce报表任务执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699441B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978345B (zh) * | 2014-04-09 | 2018-08-17 | 中国移动通信集团公司 | 一种基于MapReduce的数据处理方法和装置 |
CN104731663B (zh) * | 2015-03-31 | 2018-04-13 | 北京奇艺世纪科技有限公司 | 任务处理方法及系统 |
CN104699542B (zh) * | 2015-03-31 | 2018-02-09 | 北京奇艺世纪科技有限公司 | 任务处理方法及系统 |
CN104731647B (zh) * | 2015-03-31 | 2018-02-09 | 北京奇艺世纪科技有限公司 | 任务处理方法及系统 |
CN106708606B (zh) * | 2015-11-17 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 基于MapReduce的数据处理方法及装置 |
CN105787008A (zh) * | 2016-02-23 | 2016-07-20 | 浪潮通用软件有限公司 | 一种大数据量的数据去重清洗方法 |
CN107132992B (zh) * | 2016-02-26 | 2020-12-15 | 创新先进技术有限公司 | 一种海量数据的处理方法及其装置 |
CN106250460A (zh) * | 2016-07-28 | 2016-12-21 | 全球能源互联网研究院 | 一种考虑任务相关性的Hive优化方法及系统 |
CN108255607A (zh) * | 2018-01-08 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | 任务处理方法、装置、电子终端及可读存储介质 |
CN112711471A (zh) * | 2020-12-31 | 2021-04-27 | 中移(杭州)信息技术有限公司 | 大数据任务的执行方法和装置、服务器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208222A (zh) * | 2011-03-29 | 2011-10-05 | 中广核工程有限公司 | 一种核电厂运行的控制方法及其系统 |
CN103067468A (zh) * | 2012-12-22 | 2013-04-24 | 深圳先进技术研究院 | 云调度方法及其系统 |
CN103294558A (zh) * | 2013-05-29 | 2013-09-11 | 北京大学 | 一种支持动态信任评估的MapReduce调度方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314336B (zh) * | 2010-07-05 | 2016-04-13 | 深圳市腾讯计算机系统有限公司 | 一种数据处理方法和系统 |
US20120304186A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Scheduling Mapreduce Jobs in the Presence of Priority Classes |
US9141430B2 (en) * | 2012-04-30 | 2015-09-22 | Hewlett-Packard Development Company, L.P. | Scheduling mapreduce job sets |
-
2013
- 2013-12-05 CN CN201310656006.XA patent/CN103699441B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208222A (zh) * | 2011-03-29 | 2011-10-05 | 中广核工程有限公司 | 一种核电厂运行的控制方法及其系统 |
CN103067468A (zh) * | 2012-12-22 | 2013-04-24 | 深圳先进技术研究院 | 云调度方法及其系统 |
CN103294558A (zh) * | 2013-05-29 | 2013-09-11 | 北京大学 | 一种支持动态信任评估的MapReduce调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103699441A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699441B (zh) | 基于任务粒度的MapReduce报表任务执行方法 | |
US20180240062A1 (en) | Collaborative algorithm development, deployment, and tuning platform | |
CN111209352B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
EP2738675B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
CN107070645B (zh) | 比较数据表的数据的方法和系统 | |
CN102831102A (zh) | 一种在计算机集群上进行矩阵乘积运算的方法和系统 | |
Shamsuddin et al. | Data science vs big data@ UTM big data centre | |
CN112558869A (zh) | 基于大数据遥感影像缓存方法 | |
CN1783121A (zh) | 用于执行设计自动化的方法和系统 | |
CN112352228A (zh) | 数据存储系统和方法 | |
CN103502941B (zh) | 一种并行处理方法和装置 | |
Mhand et al. | Scalable and distributed architecture based on Apache Spark Streaming and PROM6 for processing RoRo terminals logs | |
CN112561500A (zh) | 基于用户数据的薪酬数据生成方法、装置、设备及介质 | |
CN111930299A (zh) | 分配存储单元的方法及相关设备 | |
CN106157015A (zh) | 资金追偿的方法及装置 | |
CN104657534A (zh) | 用于报告多部件有限元分析模型的实际动能的方法和系统 | |
US20240095598A1 (en) | Data processing methods and computer systems for wavelakes signal intelligence | |
CN115689405B (zh) | 数据处理方法、装置及系统、计算机可存储介质 | |
US20230031691A1 (en) | Training machine learning models | |
CN101303751A (zh) | 交替处理的方法、系统和计算机程序产品 | |
Freeman | Discrete systems simulation: ... a survey and introduction | |
Tkachev | Effective methods for implementating calendar of events for VANET models | |
CN116821535A (zh) | 一种客流分析预测的可视化系统 | |
CN116884132A (zh) | 线上排队的等待时间确定方法、装置、设备和存储介质 | |
CN117614959A (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 |