在分布式网络系统中处理跨任务数据的方法

文档序号:7740913阅读:198来源:国知局
专利名称:在分布式网络系统中处理跨任务数据的方法
技术领域
本发明属网络信息技术领域,具体地涉及一种用于在分布式网络系统中处理跨任 务数据的方法。
背景技术
随着用户业务需求的增长和网络技术的发展,海量数据的存储和计算对传统计算 机系统提出了新的挑战。海量数据是指数据量极大(往往是万亿字节数量级以上)的数据 集合,它比一般的通用数据库要大得多,远远超出单台计算机的存储和处理能力。为了解决 海量数据的管理和存取问题,人们通过分布式网络系统将这样一个需要巨大的计算和存储 能力的任务分成许多子任务,然后把这些子任务分配调度给多台互联的计算机节点进行并 行处理,最后再把各个计算机节点上的输出综合起来得到最后结果。分布式系统的出现使 对海量数据进行高效处理和存储成为可能,但是分布式系统上的程序编写与传统单机上的 程序有很大的不同软件程序设计者需要考虑系统不同节点间的同步,任务调度算法的有 效性和公平性,负载均衡和错误恢复等问题。因此如何在分布式系统上进行高效有序的并 行程序设计成为当今计算机学术界和业界共同关注的焦点。在这个背景下,并行编程模型 便被提出,使得程序员不用关注于并行体系结构的特点,而把注意力集中到程序业务逻辑 本身。并行编程模型是指并行体系结构(如分布式系统,多核体系结构)上的编程模型, 它对于简化、规范并行编程有重大的意义。并行编程模型一直是并行计算研究领域中的重 点内容,它和并行计算机体系结构紧密相关。映射/规约(Map/Reduce)并行编程模型是谷 歌(Google)公司为了解决其在集群上进行百万亿字节以上海量数据分布式计算的问题而 提出的并行编程模型,该模型在2004年的国际操作系统设计与实现大会上被首次提出,并 在其后得到广泛的应用,且已有多种并行体系结构上的开放源代码实现。它将并行计算抽 象成作用于一系列键值对的操作,具有编程接口简单、不要求程序员有并行编程知识、能充 分发挥并行体系结构的计算能力等优点。映射/规约并行编程模型主要由“映射(Map)”和 “规约(Reduce),,两个阶段构成,“映射”阶段根据输入数据产生一系列中间键值对,“规约” 阶段则把具有相同键的所有中间键值对规约到一起(参照图1)。Hadoop是第一个映射/ 规约模型在分布式系统上的开放源代码实现,它的代码使用Java语言编写。这个项目由阿 帕奇软件基金会(Apache SoftwareFoundation)支持,目前已为大量的公司企业所部署和 应用。一个典型的Hadoop应用部署通常会采用分布式文件系统作为持久存储层,在此 之上运行映射/规约应用框架。Hadoop与分布式文件系统之间是这样协作的,一个映射/ 规约任务首先将来自文件系统的输入切分成可以并行处理的多份小数据,它们将提交给映 射/规约框架作为各个映射任务的输入,经过映射阶段处理完后映射/规约框架会将其结 果进行排序并作为输入传递给规约阶段处理,最后再将规约阶段的结果写回分布式文件系 统。映射/规约框架负责任务调度,监控并重新执行失败的任务。
3
一般来说,计算节点和存储节点是相同的,就是说映射/规约框架和分布式文件 系统是运行在相同的节点集上的。这样的部署使得映射/规约框架能够根据数据的实际位 置在各个节点上有效地调度任务,从而在整个集群上达到极高的网络带宽利用率。Hadoop的映射/规约框架将负责调度的逻辑抽象成任务跟踪器对象,作为中央的 调度节点,又称主节点(master node);而具体执行任务的那部分逻辑则被抽象为作业跟踪 器对象,作为工作节点(slavenode)。整个框架由一个任务跟踪器和多个作业跟踪器组成, 集群上每个节点都有一个作业跟踪器。任务跟踪器负责调度组成任务的各个子作业在作业 跟踪器上执行,监控并重新执行失败的任务。作业跟踪器在任务跟踪器的控制下执行作业。每个作业跟踪器可以同时执行多个 作业,并不断地向任务跟踪器汇报当前其负责的作业队列状况。作业跟踪器在准备执行一 个作业的时候,会通过作业执行器运行一个新的Java虚拟机实例独立地执行作业。无论作 业成功或失败,所有临时的数据都会随着虚拟机实例的退出而销毁。然而,许多实际应用在运行过程中需要对特定的数据进行多次迭代处理以得到最 终结果,因此不同任务之间有大量共享的输入数据。这类应用包括机器学习领域中的簇集 算法,语言概率模型,数据库联接操作以及增量计算等众多应用。当前的基于映射/归约并 行编程模型的设计与实现(如Hadoop)并没有考虑到跨任务的数据局部性,因此在这种类 应用中它们必须将每个任务都重新通过网络从分布式文件系统重复加载相同的输入数据, 局限了任务的计算速度。因此,确实有必要针对上述现有技术中存在的问题,提出改进的技术方案,以提高 网络系统中跨任务数据的运行速度。

发明内容
本发明的目的在于提供一种在分布式网络系统中处理跨任务数据的方法,具体而 言,本方法涉及在包括主节点和多个从节点的网络系统中处理跨任务数据的方法,在当前 的映射/归约并行编程模型的现有技术的基础上,考虑了跨任务的数据局部性,将局限运 行速度的重复从分布式文件系统加载相同的输入数据的缺陷完全避免,提高网络系统中跨 任务数据的运行速度。本发明一方面提供了一种在从节点上实施的处理网络系统中跨任务数据的方法, 该方法包括步骤提供一个对应的缓存服务器;将所执行的当前任务的数据保存于所述对 应的缓存服务器中;产生一包含关于所保存的数据及其节点位置的信息的消息,并将所述 消息发送给主节点;在网络中的任一从节点请求执行一后续的任务,且该任务所需要的数 据与先前被保存的数据相同时,响应于主节点的调度指令,用先前保存的相同数据执行该 后续的任务。通过上述的技术方案,由于在从节点提供了缓存,使得任务执行完毕后,数据被缓 存并通知主节点等候其调度,而不是随着作业的退出而销毁,从而有利地提高了网络系统 中的跨任务运行速度。本发明另一方面提供了一种在主节点上实施的处理网络系统中跨任务数据的方 法,包括步骤接收来自从节点的包含关于其所保存的执行当前任务的数据及其节点位置 的信息的消息;在网络中的任一从节点请求执行一后续的任务,且该任务所需要的数据与先前被保存的数据相同时,产生一调度指令给保存同样数据的从节点,令其用先前保存的 相同数据执行该后续的任务。有利的是,通过上述的技术方案,由于在从节点存在缓存,执行的任务的数据被保 存于该缓存并将保存的数据及其节点位置信息通知主节点,这样主节点便能获得整个系统 中的数据缓存位置信息,当一个后续任务初始化时,主节点的任务调度器优先将该后续任 务指派到缓存有相同输入数据的从节点执行,从而实现对相同数据的重复使用,避免从分 布式文件系统重复加载输入数据。


下面结合附图及具体实施例进一步说明本发明的原理图1为分布式文件系统中Hadoop映射/规约并行编程模型示意图;图2为根据本发明原理的方法所运行的系统架构示意图;以及图3为根据本发明原理的方法的流程示意图。
具体实施例方式如图2所示,为根据本发明方法所运行的网络分布式文件系统架构,包括一个命 名节点即主节点和多个工作节点即从节点。在一个集群上,每一个作业执行器对应于一个 工作节点,主节点(图中未显示)负责调度所有工作节点。根据本发明的方法,在每一个分布的从节点设置一个缓存系统,包括缓存服务器 和缓存客户端,以类似于分布式文件系统的访问代理方式工作。如图所示,所有来自作业执 行器的读请求都由缓存客户端转发到缓存服务器;缓存服务器将从分布式文件系统读取请 求数据,将其保存在共享内存里的本地缓存,并通过信号量通知主节点。该缓存系统能够保 存任务已读取的数据以支持跨任务数据的重复使用;缓存服务器作为守护进程常驻于工作 节点之上,因而保证了缓存数据的持续性,使得任务数据不随子作业的结束而销毁。最终, 作业执行器在执行后续任务时,如该后续任务中需要的数据与之前已保存的任务数据相 同,则可以通过共享内存从缓存服务器读取其请求的数据。 缓存服务器和缓存客户端在不同的线程上并行执行,通过共享内存机制进行数据 交换,通过信号量在必要的时候进行同步,从而使得缓存服务器的数据读取和缓存客户端 的数据处理能够同时执行,共享内存和信号量都是由操作系统提供的机制。缓存服务器在 作业追踪器初始化的时候启动,并作为守护进程执行。每个作业执行器都将被指派一个唯 一的序列号,序列号与共享内存中的中央控制数据结构相应的控制结构对应,从而避免多 个作业执行器之间的冲突。所述的缓存服务器,包括一个控制缓存服务器的守护线程,至少一个响应客户端 请求工作线程。守护线程接收并执行来自管理员的初始化或退出命令,初始化工作包括初 始化缓存系统所需的共享内存数据结构和启动工作线程。每个工作线程独立地对应于工作 节点上的一个作业执行器,这些工作线程以轮询的方式监控并执行缓存客户端的请求。所述的缓存客户端,以代码片段的形式存在于系统框架的主要代码内。其包括与 缓存服务器建立通讯的初始化机制,发送请求并从共享内存读取数据的通讯机制。通过共 享内存机制的支持,缓存客户端能够以访问本地内存的方式读取来自缓存服务器的数据,而不需额外的数据复制开销。有利的是,本发明在Hadoop原有的任务机制基础上的改进了任务调度机制,该任 务调度机制包括对分布式文件系统命名服务器的缓存数据信息支持,以及能优先根据系统 数据缓存位置信息进行任务调度的任务调度器。Hadoop分布式文件系统上的命名节点维护缓存位置信息,为任务调度器提供必要 的信息。缓存客户端在得到任务请求的数据之后,会将该任务数据和当前的节点位置信息 一并发送至命名节点,这样命名节点便能获得整个系统中保存的任务数据及其缓存节点位 置信息。调度器以如下方式工作当一个任务初始化的时候,任务调度器获得命名节点中的 缓存位置信息从而确定该任务各个子作业输入数据的可能缓存位置;在调度子作业的时候 任务调度器将优先将子作业指派到缓存有输入数据的节点执行。通过上述改进的任务调度机制,当数据缓存在工作节点之后,需要相同数据的后 续作业将被任务调度器调度到缓存有所需数据的节点上执行,从而最大化地提高缓存的命 中率。图3详述了缓存服务器和缓存客户端之间的主要工作流程及协作细节。缓存服务 器首先初始化共享内存中的中央控制数据结构,并且创建用以响应数据请求的工作线程。 缓存服务器和缓存客户端通过操作该控制结构进行通讯。当需要从分布式文件系统读取数 据的时候,缓存客户端会将控制结构的状态置为“请求”,并通过信号量通知工作线程;工作 线程则会周期性地检查控制结构的状态,如果没有发现新的请求,工作线程会进入休眠状 态继续等待下个请求。如果发现有新的请求且缓存不命中,也即缓存中目前不包含请求的 数据,工作线程会分配一块对应的缓存块用以从分布式文件系统中加载数据,并将控制结 构的状态置为“服务中”以通知缓存客户端已开始服务请求。这时缓存客户端可以在工作 线程加载数据的同时读取当前已加载的数据。如果新的请求缓存命中,即缓存中包含请求 的数据,那么工作线程只需将控制结构的状态置为“完成”,缓存客户端可以直接从相应的 缓存块中读取请求的数据。在完成响应一个数据请求之后,工作线程会回到最初的检查请 求阶段,并重新开始上述的过程。本发明的有益效果是,实现了高效的跨任务数据缓存,提高对相同数据进行多次 访问的速度,并有效地减少网络通信量,同时保留了原有系统的有益特征。本发明提出的缓 存机制对系统用户透明,用户无需改动映射/规约程序源代码。
权利要求
1.一种在分布式网络系统中处理跨任务数据的方法,其特征在于,该方法包括从主节 点和多个从节点的网络系统中处理跨任务数据。
2.根据权利要求1所述的方法,其特征在于,所述方法在从节点上实施的步骤包括 -提供每一从节点一个对应的缓存;-将在从节点执行的当前任务的数据保存于所述对应的缓存中; -产生一包含关于保存数据及其节点位置信息的消息,并将所述消息发送给主节点; -在网络中的任一从节点请求执行一后续任务,且该后续任务所需要的数据与先前被 保存的数据相同时,响应于主节点的调度指令,用先前保存的相同数据执行该后续的任务。
3.根据权利要求1所述的方法,其特征在于,所述方法在主节点上实施的步骤包括-接收来自从节点的包含关于其所保存的执行当前任务的数据及其节点位置信息的消息;-在网络中的任一从节点请求执行一后续任务,且该后续任务所需要的数据与先前被 保存的数据相同时,产生一调度指令给保存同样数据的从节点,令其用先前保存的相同数 据执行该后续的任务。
全文摘要
本发明属网络信息技术领域,涉及一种用于在包括主节点和多个从节点的网络系统中处理跨任务数据,包括在每一从节点上提供一对应的缓存;将在从节点执行的当前任务的数据保存于对应的缓存中并产生一包含关于保存数据及其节点位置信息的消息,将该消息发送至主节点;在网络中的任一从节点请求执行一后续任务,且该后续任务所需要的数据与先前保存的数据相同时,主节点产生一调度指令给保存同样数据的从节点,令其用先前保存的相同数据执行该后续的任务,从而实现跨任务数据的重复使用,避免从分布式文件系统重复加载相同的数据输入,提高对相同数据的多次访问的速度,并有效减少网络通信量。
文档编号H04L29/08GK102137125SQ20101010175
公开日2011年7月27日 申请日期2010年1月26日 优先权日2010年1月26日
发明者肖之慰, 臧斌宇, 陈海波 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1