CN102193831A - 一种建立层次化的映射/归约并行编程模型的方法 - Google Patents
一种建立层次化的映射/归约并行编程模型的方法 Download PDFInfo
- Publication number
- CN102193831A CN102193831A CN2010101250190A CN201010125019A CN102193831A CN 102193831 A CN102193831 A CN 102193831A CN 2010101250190 A CN2010101250190 A CN 2010101250190A CN 201010125019 A CN201010125019 A CN 201010125019A CN 102193831 A CN102193831 A CN 102193831A
- Authority
- CN
- China
- Prior art keywords
- mapping
- parallel
- data
- stipulations
- programming model
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明属计算机软件应用领域,涉及建立层次化的映射/归约并行编程模型的方法,包括使用C语言实现单节点上的作业处理逻辑,实现任务并行和数据局部性优化;对应于一般的集群环境中的双层并行架构,采用层次化的映射/规约框架,在单个计算节点上应用映射/规约模型实现多核架构上的并行处理。本发明能在分布式计算系统中,使用映射/规约并行编程模型处理大规模数据的应用,实现了高效的作业执行器,充分挖掘了单个计算节点的处理能力,特别是多核架构的并行处理能力和缓存及内存中的数据局部性,为映射/规约并行编程模型的整体性能带来速度提升;同时保留了Hadoop在集群级别的任务调度、负载均衡以及错误容忍等特性。
Description
技术领域
本发明属计算机软件应用领域,具体涉及一种建立层次化的映射/归约并行编程模型的方法,本发明能在分布式计算系统中,使用映射/规约并行编程模型来处理大规模数据的应用。
背景技术
随着用户业务需求的增长和网络技术的发展,海量数据的存储和计算对传统计算机系统提出了新的挑战。海量数据是指数据量极大(往往是万亿字节数量级以上)的数据集合,它比一般的通用数据库要大得多,远远超出单台计算机的存储和处理能力。为了解决海量数据的管理和存取问题,人们通过分布式系统将这样一个需要巨大的计算和存储能力的任务分成许多子任务,然后把这些子任务分配调度给多台互联的计算机进行并行处理,最后再把各个计算机上的输出综合起来得到最后结果。分布式系统的出现使对海量数据进行高效处理和存储成为可能,但是分布式系统上的程序编写与传统单机上的程序有很大的不同:软件程序设计者需要考虑系统不同节点间的同步,任务调度算法的有效性和公平性,负载均衡和错误恢复等问题。因此如何在分布式系统上进行高效有序的并行程序设计成为当今计算机学术界和业界共同关注的焦点。在这个背景下,并行编程模型便被提出,使得程序员不用关注于并行体系结构的特点,而把注意力集中到程序业务逻辑本身。
并行编程模型是指并行体系结构(如分布式系统,多核体系结构)上的编程模型,它对于简化、规范并行编程有重大的意义。并行编程模型一直是并行计算研究领域中的重点内容,它和并行计算机体系结构紧密相关。映射/规约(MapReduce)并行编程模型是谷歌(Google)公司为了解决其在集群上进行百万亿字节以上海量数据分布式计算的问题而提出的并行编程模型,该模型在2004年的国际操作系统设计与实现大会上被首次提出,并在其后得到广泛的应用,且已有多种并行体系结构上的开放源代码实现。它将并行计算抽象成作用于一系列键值对的操作,具有编程接口简单、不要求程序员有并行编程知识、能充分发挥并行体系结构的计算能力等优点。映射/规约并行编程模型主要由“映射”和“规约”两个阶段构成,“映射”阶段根据输入数据产生一系列中间键值对,“规约”阶段则把具有相同键的所有中间键值对规约到一起(如图1所示)。Hadoop是第一个映射/规约模型在分布式系统上的开放源代码实现,它的代码使用Java语言编写。该项目由阿帕奇软件基金会(Apache Software Foundation)支持,目前已为大量的公司企业所部署和应用。
一个典型的Hadoop应用部署通常会采用分布式文件系统作为持久层,在此之上运行映射/规约应用框架。Hadoop与分布式文件系统之间协作如下:一个映射/规约任务首先将来自文件系统的输入切分成可以并行处理的多份小数据,它们将提交给映射/规约框架作为各个映射任务的输入,经过映射阶段处理完后映射/规约框架会将其结果进行排序并作为输入传递给规约阶段处理,最后再将规约阶段的结果写回分布式文件系统。映射/规约框架负责任务调度,监控并重新执行失败的任务。
一般来说,计算节点和存储节点是相同的,就是说映射/规约框架和分布式文件系统是运行在相同的节点集上的。这样的部署使得映射/规约框架能够根据数据的实际位置在各个节点上有效地调度任务,从而在整个集群上达到极高的网络带宽利用率。
Hadoop的映射/规约框架将负责调度的逻辑抽象成任务跟踪器对象,作为中央的调度节点;而具体执行任务的那部分逻辑则被抽象为作业跟踪器对象,作为工作节点。整个框架由一个任务跟踪器和多个作业跟踪器组成,集群上每个节点都有一个作业跟踪器。任务跟踪器负责调度组成任务的各个子作业在作业跟踪器上执行,监控并重新执行失败的任务。
作业跟踪器在任务跟踪器的控制下执行作业。每个作业跟踪器可以同时执行多个作业,并不断地向任务跟踪器汇报当前其负责的作业队列状况。作业跟踪器在准备执行一个作业的时候,会通过作业执行器运行一个新的Java虚拟机实例独立地执行作业。无论作业成功或失败,所有临时的数据都会随着虚拟机实例的退出而销毁。
另一方面随着多核技术的发展,单个计算节点的处理能力日益提升,而体系结构则日趋复杂。其中多核上的并行计算问题和数据局部性问题是决定程序执行性能的关键因素。如果程序不能充分地同时利用多个计算核心资源进行计算,空闲的核心就会造成计算资源的浪费,使得程序只能使用多核架构的部分计算能力。数据局部性包括空间局部性(临近的数据会被相继访问)和时间局部性(相同数据会被多次访问),改善数据局部性可以有效地提高CPU高速缓存性能及输入输出子系统的性能,从而改善整体的运算性能。
因此,为了最大限度地挖掘单个计算节点的运算能力,应用程序必须充分考虑上述两个问题,并根据应用程序特点进行相应的细粒度优化。但是现有的Hadoop作业执行器并不能很好地解决这两个问题。这是由于作业执行器是在Java虚拟机实例上进行作业处理,Java虚拟机为上层应用程序提供了统一的抽象的执行环境,使得应用程序无法通过底层操作系统去针对体系结构特点进行优化。
发明内容
本发明的目的是为克服现有技术的不足,针对现有的映射/规约框架无法充分利用单个计算节点上的处理能力这一问题,提供一种建立层次化的映射/归约并行编程模型的方法。
现有的映射/规约框架如Hadoop主要注重于集群层次的并行计算,并没有考虑单个计算节点上的细粒度优化,忽视了普遍流行的多核架构的并行计算和数据局部性问题,从而无法最大程度挖掘计算节点的处理能力。
为解决上述问题,本发明建立层次化的映射/归约并行编程模型,其包括:使用C语言实现单节点上的作业处理逻辑,以实现原有Java虚拟机之上很难乃至无法实现的任务并行和数据局部性优化;对应于一般的集群环境中的双层并行架构(多个计算节点间的集群并行架构和单个计算节点内的多核并行架构),采用层次化的映射/规约框架,在单个计算节点上也应用映射/规约模型以实现多核架构上的并行处理,如图2所示。
所述的作业处理逻辑,包括作业执行器全部,以及作业跟踪器相应部分的改进。作业执行器按照映射/规约模型用C语言重新实现;改进的作业跟踪器需要在自身初始化的时候编译作业执行器所需的库程序,在执行作业的时候根据作业类型调用相应的作业执行器执行(对于原有类型的作业调用原有作业执行器执行,对于新类型的作业调用C语言实现的高效作业执行器执行)。
所述的任务并行优化,包括映射作业的数据获取与数据处理之间的并行,以及规约作业的数据获取与数据处理之间的并行。对于映射作业,作业执行器将创建一个独立的数据加载线程从分布式文件系统读取输入数据,与此同时数据处理线程不断地处理已读取的数据,每次处理数据的粒度可由用户控制;对于规约作业,也采用类似的并行作业方式,所不同的是规约作业的数据获取线程以文件的粒度读取数据,当一个待处理文件被完整地读取之后,相应的处理线程才开始处理该输入文件。
所述的数据局部性优化,包括高速缓存级别的数据局部性和内存级别的数据局部性。对于高速缓存级别的数据局部性,作业执行器将输入数据作进一步的切分,使得每次处理的数据单元能完整地加载到CPU上的一级高速缓存;对于内存级别的数据局部性,作业执行器将尽可能地重用内存中的数据与数据结构,如将原始文本读入内存再利用单词末尾的标点对单词进行划分,避免了多余的单词文本数据复制。
本发明的有益效果是,实现了高效的作业执行器,充分挖掘了单个计算节点的处理能力,特别是多核架构的并行处理能力和缓存及内存中的数据局部性,为映射/规约并行编程模型的整体性能带来速度提升;同时保留了Hadoop在集群级别的任务调度、负载均衡以及错误容忍等特性。
为了便于理解,以下将通过具体的附图和实施例对本发明的进行详细地描述。需要特别指出的是,具体实例和附图仅是为了说明,显然本领域的普通技术人员可以根据本文说明,在本发明的范围内对本发明做出各种各样的修正和改变,这些修正和改变也纳入本发明的范围内。
附图说明
图1,显示了主要由“映射”和“规约”两个阶段构成的映射/规约并行编程模型。
图2为本发明建立的层次化的映射/归约并行编程模型。
图3为本发明的系统架构示意图。
图4为作业执行器的模块构成示意图。
图5为映射作业处理逻辑与映射/规约模型的对应关系。
图6为规约作业处理逻辑与映射/规约模型的对应关系。
具体实施方式
实施例1
如图3所示,本发明保留了Hadoop原有实现的大部分模块,包括任务跟踪器和作业跟踪器,作业执行器则采用C/C++语言重新实现。在作业跟踪器调用作业执行器之前,系统的运作方式与Hadoop类似:用户通过任务客户端向任务跟踪器提交映射/规约任务,用户可通过配置文件制定任务类型;任务跟踪器将划分并分发子作业到各个作业跟踪器执行。作业跟踪器根据任务类型调用相应类型的作业执行器执行作业,这样使得Hadoop原有的应用程序可以使用原作业执行器执行,而新系统的应用程序可以采用高效的新作业执行器执行。
图4展示了本发明实现的新作业执行器的模块构成及与原有系统其他模块的关系。作业执行器包含三个主要的模块:核心处理模块,进程通讯模块和文件系统客户端。核心处理模块使用映射/规约框架实现了子作业的处理逻辑,还包括任务并行和数据局部性等优化。进程通讯模块负责与作业跟踪器进行通讯,它实现了作业跟踪器约定的远程过程调用协议客户端,并为作业执行器其他模块提供远程过程调用接口;该模块还包含了Java对象和C对应数据结构之间的转换以及C语言中对应Java反射机制的实现。文件系统客户端负责所有访问分布式文件系统的操作,并为作业执行器其他模块提供分布式文件系统访问接口。
图5详述了映射作业的处理逻辑与映射/规约模型的对应关系,如图所示,映射作业的前两阶段天然地与映射/规约模型有直接的对应,分别是映射和规约(也即合并)阶段。由于映射作业需要把输出结果按照规约阶段作业数进行划分,所以在映射/规约模型的最后的归并写回阶段,映射作业只需完成写回磁盘的功能而无需对划分的多个中间结果文件进行归并操作。
图6详述了规约作业的处理逻辑与映射/规约模型的对应关系,如图所示,规约作业的复制阶段通过HTTP协议从其他节点读取映射阶段的中间结果数据,而排序阶段则对这些数据进行排序以方便规约阶段处理。这两阶段的功能对应于映射/规约模型的映射阶段,因此作业执行器在映射阶段完成数据读取、反序列化以及排序的功能。而规约作业最后的规约阶段包含了规约和写回过程,对应于映射/规约模型的规约和归并写回阶段,因此作业执行器在最后两个阶段联合完成规约阶段的功能。
通常一些复杂的映射/规约应用程序可能涉及多个任务和复杂的任务前后执行逻辑,为使得应用程序能够配置和监控已提交的任务,本发明同时将任务客户端重新用C语言实现。用户只需提供一段C代码,指定任务类型和其他任务参数,调用新实现的任务客户端,即可使用本发明改进的高效作业执行器。
Claims (7)
1.一种建立层次化的映射/归约并行编程模型的方法,其特征在于,其包括:使用C语言实现单节点上的作业处理逻辑,实现任务并行和数据局部性优化;对应于一般的集群环境中的双层并行架构,采用层次化的映射/规约框架,在单个计算节点上应用映射/规约模型实现多核架构上的并行处理。
2.按权利要求1所述的方法,其特征在于,所述的作业处理逻辑包括作业执行器全部,以及作业跟踪器相应部分的改进。
3.按权利要求2所述的方法,其特征在于,所述的作业执行器按照映射/规约模型用C语言重新实现;改进的作业跟踪器在自身初始化的时候编译作业执行器所需的库程序,在执行作业的时候根据作业类型调用相应的作业执行器执行。
4.按权利要求3所述的方法,其特征在于,所述的根据作业类型调用相应的作业执行器执行包括:对原有类型的作业调用原有作业执行器执行,对新类型的作业调用C语言实现的高效作业执行器执行。
5.按权利要求1所述的方法,其特征在于,所述的任务并行优化包括映射作业的数据获取与数据处理之间的并行,以及规约作业的数据获取与数据处理之间的并行。
6.按权利要求1所述的方法,其特征在于,所述的数据局部性优化包括高速缓存级别的数据局部性和内存级别的数据局部性。
7.按权利要求1所述的方法,其特征在于,所述的集群环境中的双层并行架构包括多个计算节点间的集群并行架构和单个计算节点内的多核并行架构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010125019.0A CN102193831B (zh) | 2010-03-12 | 2010-03-12 | 一种建立层次化的映射/归约并行编程模型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010125019.0A CN102193831B (zh) | 2010-03-12 | 2010-03-12 | 一种建立层次化的映射/归约并行编程模型的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193831A true CN102193831A (zh) | 2011-09-21 |
CN102193831B CN102193831B (zh) | 2014-05-21 |
Family
ID=44601939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010125019.0A Expired - Fee Related CN102193831B (zh) | 2010-03-12 | 2010-03-12 | 一种建立层次化的映射/归约并行编程模型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102193831B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446209A (zh) * | 2011-10-18 | 2012-05-09 | 北京航空航天大学 | 一种海量时域数据读取与图形显示的方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN104462179A (zh) * | 2013-09-24 | 2015-03-25 | 乐金信世股份有限公司 | 处理大数据的方法、执行其的装置以及储存其的存储媒介 |
CN104731968A (zh) * | 2015-04-08 | 2015-06-24 | 河海大学 | 一种单机的大规模数据集的聚类挖掘方法 |
CN107832144A (zh) * | 2017-10-20 | 2018-03-23 | 南方电网科学研究院有限责任公司 | 分布式并行计算方法和装置 |
CN111858465A (zh) * | 2020-06-29 | 2020-10-30 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 大规模矩阵qr分解并行计算结构 |
CN118590497A (zh) * | 2024-08-02 | 2024-09-03 | 之江实验室 | 一种基于异构通信的全归约通信方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183368A (zh) * | 2007-12-06 | 2008-05-21 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和系统 |
-
2010
- 2010-03-12 CN CN201010125019.0A patent/CN102193831B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183368A (zh) * | 2007-12-06 | 2008-05-21 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和系统 |
Non-Patent Citations (2)
Title |
---|
郑启龙 等: "基于MapReduce模型的并行科学计算", 《微电子学与计算机》 * |
陈国良 等: "分层并行计算模型", 《中国科学技术大学学报》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446209A (zh) * | 2011-10-18 | 2012-05-09 | 北京航空航天大学 | 一种海量时域数据读取与图形显示的方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103049245B (zh) * | 2012-10-25 | 2015-12-02 | 浪潮电子信息产业股份有限公司 | 一种基于中央处理器cpu多核平台的软件性能优化方法 |
CN104462179A (zh) * | 2013-09-24 | 2015-03-25 | 乐金信世股份有限公司 | 处理大数据的方法、执行其的装置以及储存其的存储媒介 |
CN104462179B (zh) * | 2013-09-24 | 2020-08-18 | 乐金信世股份有限公司 | 处理大数据的方法、执行其的装置以及储存其的存储媒介 |
CN104731968A (zh) * | 2015-04-08 | 2015-06-24 | 河海大学 | 一种单机的大规模数据集的聚类挖掘方法 |
CN107832144A (zh) * | 2017-10-20 | 2018-03-23 | 南方电网科学研究院有限责任公司 | 分布式并行计算方法和装置 |
CN107832144B (zh) * | 2017-10-20 | 2020-07-28 | 南方电网科学研究院有限责任公司 | 分布式并行计算方法和装置 |
CN111858465A (zh) * | 2020-06-29 | 2020-10-30 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 大规模矩阵qr分解并行计算结构 |
CN111858465B (zh) * | 2020-06-29 | 2023-06-06 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 大规模矩阵qr分解并行计算系统 |
CN118590497A (zh) * | 2024-08-02 | 2024-09-03 | 之江实验室 | 一种基于异构通信的全归约通信方法及装置 |
CN118590497B (zh) * | 2024-08-02 | 2024-10-11 | 之江实验室 | 一种基于异构通信的全归约通信方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102193831B (zh) | 2014-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102193831B (zh) | 一种建立层次化的映射/归约并行编程模型的方法 | |
Kulkarni et al. | Survey on Hadoop and Introduction to YARN. | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
Gu et al. | SHadoop: Improving MapReduce performance by optimizing job execution mechanism in Hadoop clusters | |
CN104123182B (zh) | 基于主从架构的MapReduce任务跨数据中心调度系统及方法 | |
CN103279390B (zh) | 一种面向小作业优化的并行处理系统 | |
CN103488775A (zh) | 一种用于大数据处理的计算系统及计算方法 | |
CN102137125A (zh) | 在分布式网络系统中处理跨任务数据的方法 | |
WO2014110702A1 (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
Bedini et al. | Modeling performance of a parallel streaming engine: bridging theory and costs | |
CN104112049A (zh) | 基于P2P构架的MapReduce任务跨数据中心调度系统及方法 | |
Li et al. | Flink‐ER: An Elastic Resource‐Scheduling Strategy for Processing Fluctuating Mobile Stream Data on Flink | |
Krevat et al. | Applying performance models to understand data-intensive computing efficiency | |
Suzumura et al. | ScaleGraph: A high-performance library for billion-scale graph analytics | |
CN112148546A (zh) | 电力系统静态安全分析并行计算系统及方法 | |
Khalil et al. | Survey of Apache Spark optimized job scheduling in Big Data | |
Wang et al. | A survey of system scheduling for hpc and big data | |
CN112506496B (zh) | 晶上系统开发环境搭建方法及系统 | |
Li et al. | Cress: Dynamic scheduling for resource constrained jobs | |
Kumar et al. | Big data processing comparison using pig and hive | |
WO2014110701A1 (zh) | 独立主动构件和可运行主动构件组装模型及构件拆分方法 | |
Xu et al. | Distributed hybrid cloud management platform based on rule engine | |
CN105468451A (zh) | 一种基于高通量测序数据的计算机集群的作业调度系统 | |
Zhao et al. | Multitask oriented GPU resource sharing and virtualization in cloud environment | |
Cheng et al. | Analysis on the Status of Big Data Processing Framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140521 Termination date: 20200312 |
|
CF01 | Termination of patent right due to non-payment of annual fee |