[发明专利]一种建立层次化的映射/归约并行编程模型的方法有效
| 申请号: | 201010125019.0 | 申请日: | 2010-03-12 |
| 公开(公告)号: | CN102193831A | 公开(公告)日: | 2011-09-21 |
| 发明(设计)人: | 陈海波;肖之慰;臧斌宇 | 申请(专利权)人: | 复旦大学 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 包兆宜 |
| 地址: | 20043*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 建立 层次 映射 并行 编程 模型 方法 | ||
技术领域
本发明属计算机软件应用领域,具体涉及一种建立层次化的映射/归约并行编程模型的方法,本发明能在分布式计算系统中,使用映射/规约并行编程模型来处理大规模数据的应用。
背景技术
随着用户业务需求的增长和网络技术的发展,海量数据的存储和计算对传统计算机系统提出了新的挑战。海量数据是指数据量极大(往往是万亿字节数量级以上)的数据集合,它比一般的通用数据库要大得多,远远超出单台计算机的存储和处理能力。为了解决海量数据的管理和存取问题,人们通过分布式系统将这样一个需要巨大的计算和存储能力的任务分成许多子任务,然后把这些子任务分配调度给多台互联的计算机进行并行处理,最后再把各个计算机上的输出综合起来得到最后结果。分布式系统的出现使对海量数据进行高效处理和存储成为可能,但是分布式系统上的程序编写与传统单机上的程序有很大的不同:软件程序设计者需要考虑系统不同节点间的同步,任务调度算法的有效性和公平性,负载均衡和错误恢复等问题。因此如何在分布式系统上进行高效有序的并行程序设计成为当今计算机学术界和业界共同关注的焦点。在这个背景下,并行编程模型便被提出,使得程序员不用关注于并行体系结构的特点,而把注意力集中到程序业务逻辑本身。
并行编程模型是指并行体系结构(如分布式系统,多核体系结构)上的编程模型,它对于简化、规范并行编程有重大的意义。并行编程模型一直是并行计算研究领域中的重点内容,它和并行计算机体系结构紧密相关。映射/规约(MapReduce)并行编程模型是谷歌(Google)公司为了解决其在集群上进行百万亿字节以上海量数据分布式计算的问题而提出的并行编程模型,该模型在2004年的国际操作系统设计与实现大会上被首次提出,并在其后得到广泛的应用,且已有多种并行体系结构上的开放源代码实现。它将并行计算抽象成作用于一系列键值对的操作,具有编程接口简单、不要求程序员有并行编程知识、能充分发挥并行体系结构的计算能力等优点。映射/规约并行编程模型主要由“映射”和“规约”两个阶段构成,“映射”阶段根据输入数据产生一系列中间键值对,“规约”阶段则把具有相同键的所有中间键值对规约到一起(如图1所示)。Hadoop是第一个映射/规约模型在分布式系统上的开放源代码实现,它的代码使用Java语言编写。该项目由阿帕奇软件基金会(Apache Software Foundation)支持,目前已为大量的公司企业所部署和应用。
一个典型的Hadoop应用部署通常会采用分布式文件系统作为持久层,在此之上运行映射/规约应用框架。Hadoop与分布式文件系统之间协作如下:一个映射/规约任务首先将来自文件系统的输入切分成可以并行处理的多份小数据,它们将提交给映射/规约框架作为各个映射任务的输入,经过映射阶段处理完后映射/规约框架会将其结果进行排序并作为输入传递给规约阶段处理,最后再将规约阶段的结果写回分布式文件系统。映射/规约框架负责任务调度,监控并重新执行失败的任务。
一般来说,计算节点和存储节点是相同的,就是说映射/规约框架和分布式文件系统是运行在相同的节点集上的。这样的部署使得映射/规约框架能够根据数据的实际位置在各个节点上有效地调度任务,从而在整个集群上达到极高的网络带宽利用率。
Hadoop的映射/规约框架将负责调度的逻辑抽象成任务跟踪器对象,作为中央的调度节点;而具体执行任务的那部分逻辑则被抽象为作业跟踪器对象,作为工作节点。整个框架由一个任务跟踪器和多个作业跟踪器组成,集群上每个节点都有一个作业跟踪器。任务跟踪器负责调度组成任务的各个子作业在作业跟踪器上执行,监控并重新执行失败的任务。
作业跟踪器在任务跟踪器的控制下执行作业。每个作业跟踪器可以同时执行多个作业,并不断地向任务跟踪器汇报当前其负责的作业队列状况。作业跟踪器在准备执行一个作业的时候,会通过作业执行器运行一个新的Java虚拟机实例独立地执行作业。无论作业成功或失败,所有临时的数据都会随着虚拟机实例的退出而销毁。
另一方面随着多核技术的发展,单个计算节点的处理能力日益提升,而体系结构则日趋复杂。其中多核上的并行计算问题和数据局部性问题是决定程序执行性能的关键因素。如果程序不能充分地同时利用多个计算核心资源进行计算,空闲的核心就会造成计算资源的浪费,使得程序只能使用多核架构的部分计算能力。数据局部性包括空间局部性(临近的数据会被相继访问)和时间局部性(相同数据会被多次访问),改善数据局部性可以有效地提高CPU高速缓存性能及输入输出子系统的性能,从而改善整体的运算性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010125019.0/2.html,转载请声明来源钻瓜专利网。





