首页> 中国专利> 一种基于BSP模型的实时图数据处理系统及方法

一种基于BSP模型的实时图数据处理系统及方法

摘要

本发明涉及一种基于BSP模型的实时图数据处理系统和方法,所述系统包括:数据存储单元用于对图数据预处理,并按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构存储,基于图数据生成作业;图数据查询统计单元用于对图数据进行查询和统计,将数据存储单元生成的作业分解为多个任务,以均衡的方式分发给相应计算节点,再统计每个任务的计算结果,并合并所有任务的计算结果作为最终结果返回给用户;图数据分析处理单元用于使各计算节点通过迭代计算执行分解出的任务,并通过消息传递实现每次迭代计算的同步,并输出任务的计算结果。所述方法基于该系统实现实时图数据处理,均具有访问高效、保持集群负载均衡、加速BSP模型执行效率等优点。

著录项

  • 公开/公告号CN103336808A

    专利类型发明专利

  • 公开/公告日2013-10-02

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201310256296.9

  • 发明设计人 周薇;韩冀中;戴娇;张章;

    申请日2013-06-25

  • 分类号G06F17/30(20060101);

  • 代理机构11212 北京轻创知识产权代理有限公司;

  • 代理人杨立

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2024-02-19 20:16:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-15

    授权

    授权

  • 2013-11-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130625

    实质审查的生效

  • 2013-10-02

    公开

    公开

说明书

技术领域

本发明涉及大规模图数据处理领域,特别是涉及一种基于BSP模型的实 时图数据处理系统及方法。

背景技术

近年来,随着SNS(Social Network Service,社交网络服务)平台的 迅速发展与普及,作为该平台的数据表现方式——图数据也处于信息膨胀的 态势。为了表达更多信息,图数据的表达形式日益复杂,数据量也日益庞大。

与此同时,图数据的数据条数会更加庞大,并且数据与数据之间的联系 更加复杂,数据并不是孤立存在的。因此,图数据的存储就会面临着较大的 挑战。除此之外,如何处理如此大规模的图数据,以达到挖掘隐藏在背后的 信息的目的,也是图数据处理系统应该考虑的问题。

因此,图数据处理面临着许多挑战,总结如下:

图数据组织和存储:图数据是以顶点和边的形式表示的,并且图数据的 特征比较明显,即是数据条数众多。如何存储和组织这些图数据对后续的数 据处理的影响重大,尤其是在图数据处理这种应用场景下,需要多个迭代计 算,每次迭代都需要访问源数据。在图数据平台上,会同时运行多个图处理 作业,那么这些作业与作业之间如何共享原始的图数据也是会直接影响性能 的地方。因此,图数据的组织和存储形式成为现在图数据处理的一个挑战。

图数据查询统计引擎:图数据处理有多种类型,除了最初的图数据分析 之外,也有图数据查询和统计。图数据查询是指查询顶点和边。以公交站牌 系统为例,市民需要查询公交站牌A有哪几趟车或者车B经过哪些公交站牌, 都属于图数据查询的应用。图数据统计是指关于顶点和边的统计信息。如哪 个公交站牌是最忙的(有最多的公交车通过),这些问题都属于图数据统计 的应用。因此,图数据处理的种类比较繁多,为了满足用户的需求,既需要 支持图数据分析,也需要支持查询和统计。综上所述,图数据处理需要一个 高效的统计查询引擎。

实时图数据处理框架:图数据处理对时间的要求越来越高。以前的图数 据处理通常作为后台分析进行,是离线批处理作业。并且由于数据总量小, 所以分析的内容不是很复杂,也不是很频繁。但是,随着互联网和SNS平台 的发展,图数据呈指数级增长,这些海量数据底下隐藏的信息也会更加丰富, 图数据处理也会变得更加复杂和频繁。目前,这些离线批处理作业正在逐步 由后台转向前台,对处理性能提出了实时性的要求。

现有的图数据处理的解决方案中,主要倾向于两种:MapReduce和BSP 模型。但是MapReduce是为离线批处理作业设计的,而BSP模型是处理迭代 计算的,每次迭代之间使用一个同步过程,该同步过程使得处理效率急剧下 降。综上所得,现有的这两种解决方案不适合进行在线图数据处理。为此, 需要一个在线图数据处理系统能够解决以上问题。

发明内容

本发明所要解决的技术问题是提供一种基于BSP模型的实时图数据处理 系统及方法,用于解决现有图数据处理技术中存在的存储结构不合理、统计 查询效率低、不满足实时性要求及处理效率低等问题。

本发明解决上述技术问题的技术方案如下:一种基于BSP模型的实时图 数据处理系统,包括相互通信的数据存储单元、图数据查询统计单元和图数 据分析处理单元:

数据存储单元,其用于对图数据进行预处理,并将预处理后的图数据按 “内存存储—分布式内存存储—分布式文件系统”的三层存储结构进行存 储,并基于图数据生成作业;

图数据查询统计单元,其用于对所述数据存储单元的图数据进行查询和 统计,将所述数据存储单元生成的作业分解为多个任务,并将分解的任务以 均衡的方式分发给相应计算节点,再统计每个任务的计算结果,并合并所有 任务的计算结果作为最终结果返回给用户;

图数据分析处理单元,其用于使各计算节点通过迭代计算执行所述图数 据查询统计单元分解出的任务,并通过消息传递实现每次迭代计算的同步, 并输出任务的计算结果至所述图数据查询统计单元。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述数据存储单元包括预处理模块、导入模块和存储模块;

所述预处理模块,其连接所述导入模块,用于遍历源数据,并对源数据 中的点边关系进行处理,并将处理后的源数据传输给所述导入模块;

所述导入模块,其连接所述存储模块,用于将源数据转化为简单图与超 图相结合的图数据格式,并存入所述存储模块中;

所述存储模块,其用于按“内存存储—分布式内存存储—分布式文件系 统”的三层存储结构存储图数据,并将图数据生成作业传输给所述图数据查 询统计单元。

进一步,所述图数据查询统计单元包括作业分解模块和作业合并模块;

所述作业分解模块,其用于将所述数据存储单元生成的作业分解为多个 任务,并将分解的任务以均衡的方式分发给相应计算节点执行,实现每个计 算节点上的负载均衡;

所述作业合并模块,其用于统计每个任务的计算结果,并合并所有任务 的计算结果作为最终结果。

进一步,所述图数据分析处理单元包括计算模块、通讯模块和输出模块;

所述计算模块,其连接所述通讯模块,用于通过迭代算法计算各节点范 畴内的图数据,并通过消息传递实现每次迭代计算的同步,再将计算结果传 输给该节点对应的通讯模块;

所述通讯模块,其连接所述计算模块,用于将计算结果传送给其余节点 的计算模块重新进行计算;

所述输出模块,其连接所述计算模块,用于输出最终的计算结果。

进一步,所述图数据分析处理单元还包括消息传递同步机制,其用于通 过消息传递实现每次迭代计算的同步。

对应上述系统,本发明的技术方案还包括一种基于BSP模型的实时图数 据处理方法,其包括:

步骤1,预处理图数据,并将预处理后的图数据按“内存存储—分布式 内存存储—分布式文件系统”的三层存储结构进行存储,再基于图数据生成 作业;

步骤2,查询和统计存储的图数据,将生成的作业分解为多个任务,并 将分解的任务以均衡的方式分发给相应计算节点进行计算;

步骤3,各计算节点通过迭代计算执行分解出的任务,并通过消息传递 实现每次迭代计算的同步,并输出每个任务的计算结果;

步骤4,统计每个任务的计算结果,并合并所有任务的计算结果作为最 终结果返回给用户。

进一步,所述步骤1中预处理图数据具体包括:

步骤11,遍历数据集;

步骤12,将其中两两相连的图节点提取出来;

步骤13,将步骤12中提取出来的节点组成一个超边;

步骤14,调整该超边与其他图节点之间的关系。

进一步,所述步骤1中还包括:对预处理后的图数据按照区域划分的方 式进行切割。

进一步,所述步骤3中各计算节点通过迭代计算执行分解出的任务具体 包括:

步骤3A1,每个计算节点获取属于自己范围内的图数据;

步骤3A2,每个计算节点按照用户自定义的算子计算;

步骤3A3,每个计算节点将计算结果发送给与自己相邻的其他节点;

步骤3A4,计算节点接收到相邻节点发送过来的数据后,再次计算,然 后将计算结果发送给自己的相邻节点;

步骤3A5,重复步骤3A4,直到得到计算结果或者达到迭代次数为止。

进一步,所述步骤3中通过消息传递实现每次迭代计算的同步具体包括:

步骤3B1,在生成图数据时,记录图数据的点边联系,作为控制消息, 并基于控制消息生成任务拓扑结构;

步骤3B2,任务源向任务终点发送控制消息,任务终点对控制消息进行 匹配;

步骤3B3,根据任务终点对控制消息的匹配结果,任务源向相应的任务 终点发送数据消息;

步骤3B4,控制消息和数据消息接收完全后,进入下一个迭代过程;

步骤3B5,根据上次迭代中终结的顶点,提取出与这些顶点连接的其他 任务的顶点,并用上次迭代的控制消息减去这些顶点,形成新的控制消息;

步骤3B6,根据新的控制消息,重复步骤3B2至步骤3B5。

本发明的有益效果是:本发明通过分析图数据的特征和总量,设计了图 数据存储的形式,提出了使用三层存储结构存储图数据以达到加快图数据访 问性能的目的。通过使用均衡的查询统计引擎,将作业分解成多个小任务执 行,以平衡整个集群系统的负载。通过使用消息传递同步机制(消息通信中 间件)取消了BSP模型中的同步过程,并且从而加速了图数据处理的速度。 所述方法与系统具有访问高效,保持集群负载均衡,加速BSP模型执行效率 等优点,具体包括以下几点:

一、设计和实现了一种高性能的图数据组织和存储形式。通过“三级存 储”的方式来支持图数据的共享和查找,保持图数据的局部性,能够为上层 的图数据处理提供更高效的数据支持。

二、提出了一种用于图数据统计的“分而治之”的高效查询引擎。通过 对统计操作的分解,可以尽可能的平衡整个集群的负载,通过集群的并行能 力来提升图数据统计的性能。

三、提出了一种高效的BSP模型实现策略,该策略取消了每次迭代之间 的同步过程,通过节点与节点之间的消息通讯来达到BSP模型中“大同步” 的效果。这样不仅使得每次迭代不需要与主节点通信,减轻主节点的压力, 而且从节点的执行不用受限于主节点,更加灵活自由。

附图说明

图1为本发明所述基于BSP模型的实时图数据处理系统的结构示意图;

图2为本发明实施例中所述三级存储结构的示意图;

图3为本发明实施例中所述负载均衡的示例图;

图4为本发明实施例中任务分配后的示例图;

图5为本发明所述基于BSP模型的实时图数据处理方法的流程示意图;

图6为本发明实施例中进行预处理图数据的流程示意图;

图7为本发明实施例中进行迭代计算的流程示意图;

图8为本发明实施例中通过消息传递实现迭代计算同步的流程示意图;

图9为本发明实施例中图数据划分的示例图;

图10为本发明实施例中提供的迭代过程中控制消息的示例图。

附图中,各标号所代表的部件列表如下:

1、数据存储单元,2、图数据查询统计单元,3、图数据分析处理单元, 11、预处理模块,12、导入模块,13、存储模块,21、作业分解模块,22、 作业合并模块,31、计算模块,32、通讯模块,33、输出模块。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本 发明,并非用于限定本发明的范围。

现有图数据处理系统中一般包括三个层次:

第一个层次是数据存储层,该层主要负责存储图数据,同时提供高效的 并发访问接口,为图数据处理提供强大的存储支持。

第二个层次是图数据统计查询层,该层主要是负责响应用户的查询统计 请求,这些作业的特点是只会访问一次图数据,但是访问的数据总量与作业 的大小直接相关。所以,当集群系统运行多个作业时,涉及到整个系统的负 载均衡问题。

第三个层次是图数据分析处理,该层主要负责响应用户的图数据处理请 求,这些作业的特点是作业执行的过程中,有十几次甚至几十次迭代计算, 每次迭代计算都需要访问原始数据。每次迭代之间的“同步”过程是通过消 息传输中间件控制的,所以极大的降低了原始BSP模型中主控节点的压力。

如图1所示,实施例一针对上述三个层次存在的问题,对三个层次的功 能及结构进行了改进,提出了一种基于BSP模型的实时图数据处理系统,具 体如下:

(1)数据存储单元1,其用于对图数据进行预处理,并将预处理后的图 数据按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构进 行存储,并基于图数据生成作业。

所述数据存储单元1又包括预处理模块11、导入模块12和存储模块13, 其功能与具体结构如下:

所述预处理模块11,其连接所述导入模块12,用于遍历源数据,并对 源数据中的点边关系进行处理,并将处理后的源数据传输给所述导入模块 12。这是因为原始数据文件不能直接导入到图计算平台的数据存储单元,所 以要先进行预处理。

所述导入模块12,其连接所述存储模块13,用于将源数据转化为简单 图与超图相结合的图数据格式,并存入所述存储模块13中。

所述存储模块13,其用于按“内存存储—分布式内存存储—分布式文件 系统”的三层存储结构存储图数据,并将图数据生成作业传输给所述图数据 查询统计单元。该存储格式结合了简单图和超图的优势,把简单图中的简单 边扩展成超边。

(2)图数据查询统计单元2,其用于对所述数据存储单元的图数据进行 查询和统计,将所述数据存储单元生成的作业分解为多个任务,并将分解的 任务以均衡的方式分发给相应计算节点,再统计每个任务的计算结果,并合 并所有任务的计算结果作为最终结果返回给用户。

所述图数据查询统计单元2包括作业分解模块21和作业合并模块22;

所述作业分解模块21,其用于将所述数据存储单元生成的作业分解为多 个任务,并将分解的任务以均衡的方式分发给相应计算节点执行,实现每个 计算节点上的负载均衡;

所述作业合并模块22,其用于统计每个任务的计算结果,并合并所有任 务的计算结果作为最终结果。

(3)图数据分析处理单元3,其用于使各计算节点通过迭代计算执行所 述图数据查询统计单元分解出的任务,并通过消息传递实现每次迭代计算的 同步,并输出最终的计算结果。

所述图数据分析处理单元3又包括计算模块31、通讯模块32和输出模 块33,其具体结构与功能如下所述:

所述计算模块31,其连接所述通讯模块32,用于通过迭代算法计算各 节点范畴内的图数据,并通过消息传递实现每次迭代计算的同步,再将计算 结果传输给该节点对应的通讯模块32;

所述通讯模块32,其连接所述计算模块31,用于将计算结果传送给其 余节点的计算模块重新进行计算;

所述输出模块33,其连接所述计算模块31,用于输出最终的计算结果。

另外,所述图数据分析处理单元还包括消息传递同步机制,其用于通过 消息传递实现每次迭代计算的同步。

结合背景技术及上述技术方案,可知本实施例主要有三个突出的特点:

一、三层的存储结构

现有的存储结构主要有分布式文件系统、本地文件系统、内存存储和分 布式内存存储这四种,其具体意义如下。

分布式文件系统:Pregel系统,Hama系统都是采用分布式文件系统存 储的。将图数据最终以文件的形式存储下来,放在分布式文件系统中。该分 布式文件系统可以做到很好的容错,保证数据的完整性,同时也支持跨机访 问,可以做分布式的图数据管理。但是该种存储方式影响了数据读取和存储 的性能。

本地文件系统:为了提升图数据处理方法的性能,可以将分布式文件系 统存储转化成本地文件系统存储。该方法虽然提升了性能,但是不同机器之 间进行数据交互就会变得很麻烦,需要有一个中间层来支持。如此,给上层 进行分布式图数据处理开发带来了挑战。

内存存储:为了进一步改进读取图数据的性能,将图数据从本地文件系 统迁移到内存中存储,如此,可以提供快速的数据访问和存储。但是,面临 的问题是数据的持久化,如果存在内存中,当出现宕机,内存中的数据就会 丢失。因此,内存数据的持久化显得尤其重要。同时,存储在本地内存中, 进行单机版的图数据处理会取得性能上的优势。但是,如果进行分布式的图 数据处理,就会存在内存数据迁移的问题。现在的通用做法是进行内存数据 发送。这与本地文件系统的方案相似,也需要一个中间层来支持,可以达到 图数据处理的透明访问。

分布式内存存储:分布式内存存储可以解决中间层的问题。但是数据持 久化的问题还是避免不了。目前比较通用的做法是两种,一种是做Snapshot (快照),一种是写Log(日志)。这两种方式都各有利弊,快照方式的开销 代价小,不用一直运行。但是有可能会丢失一部分数据,假设做快照的周期 是2s一次,当系统运行在第3秒的时候宕机,那么第2秒到第3秒之间的 内存数据就会丢失。写Log方式开销比较大,每当有数据更新时,就需要写 一次Log。但是,它能保证数据的完整性。这两种方式的选择需要根据具体 的应用情况来定。如果对响应速度要求较高,就使用快照的方式;如果对数 据要求较高,就使用Log方式。

本实施例中,考虑到图应用的特殊性,即每次迭代都需要访问全部或者 部分源数据,采用分布式内存进行存储。但是图数据处理平台是面向多作业 的,整个系统同时会运行许多作业,并且每个作业访问的源数据都是统一的。 因此,为了更好的利用图应用的这一特性,本实施例中采用了“内存存储— 分布式内存存储—分布式文件系统”这三级存储结构,其架构如图2所示。

第一层:内存存储。将最原始的图数据(顶点和边)通过图分割算法分 割成许多小块,每个小块定义为一个Block(块),这些Block在全局是唯一 的。

第二层:分布式内存存储。为了给运行时环境中的Block提供一个统一 的访问平台,设立了中间层Cache,Cache用来缓存最近使用的Block。图数 据的应用中也具有局部性的特点,因此,中间设立一个分布式内存存储是比 较必要的。

第三层:分布式文件系统。为了保证数据的可靠性,Arbor将最原始的 数据保存在分布式文件系统中。现在采用的是Hadoop File System(HDFS) 作为其存储层,HDFS将分布式内存存储中的数据存储起来。

二、均衡的查询统计引擎

以具体的图应用为例,主要的实施过程如下:

(一)、作业分解

作业的分解是主节点服务器(以下用Master表示)依据现在集群的运 行环境将作业分成多个任务,然后把每个任务发送到相应的从节点服务器 (以下用Slave表示)执行。

作业的分解需要考虑的主要问题是任务的负载均衡,同时这种均衡性需 要与整个集群系统中每个Slave的负载结合起来。

针对这种特殊情况,本实施例设计了一种负载均衡的方式“分级负载”。 “分级负载”的主旨思想是维护每个Slave的负载状况,根据它们的负载(CPU 和内存)将每个Slave分级,Slave的负载总共分成m级。假设该统计作业 总共是分成了n份均衡的统计任务,那么现在作业负载均衡的分解就是把n 个任务如何分配到负载各不同的Slave上,以保证每个Slave的负载都均衡, 同时作业能快速的执行完。

如图3所示,假设总共有四个Slave,其中每个Slave的负载情况如上 所示。第一个Slave的负载为4,第二个为2,第三个的负载较轻,是1,第 四个的负载为3。而客户端提交的统计作业被分成了五份,那么这五份统计 任务就会分配到这四个Slave上。如上图所示,分配时是以负载均衡为原则 的,Slave1的负载较重,就不分配,而Slave2和Slave3的负载较轻,就分 配两个统计任务。待任务分配之后,每个Slave的负载就有可能会转化为如 下形式。如图4所示,Slave1,Slave2和Slave4的负载都是4,而Slave3 的是3。这四台Slave的负载基本均衡。

(二)、作业合并

作业合并是指每个统计任务将统计结果通过Arbor的通信中间件发送给 Master,然后由Master做统一汇总。Master汇总后的结果就作为最终结果 返回给用户。举例说明,统计“微博上最火的人”。

如图4所示,该统计作业分成5个统计任务。每个任务都负责一部分顶 点,计算出这些顶点中边数最多的顶点,然后将这个顶点返回Master。那么 Master总共会收到5个顶点,然后Master需要将这五个顶点做一次求最大 操作(连接边数最多的顶点)。最大的那个顶点就是最终的结果,直接返回 给用户即可。

三、通过消息传递实现每次迭代计算的同步

通过使用消息中间件来代替“大同步”过程以及优化数据传输过程,尽 量减少不必要的消息传输,来达到实时图数据处理的目的,降低处理延迟。

如图5所示,对应上述基于BSP模型的实时图数据系统,本实施例的具 体实施方案如下:

步骤1,预处理图数据,并将预处理后的图数据按“内存存储—分布式 内存存储—分布式文件系统”的三层存储结构进行存储,再基于图数据生成 作业;

步骤2,查询和统计存储的图数据,将生成的作业分解为多个任务,并 将分解的任务以均衡的方式分发给相应计算节点进行计算;

步骤3,各计算节点通过迭代计算执行分解出的任务,并通过消息传递 实现每次迭代计算的同步,并输出每个任务的计算结果;

步骤4,统计每个任务的计算结果,并合并所有任务的计算结果作为最 终结果返回给用户。

如图6所示,步骤1中的预处理图数据具体包括:

步骤11,遍历数据集;

步骤12,将其中两两相连的图节点提取出来;

步骤13,将步骤12中提取出来的节点组成一个超边;

步骤14,调整该超边与其他图节点之间的关系。

此外,预处理还包括对图数据切割,目前切割方式为按照区域划分,以 保证空间相邻的图节点被分到同一区域。

步骤3中,迭代计算是由计算模块通过多次迭代过程组成的,每次迭代 中每个计算节点按照用户自定义的计算算子计算,计算结束后,由计算节点 将计算的结果发给自己相邻节点,完成一次迭代过程。下一次迭代过程中, 初始数据为源数据和上次计算接受到的数据,按照用户自定义的算子继续计 算。迭代过程一直持续下去,直到得到最终结果。如图7所示,具体包括:

步骤3A1,每个计算节点获取属于自己范围内的图数据;

步骤3A2,每个计算节点按照用户自定义的算子计算;

步骤3A3,每个计算节点将计算结果发送给与自己相邻的其他节点;

步骤3A4,计算节点接收到相邻节点发送过来的数据后,再次计算,然 后将计算结果发送给自己的相邻节点;

步骤3A5,重复步骤3A4,直到得到计算结果或者达到迭代次数为止。

另外,如图8所示,步骤3中通过消息传递实现每次迭代计算的同步具 体包括:

步骤3B1,在生成图数据时,记录图数据的点边联系,作为控制消息, 并基于控制消息生成任务拓扑结构;

步骤3B2,任务源向任务终点发送控制消息,任务终点对控制消息进行 匹配;

步骤3B3,根据任务终点对控制消息的匹配结果,任务源向相应的任务 终点发送数据消息;

步骤3B4,控制消息和数据消息接收完全后,进入下一个迭代过程;

步骤3B5,根据上次迭代中终结的顶点,提取出与这些顶点连接的其他 任务的顶点,并用上次迭代的控制消息减去这些顶点,形成新的控制消息;

步骤3B6,根据新的控制消息,重复步骤3B2至步骤3B5。

本发明计算模块中由多个计算节点组成,这些计算节点之间有同步过 程,同步之后才能进入到下一个计算周期,在本实施例中,步骤3B1至步骤 3B6中采用消息传递来完成同步进一步细化如下:

1、生成任务拓扑结构

在生成图数据时,对这些图数据进行过滤,检查数据的合法性:顶点集 和边集之间的联系。在生成的过程中,记录顶点和顶点之间的连接的边数。 举例说明:如果“顶点A”和“边1”相连,而“边1”和“顶点B”相连, 那么“顶点A”和“顶点B”之间就有一个联系。将这些联系记录下来,作 为“控制消息”供下一步使用。

在生成作业的过程中,对作业进行划分,将划分后的多个任务分发到 Slave节点上执行。目前采用的任务划分是首先按照用户设定的划分大小将 所有的顶点进行划分,划分成了多个任务,目前的划分策略“Range划分”, 按照顶点的编号进行划分。举例说明:如果总共有10个顶点,划分大小设 为5,那么分成了2个任务,其中第一个任务Task1的顶点范围是1-5,第 二个Task2是6-10,依次类推。

划分任务的同时,将生成图数据时产生的“控制消息”合并。举例说明: 如果划分的Task1和Task2之间的顶点拓扑结构如下:

由图9可知,在Task1中有两个顶点有连接到Task2的边,将这些顶点 的边合并起来,就可得从Task1到Task2的消息数为2,同样的道理,从Task2 到Task1的消息数也为2。那么在生成作业时,可以初始化“控制消息”为 Task1到Task2是2,从Task2到Task1是2。

2、发送控制消息

通过上述步骤得到的“控制消息”,在每个任务启动后就给相应的Task 发送。继续上述例子,在Task1启动后,它就给Task2发送一个消息[1,2, 1,2]。[1,2,1,2]表示Task1给Task2发送消息,消息为2。[任务源, 任务终点,迭代次数,消息数]为控制消息的格式,其中迭代次数是该消息 应该发送给哪一次迭代。

任务终点接收到控制消息后,首先会进行匹配,看任务终点是否与自己 的任务ID匹配,如果匹配,就是属于自己的消息。然后提取出消息数,就 表示自己需要接收来自任务源的所有消息数。然后任务终点的接收线程就会 一直等待任务源发送消息,当接收到的消息条数与该消息数是一致的时候, 就表示消息接收完全了,可以进入下一个迭代过程了。

3、发送数据消息

发送了控制消息后,就可以发送数据消息。数据消息的格式与控制消息 的格式类似,[任务源,任务终点,迭代次数,值]。其中“值”表示任务源 发送给任务终点的“数据”,这个数据可以供任务终点进行下一次迭代计算。 继续以上述例子为例,Task1给Task2发送消息[1,2,1,45],Task2接收 到该消息后,将已接收消息(receivedNum)设为1,但是还不等于控制消息 中包含的2,就继续等待。Task1又给Task2发送了消息[1,2,1,56],Task2 此时可以将receivedNum设为2,和控制消息相等。表明应该接收的消息已 经接收到了,可以进入下一次迭代过程。

4,使用迭代消息控制

在BSP模型的执行过程中,随着迭代次数的增加,有一些顶点已经得到 了最终的计算结果值,就不需要参与迭代过程了,所以控制消息需要根据实 际情况进行更改。

在每次迭代前,根据上次迭代中终结的顶点,提取出与这些顶点连接的 其他Task的顶点,用上次迭代的控制消息减去这些顶点,形成新的控制消 息。举例说明,如图10所示:如果两个顶点得到了最终的结果,那么这两 个顶点就会终止。那么它们发送出去的数据消息也就不存在了。相应的控制 消息也会变成[1,2,2,1]和[2,1,2,1],消息数由原来的2变成了1。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发 明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号