CN103336808A - 一种基于bsp模型的实时图数据处理系统及方法 - Google Patents
一种基于bsp模型的实时图数据处理系统及方法 Download PDFInfo
- Publication number
- CN103336808A CN103336808A CN2013102562969A CN201310256296A CN103336808A CN 103336808 A CN103336808 A CN 103336808A CN 2013102562969 A CN2013102562969 A CN 2013102562969A CN 201310256296 A CN201310256296 A CN 201310256296A CN 103336808 A CN103336808 A CN 103336808A
- Authority
- CN
- China
- Prior art keywords
- diagram data
- data
- task
- module
- result
- 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
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于BSP模型的实时图数据处理系统和方法,所述系统包括:数据存储单元用于对图数据预处理,并按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构存储,基于图数据生成作业;图数据查询统计单元用于对图数据进行查询和统计,将数据存储单元生成的作业分解为多个任务,以均衡的方式分发给相应计算节点,再统计每个任务的计算结果,并合并所有任务的计算结果作为最终结果返回给用户;图数据分析处理单元用于使各计算节点通过迭代计算执行分解出的任务,并通过消息传递实现每次迭代计算的同步,并输出任务的计算结果。所述方法基于该系统实现实时图数据处理,均具有访问高效、保持集群负载均衡、加速BSP模型执行效率等优点。
Description
技术领域
本发明涉及大规模图数据处理领域,特别是涉及一种基于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。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于BSP模型的实时图数据处理系统,其特征在于,包括相互通信的数据存储单元(1)、图数据查询统计单元(2)和图数据分析处理单元(3):
数据存储单元(1),其用于对图数据进行预处理,并将预处理后的图数据按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构进行存储,并基于图数据生成作业;
图数据查询统计单元(2),其用于对所述数据存储单元(1)的图数据进行查询和统计,将所述数据存储单元(1)生成的作业分解为多个任务,并将分解的任务以均衡的方式分发给相应计算节点,再统计每个任务的计算结果,并合并所有任务的计算结果作为最终结果返回给用户;
图数据分析处理单元(3),其用于使各计算节点通过迭代计算执行所述图数据查询统计单元(2)分解出的任务,并通过消息传递实现每次迭代计算的同步,并输出任务的计算结果至所述图数据查询统计单元(2)。
2.根据权利要求1所述的实时图数据处理系统,其特征在于,所述数据存储单元(1)包括预处理模块(11)、导入模块(12)和存储模块(13);
所述预处理模块(11),其连接所述导入模块(12),用于遍历源数据,并对源数据中的点边关系进行处理,并将处理后的源数据传输给所述导入模块(12);
所述导入模块(12),其连接所述存储模块(13),用于将源数据转化为简单图与超图相结合的图数据格式,并存入所述存储模块(13)中;
所述存储模块(13),其用于按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构存储图数据,并将图数据生成作业传输给所述图数据查询统计单元。
3.根据权利要求1所述的实时图数据处理系统,其特征在于,所述图数据查询统计单元(2)包括作业分解模块(21)和作业合并模块(22);
所述作业分解模块(21),其用于将所述数据存储单元生成的作业分解为多个任务,并将分解的任务以均衡的方式分发给相应计算节点执行,实现每个计算节点上的负载均衡;
所述作业合并模块(22),其用于统计每个任务的计算结果,并合并所有任务的计算结果作为最终结果。
4.根据权利要求1所述的实时图数据处理系统,其特征在于,所述图数据分析处理单元(3)包括计算模块(31)、通讯模块(32)和输出模块(33);
所述计算模块(31),其连接所述通讯模块(32),用于通过迭代算法计算各节点范畴内的图数据,并通过消息传递实现每次迭代计算的同步,再将计算结果传输给该节点对应的通讯模块(32);
所述通讯模块(32),其连接所述计算模块(31),用于将计算结果传送给其余节点的计算模块(31)重新进行计算;
所述输出模块(33),其连接所述计算模块(31),用于输出最终的计算结果。
5.根据权利要求1或4所述的实时图数据处理系统,其特征在于,所述图数据分析处理单元还包括消息传递同步机制,其用于通过消息传递实现每次迭代计算的同步。
6.一种基于BSP模型的实时图数据处理方法,其特征在于,包括:
步骤1,预处理图数据,并将预处理后的图数据按“内存存储—分布式内存存储—分布式文件系统”的三层存储结构进行存储,再基于图数据生成作业;
步骤2,查询和统计存储的图数据,将生成的作业分解为多个任务,并将分解的任务以均衡的方式分发给相应计算节点进行计算;
步骤3,各计算节点通过迭代计算执行分解出的任务,并通过消息传递实现每次迭代计算的同步,并输出每个任务的计算结果;
步骤4,统计每个任务的计算结果,并合并所有任务的计算结果作为最终结果返回给用户。
7.根据权利要求6所述的实时图数据处理方法,其特征在于,所述步骤1中预处理图数据具体包括:
步骤11,遍历数据集;
步骤12,将其中两两相连的图节点提取出来;
步骤13,将步骤12中提取出来的节点组成一个超边;
步骤14,调整该超边与其他图节点之间的关系。
8.根据权利要求6所述的实时图数据处理方法,其特征在于,所述步骤1中还包括:对预处理后的图数据按照区域划分的方式进行切割。
9.根据权利要求6所述的实时图数据处理方法,其特征在于,所述步骤3中各计算节点通过迭代计算执行分解出的任务具体包括:
步骤3A1,每个计算节点获取属于自己范围内的图数据;
步骤3A2,每个计算节点按照用户自定义的算子计算;
步骤3A3,每个计算节点将计算结果发送给与自己相邻的其他节点;
步骤3A4,计算节点接收到相邻节点发送过来的数据后,再次计算,然后将计算结果发送给自己的相邻节点;
步骤3A5,重复步骤3A4,直到得到计算结果或者达到预先设定的迭代次数为止。
10.根据权利要求6所述的实时图数据处理方法,其特征在于,所述步骤3中通过消息传递实现每次迭代计算的同步具体包括:
步骤3B1,在生成图数据时,记录图数据的点边联系,作为控制消息,并基于控制消息生成任务拓扑结构;
步骤3B2,任务源向任务终点发送控制消息,任务终点对控制消息进行匹配;
步骤3B3,根据任务终点对控制消息的匹配结果,任务源向相应的任务终点发送数据消息;
步骤3B4,控制消息和数据消息接收完全后,进入下一个迭代过程;
步骤3B5,根据上次迭代中终结的顶点,提取出与这些顶点连接的其他任务的顶点,并用上次迭代的控制消息减去这些顶点,形成新的控制消息;
步骤3B6,根据新的控制消息,重复步骤3B2至步骤3B5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310256296.9A CN103336808B (zh) | 2013-06-25 | 2013-06-25 | 一种基于bsp模型的实时图数据处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310256296.9A CN103336808B (zh) | 2013-06-25 | 2013-06-25 | 一种基于bsp模型的实时图数据处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336808A true CN103336808A (zh) | 2013-10-02 |
CN103336808B CN103336808B (zh) | 2017-12-15 |
Family
ID=49244973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310256296.9A Active CN103336808B (zh) | 2013-06-25 | 2013-06-25 | 一种基于bsp模型的实时图数据处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336808B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593433A (zh) * | 2013-11-12 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向海量时序数据的图数据处理方法及系统 |
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
CN103885856A (zh) * | 2014-03-10 | 2014-06-25 | 北京大学 | 一种基于消息再生机制的图计算容错方法及系统 |
CN104834709A (zh) * | 2015-04-29 | 2015-08-12 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN104935523A (zh) * | 2014-03-21 | 2015-09-23 | 中国移动通信集团公司 | 一种负载均衡的处理方法和设备 |
CN106294757A (zh) * | 2016-08-11 | 2017-01-04 | 上海交通大学 | 一种基于超图划分的分布式数据库及其集群分区方法 |
CN106325756A (zh) * | 2015-06-15 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 一种数据存储、数据计算方法和设备 |
CN106611037A (zh) * | 2016-09-12 | 2017-05-03 | 星环信息科技(上海)有限公司 | 用于分布式图计算的方法与设备 |
CN107807983A (zh) * | 2017-10-30 | 2018-03-16 | 辽宁大学 | 一种支持大规模动态图数据查询的并行处理框架及设计方法 |
CN107943918A (zh) * | 2017-11-20 | 2018-04-20 | 合肥亚慕信息科技有限公司 | 一种基于层次化大规模图数据的运算系统 |
CN108073620A (zh) * | 2016-11-14 | 2018-05-25 | 北京航天长峰科技工业集团有限公司 | 一种基于图数据结构的快速检索方法 |
CN110222533A (zh) * | 2019-06-17 | 2019-09-10 | 英联(厦门)智能数据有限公司 | 分布式数据安全应用方法、系统及电子设备 |
CN110263225A (zh) * | 2019-05-07 | 2019-09-20 | 南京智慧图谱信息技术有限公司 | 一种千亿级知识图库的数据加载、管理、检索系统 |
CN110427359A (zh) * | 2019-06-27 | 2019-11-08 | 苏州浪潮智能科技有限公司 | 一种图数据处理方法和装置 |
WO2020019314A1 (zh) * | 2018-07-27 | 2020-01-30 | 浙江天猫技术有限公司 | 一种图数据存储方法、系统及电子设备 |
CN110941741A (zh) * | 2018-09-21 | 2020-03-31 | 百度在线网络技术(北京)有限公司 | 图数据的路径检索处理方法、装置、服务器及存储介质 |
CN111177486A (zh) * | 2019-12-19 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种分布式图计算过程中的消息传递方法和装置 |
CN111400555A (zh) * | 2020-03-05 | 2020-07-10 | 湖南大学 | 图数据查询任务处理方法、装置、计算机设备和存储介质 |
CN111708923A (zh) * | 2020-06-24 | 2020-09-25 | 北京松鼠山科技有限公司 | 一种确定图数据存储结构的方法和装置 |
CN112637067A (zh) * | 2020-12-28 | 2021-04-09 | 北京明略软件系统有限公司 | 基于模拟网络广播的图并行计算系统和方法 |
CN112631771A (zh) * | 2020-12-18 | 2021-04-09 | 江苏康融科技有限公司 | 一种大数据系统的并行处理方法 |
CN113900786A (zh) * | 2021-10-11 | 2022-01-07 | 国网电子商务有限公司 | 一种基于图数据的分布式计算方法及装置 |
CN115391341A (zh) * | 2022-08-23 | 2022-11-25 | 抖音视界有限公司 | 分布式图数据处理系统、方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011127158A8 (en) * | 2010-04-06 | 2012-11-22 | Justone Database, Inc. | Data storage and/or retrieval based on a database model-agnostic, schema-agnostic and workload-agnostic data storage and access models |
CN103136337A (zh) * | 2013-02-01 | 2013-06-05 | 北京邮电大学 | 用于复杂网络的分布式知识数据挖掘装置和挖掘方法 |
-
2013
- 2013-06-25 CN CN201310256296.9A patent/CN103336808B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011127158A8 (en) * | 2010-04-06 | 2012-11-22 | Justone Database, Inc. | Data storage and/or retrieval based on a database model-agnostic, schema-agnostic and workload-agnostic data storage and access models |
CN103136337A (zh) * | 2013-02-01 | 2013-06-05 | 北京邮电大学 | 用于复杂网络的分布式知识数据挖掘装置和挖掘方法 |
Non-Patent Citations (1)
Title |
---|
潘巍等: "基于消息传递机制的MapReduce图算法研究", 《计算机学报》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
CN103593433B (zh) * | 2013-11-12 | 2016-11-02 | 中国科学院信息工程研究所 | 一种面向海量时序数据的图数据处理方法及系统 |
CN103593433A (zh) * | 2013-11-12 | 2014-02-19 | 中国科学院信息工程研究所 | 一种面向海量时序数据的图数据处理方法及系统 |
CN103885856A (zh) * | 2014-03-10 | 2014-06-25 | 北京大学 | 一种基于消息再生机制的图计算容错方法及系统 |
CN103885856B (zh) * | 2014-03-10 | 2017-01-25 | 北京大学 | 一种基于消息再生机制的图计算容错方法及系统 |
CN104935523B (zh) * | 2014-03-21 | 2018-06-15 | 中国移动通信集团公司 | 一种负载均衡的处理方法和设备 |
CN104935523A (zh) * | 2014-03-21 | 2015-09-23 | 中国移动通信集团公司 | 一种负载均衡的处理方法和设备 |
CN104834709A (zh) * | 2015-04-29 | 2015-08-12 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN104834709B (zh) * | 2015-04-29 | 2018-07-31 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN106325756A (zh) * | 2015-06-15 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 一种数据存储、数据计算方法和设备 |
CN106325756B (zh) * | 2015-06-15 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 一种数据存储、数据计算方法和设备 |
CN106294757B (zh) * | 2016-08-11 | 2019-09-10 | 上海交通大学 | 一种基于超图划分的分布式数据库及其集群分区方法 |
CN106294757A (zh) * | 2016-08-11 | 2017-01-04 | 上海交通大学 | 一种基于超图划分的分布式数据库及其集群分区方法 |
CN106611037A (zh) * | 2016-09-12 | 2017-05-03 | 星环信息科技(上海)有限公司 | 用于分布式图计算的方法与设备 |
CN108073620A (zh) * | 2016-11-14 | 2018-05-25 | 北京航天长峰科技工业集团有限公司 | 一种基于图数据结构的快速检索方法 |
CN107807983A (zh) * | 2017-10-30 | 2018-03-16 | 辽宁大学 | 一种支持大规模动态图数据查询的并行处理框架及设计方法 |
CN107943918A (zh) * | 2017-11-20 | 2018-04-20 | 合肥亚慕信息科技有限公司 | 一种基于层次化大规模图数据的运算系统 |
CN107943918B (zh) * | 2017-11-20 | 2021-09-07 | 合肥亚慕信息科技有限公司 | 一种基于层次化大规模图数据的运算系统 |
WO2020019314A1 (zh) * | 2018-07-27 | 2020-01-30 | 浙江天猫技术有限公司 | 一种图数据存储方法、系统及电子设备 |
CN110941741A (zh) * | 2018-09-21 | 2020-03-31 | 百度在线网络技术(北京)有限公司 | 图数据的路径检索处理方法、装置、服务器及存储介质 |
CN110263225A (zh) * | 2019-05-07 | 2019-09-20 | 南京智慧图谱信息技术有限公司 | 一种千亿级知识图库的数据加载、管理、检索系统 |
CN110222533A (zh) * | 2019-06-17 | 2019-09-10 | 英联(厦门)智能数据有限公司 | 分布式数据安全应用方法、系统及电子设备 |
CN110222533B (zh) * | 2019-06-17 | 2021-08-13 | 英联(厦门)金融技术服务股份有限公司 | 分布式数据安全应用方法、系统及电子设备 |
CN110427359A (zh) * | 2019-06-27 | 2019-11-08 | 苏州浪潮智能科技有限公司 | 一种图数据处理方法和装置 |
CN111177486A (zh) * | 2019-12-19 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种分布式图计算过程中的消息传递方法和装置 |
CN111400555A (zh) * | 2020-03-05 | 2020-07-10 | 湖南大学 | 图数据查询任务处理方法、装置、计算机设备和存储介质 |
CN111400555B (zh) * | 2020-03-05 | 2023-09-26 | 湖南大学 | 图数据查询任务处理方法、装置、计算机设备和存储介质 |
CN111708923A (zh) * | 2020-06-24 | 2020-09-25 | 北京松鼠山科技有限公司 | 一种确定图数据存储结构的方法和装置 |
CN112631771A (zh) * | 2020-12-18 | 2021-04-09 | 江苏康融科技有限公司 | 一种大数据系统的并行处理方法 |
CN112631771B (zh) * | 2020-12-18 | 2021-11-16 | 北京合思信息技术有限公司 | 一种大数据系统的并行处理方法 |
CN112637067A (zh) * | 2020-12-28 | 2021-04-09 | 北京明略软件系统有限公司 | 基于模拟网络广播的图并行计算系统和方法 |
CN113900786A (zh) * | 2021-10-11 | 2022-01-07 | 国网电子商务有限公司 | 一种基于图数据的分布式计算方法及装置 |
CN115391341A (zh) * | 2022-08-23 | 2022-11-25 | 抖音视界有限公司 | 分布式图数据处理系统、方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103336808B (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336808A (zh) | 一种基于bsp模型的实时图数据处理系统及方法 | |
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
Ji et al. | Big data processing: Big challenges and opportunities | |
CN107679192A (zh) | 多集群协同数据处理方法、系统、存储介质及设备 | |
Yang et al. | Huge: An efficient and scalable subgraph enumeration system | |
CN105550268A (zh) | 大数据流程建模分析引擎 | |
CN102917009B (zh) | 一种基于云计算技术的股票数据采集和存储方法和系统 | |
Essa et al. | Mobile agent based new framework for improving big data analysis | |
CN102222174A (zh) | 一种基因计算系统和方法 | |
Krause et al. | Implementing graph transformations in the bulk synchronous parallel model | |
CN101256599B (zh) | 基于网格的分布仿真平台数据收集系统 | |
CN103425746A (zh) | 基于fpga的实时金融指数行情并行计算方法 | |
CN103207920A (zh) | 一种元数据并行采集系统 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN103593433A (zh) | 一种面向海量时序数据的图数据处理方法及系统 | |
CN102137125A (zh) | 在分布式网络系统中处理跨任务数据的方法 | |
CN103455633A (zh) | 一种海量网络发票明细数据分布式分析方法 | |
CN104239555A (zh) | 基于mpp的并行数据挖掘架构及其方法 | |
CN107807983A (zh) | 一种支持大规模动态图数据查询的并行处理框架及设计方法 | |
CN111475837B (zh) | 一种网络大数据隐私保护方法 | |
CN103106261A (zh) | 基于窄带云数据服务的分布式查询方法 | |
Theeten et al. | Chive: Bandwidth optimized continuous querying in distributed clouds | |
CN102724290B (zh) | 一种获取目标客户群的方法、设备及系统 | |
Wang et al. | A BSP-based parallel iterative processing system with multiple partition strategies for big graphs | |
CN107168795A (zh) | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
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 |