基于MapReduce的复杂网络拓扑特征参数计算方法和系统与流程

文档序号:12622682阅读:271来源:国知局
基于MapReduce的复杂网络拓扑特征参数计算方法和系统与流程
本发明涉及复杂网络,具体地,涉及基于MapReduce的复杂网络拓扑特征参数计算方法和系统。
背景技术
:首先对相关术语进行说明。复杂网络:具有自组织、自相似、吸引子、小世界、无标度中部分或全部性质的网络称为复杂网络。包括现实中的WWW网络、Internet、社会关系网络、经济网络、电力网络等。网络拓扑特征参数:由于网络结构复杂,研究者在刻画复杂网络结构的统计特性上提出了许多概念和方法,称之为网络的拓扑特征参数。主要包括度、聚类系数、网络直径、平均路径长度、最大连通子图大小、核数和介数等。度:节点的度是指该节点拥有相邻节点的数目。聚类系数:节点的聚类系数定义为它所有相邻节点之间连的数目占可能的最大连边数目的比例,网络的聚集系数则是所有节点簇系数的平均值。平均路径长度和网络直径:在网络中,两点间的距离被定义为连接两点的最短路所包含的边的数目,所有节点对的距离的平均值称作网络的平均路径长度。所有节点对的距离的最大值称作网络的直径。最大连通子图大小:网络可能不是完全连通的,通常使用最大连通子图大小来表示网络的连通性。核数:描述网络层次性的参数,一个图的k-核指反复去掉小于或等于k的节点后所剩余的子图。若一个节点存在于k-核,而在(k+1)-核中被移除,那么此节点的核数为k,节点核中的最大值称为网络的核数。介数:节点的介数为网络中所有的最短路径中经过该节点的数量比例。当前研究中,计算网络的拓扑特征参数大多是在单机条件下完成的。由于一些网络拓扑特征参数算法的时间复杂度较高,传统单机条件下的网络拓扑特征参数计算方法在处理大规模网络拓扑数据时存在效率低、内存受限的问题。所以考虑使用Hadoop分布式计算平台来进行计算。Hadoop的实现的MapReduce计算框架为设计分布式算法提供了简单易懂的编程模型。目前,利用Hadoop分布式平台计算网络拓扑特征参数还没有成熟的技术。由于分布式环境的数据存储、数据处理和单机系统存在很大差异,导致传统单机串行图算法向MapReduce计算框架上移植时存在以下问题:1.数据存储和处理方式上不兼容大量的计算拓扑特征参数的算法都需要执行查找或修改邻居节点信息的操作,单机算法中的图结构以邻接表或者邻接矩阵的形式存储在单机内存中,可以在常数时间内查找到邻居节点的存储位置并修改其状态信息。但是在分布式环境中,每个节点信息是以单独一条文本来存储的,查找或修改邻居节点信息都需要遍历整个图文件,效率很低。2.单机算法缺乏并行特性单机算法在设计时并没有考虑到并行特性,所以在单机上串行执行的算法并不一定能在分布式计算平台上高效的运行。例如对网络拓扑图进行遍历的过程,在单机算法中深度优先遍历和宽度优先遍历都是常用的算法。但是同一时刻,宽度优先遍历可以并行访问处于网络同一层的多个节点,而深度优先遍历只能串行访问一个节点,在当前节点未完成访问时不能继续访问下一节点。所以宽度优先遍历算法的并行性要优于深度优先遍历,更适合运行在MapReduce框架中。3.单机算法并行移植时会产生额外的开销MapReduce运行时需要执行启动作业、任务调度、读写磁盘等操作,会产生额外的时间开销。特别地,当图算法中的迭代次数过多时,MapReduce框架需要连续启动若干作业才可以完成图的迭代处理,每个作业都会执行启动作业、任务调度、读写磁盘等操作,尤其是相邻作业之间通过分布式文件系统交换全部数据,产生大量额外开销,导致算法计算效率下降。技术实现要素:针对现有技术中的缺陷,本发明的目的是提供一种基于MapReduce的复杂网络拓扑特征参数计算方法。根据本发明提供的一种基于MapReduce的复杂网络拓扑特征参数计算方法,其特征在于,采用基于消息传递的算法并行化方法;所述基于消息传递的算法并行化方法,包括:步骤1,产生更新消息;每个节点根据本节点的状态信息计算生成更新消息的内容,把邻居节点作为消息的目的节点,将更新消息向目的节点发送;步骤2,传递消息;更新消息按照目的节点被发送给指定的节点;步骤3,更新节点内部状态信息;目的节点收到若干条更新消息,目的节点对这些更新消息进行解析并更新目的节点内部状态信息。优选地,所述步骤1,具体为:步骤1由MapReduce框架中的Map阶段完成,Map阶段的处理方法由用户完成;该Map阶段负责处理每条存储节点信息的文本记录,根据需求产生更新消息键/值对;其中,键是邻居节点id,值是更新消息的内容;所述步骤2,具体为:所述步骤2由MapReduce框架中的partitioner组件自动完成,partitioner组件默认根据hash算法把具有相同键的消息键/值对和节点键/值对划分到一起,使得更新消息达到了传递的效果;所述步骤3,具体为:所述步骤3由MapReduce框架中的Reduce阶段完成,Reduce阶段负责接收上一阶段传递的键/值对,把所有具有相同键的消息键/值对和节点键/值对进行聚合,得到更新后的节点键/值对并输出;Reduce阶段的处理方法由用户根据需求自定义完成的。优选地,采用利用所述基于消息传递的算法并行化方法实现的基于MapReduce的介数方法;所述基于MapReduce的介数方法,包括:步骤S1,所有节点选取自己做为源节点开始计算节点介数;步骤S2,从源节点出发进行宽度优先遍历;步骤S3,回溯求解点对依赖度;步骤S4,累加点对依赖度得到介数。优选地,节点v的介数被定义为:B(v)=Σs≠v≠t∈Vσst(v)σst]]>其中,B(v)表示节点v的介数,σst表示节点s和节点t之间的最短路径条数,σst(v)表示节点s和节点t之间的最短路径中经过节点v的条数;V表示网络节点的集合;所述步骤2包括:从所有源节点同时出发宽度优先遍历其余节点,当访问到当前节点v时,根据下式:σsv=Σu∈Ps(v)σsu]]>计算节点v到源节点s的最短路径的数目,并记录下节点v的前驱节点Ps(v);迭代遍历过程,直到所有节点都被访问到;其中,σsv表示节点s到节点v的最短路径数目,Ps(v)表示节点v以节点s为源的前驱节点,σsu表示节点s到节点u的最短路径数目;所述步骤3包括:从距离源节点最远一层的节点开始回溯,按照下式:δs·(v)=Σw,v∈Ps(w)σsvσsw(1+δs·(w))]]>计算当前层中节点的前驱节点的点对依赖度;不停回溯计算前驱节点的点对依赖度,直到回到源节点,得到源节点对其他所有节点的依赖度;其中,δs·(v)表示节点s对节点v的依赖度,称为点对依赖度;w,v表示网络中的节点;σsw表示节点s到节点w的最短路径数目;δs·(w)表示节点s对节点w的依赖度;所述步骤4包括:根据如下公式:B(v)=Σs≠v∈Vδs·(v)]]>将不同源节点对节点v的依赖度求和得到该节点v的介数。优选地,所述步骤S2包括:步骤S21,网络中每个节点维护着一个状态记录表,状态记录表中每条记录包含当前已经访问到的源节点id和相应的距离、最短路径数目、前驱节点这四个字段;步骤S22,在Map阶段所有节点都根据当前状态表中的每条记录构造更新消息;更新消息是以键/值对的形式处理,其中键是需要接受该更新消息的目的节点的id,值中包含了目的节点需要的信息,与状态记录表中的记录包含同样的四个字段;到源节点的距离等于本节点到源节点的距离加1,所述最短路径数目即为本节点到源节点的最短路径数目,前驱节点则为节点本身;步骤S23,Map阶段产生的键/值对将通过MapReduce框架进行自动划分,最终相同键的键/值对被同一个Reduce函数接收,完成消息传递的过程;步骤S24,在Reduce阶段,所有节点都会收到来自邻居节点的若干条更新消息;以消息中的源节点为准在状态记录表中进行匹配,查找该源节点对相应的状态记录,并根据更新消息中包含的信息进行状态更新;步骤S25,判断所有源节点是否完成宽度遍历,若没有则跳转到步骤S23继续迭代,若完成了则进入步骤S3继续执行。根据本年发明提供的一种基于MapReduce的复杂网络拓扑特征参数计算系统,包括基于消息传递的算法并行化装置;所述基于消息传递的算法并行化装置,包括:装置M1,产生更新消息;每个节点根据本节点的状态信息计算生成更新消息的内容,把邻居节点作为消息的目的节点,将更新消息向目的节点发送;装置M2,传递消息;更新消息按照目的节点被发送给指定的节点;装置M3,更新节点内部状态信息;目的节点收到若干条更新消息,目的节点对这些更新消息进行解析并更新目的节点内部状态信息。优选地,所述装置M1,具体为:装置M1在MapReduce框架中的Map阶段被触发执行,Map阶段的处理方法由用户完成;该Map阶段负责处理每条存储节点信息的文本记录,根据需求产生更新消息键/值对;其中,键是邻居节点id,值是更新消息的内容;所述装置M2,具体为:所述装置M2在MapReduce框架中的partitioner组件被触发执行,partitioner组件默认根据hash算法把具有相同键的消息键/值对和节点键/值对划分到一起,使得更新消息达到了传递的效果;所述装置M3,具体为:所述装置M3在MapReduce框架中的Reduce阶段被触发执行,Reduce阶段负责接收上一阶段传递的键/值对,把所有具有相同键的消息键/值对和节点键/值对进行聚合,得到更新后的节点键/值对并输出;Reduce阶段的处理方法由用户根据需求自定义完成的。优选地,采用利用所述基于消息传递的算法并行化装置实现的基于MapReduce的介数装置;所述基于MapReduce的介数装置,包括:装置MS1,令所有节点选取自己做为源节点开始计算节点介数;装置MS2,从源节点出发进行宽度优先遍历;装置MS3,回溯求解点对依赖度;装置MS4,累加点对依赖度得到介数。优选地,节点v的介数被定义为:B(v)=Σs≠v≠t∈Vσst(v)σst]]>其中,B(v)表示节点v的介数,σst表示节点s和节点t之间的最短路径条数,σst(v)表示节点s和节点t之间的最短路径中经过节点v的条数;V表示网络节点的集合;所述装置M2具体为:从所有源节点同时出发宽度优先遍历其余节点,当访问到当前节点v时,根据下式:σsv=Σu∈Ps(v)σsu]]>计算节点v到源节点s的最短路径的数目,并记录下节点v的前驱节点Ps(v);迭代遍历过程,直到所有节点都被访问到;其中,σsv表示节点s到节点v的最短路径数目,Ps(v)表示节点v以节点s为源的前驱节点,σsu表示节点s到节点u的最短路径数目;所述装置M3具体为:从距离源节点最远一层的节点开始回溯,按照下式:δs·(v)=Σw,v∈Ps(w)σsvσsw(1+δs·(w))]]>计算当前层中节点的前驱节点的点对依赖度;不停回溯计算前驱节点的点对依赖度,直到回到源节点,得到源节点对其他所有节点的依赖度;其中,δs·(v)表示节点s对节点v的依赖度,称为点对依赖度;w,v表示网络中的节点;σsw表示节点s到节点w的最短路径数目;δs·(w)表示节点s对节点w的依赖度;所述装置M4具体为:根据如下公式:B(v)=Σs≠v∈Vδs·(v)]]>将不同源节点对节点v的依赖度求和得到该节点v的介数。优选地,所述装置MS2包括:装置MS21,令网络中每个节点维护着一个状态记录表,状态记录表中每条记录包含当前已经访问到的源节点id和相应的距离、最短路径数目、前驱节点这四个字段;装置MS22,令在Map阶段所有节点都根据当前状态表中的每条记录构造更新消息;更新消息是以键/值对的形式处理,其中键是需要接受该更新消息的目的节点的id,值中包含了目的节点需要的信息,与状态记录表中的记录包含同样的四个字段;到源节点的距离等于本节点到源节点的距离加1,所述最短路径数目即为本节点到源节点的最短路径数目,前驱节点则为节点本身;装置MS23,令Map阶段产生的键/值对将通过MapReduce框架进行自动划分,最终相同键的键/值对被同一个Reduce函数接收,完成消息传递的过程;装置MS24,令在Reduce阶段,所有节点都会收到来自邻居节点的若干条更新消息;以消息中的源节点为准在状态记录表中进行匹配,查找该源节点对相应的状态记录,并根据更新消息中包含的信息进行状态更新;装置MS25,判断所有源节点是否完成宽度遍历,若没有则跳转触发装置MS23继续迭代,若完成了则触发装置MS3继续执行。与现有技术相比,本发明具有如下的有益效果:针对传统单机算法在计算大规模网络拓扑特征参数时效率较低的问题,本发明提出了一种网络拓扑特征参数的单机算法向MapReduce计算框架并行移植的方法,克服了当前单机算法并行移植到MapReduce时存在的问题,利用Hadoop计算平台实现了网络拓扑特征参数的并行计算,提高了网络拓扑特征参数的计算效率。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1为基于MapReduce的介数算法。图2为算法遍历阶段的消息传递过程。图3为并行介数算法消耗时间。图4为并行算法的加速比。图2中各消息message的字段内容如下:srcdisnumSPprea01nullb11bc11cd22b,c具体实施方式下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。为解决网络拓扑特征参数单机算法并行移植到MapReduce框架中的问题,本发明提供的基于MapReduce的复杂网络拓扑特征参数计算方法,采用基于消息传递的算法并行化方法,包括:步骤1,产生更新消息。每个节点根据本节点的状态信息计算生成更新消息内容,把邻居节点作为消息的目的节点,将消息发送出去。在MapReduce框架中,该步骤工作由Map阶段完成,Map阶段的处理方法由用户完成。该阶段负责处理每条存储节点信息的文本记录,根据需求产生更新消息键/值对。其中键是邻居节点id,值是更新消息的内容。步骤2,传递消息。更新消息按照目的节点被发送给指定的节点。在MapReduce框架中,该步骤工作由框架的partitioner自动完成,它默认根据hash算法把具有相同键的消息键/值对和节点键/值对划分到一起,使得消息达到了传递的效果。步骤3,更新节点内部状态信息。目的节点收到若干条更新消息,节点对这些消息进行解析并更新节点内部状态信息。该步骤由MapReduce的Reduce阶段完成,该阶段负责接收上一阶段传递的键/值对,把所有具有相同键的消息键/值对和节点键/值对进行聚合,得到更新后的节点键/值对并输出。Reduce阶段的处理方法也是由用户根据需求自定义完成的。下面以介数计算为例,详细介绍本发明在计算网络拓扑参数中的实现。网络中不相邻的节点s和t之间的最短路径会经过其他若干节点,节点v被其他最短路径经过次数越多,则表示该节点在网络中越重要。由此,节点v的介数被定义为:B(v)=Σs≠v≠t∈Vσst(v)σst---(1)]]>其中σst表示节点s和t之间的最短路径数目,σst(v)表示这些最短路径经过节点v的数目。利用消息传递机制实现的基于MapReduce的介数算法如图1所示。步骤S1,所有节点选取自己做为源节点开始计算节点介数。步骤S2,从源节点出发进行宽度优先遍历。从所有源节点同时出发宽度优先遍历其余节点,当访问到当前节点v时,根据公式2计算节点v到源节点s的最短路径的数目,并记录下节点v的前驱节点Ps(v)。迭代遍历过程,直到所有节点都被访问到。σsv=Σu∈Ps(v)σsu---(2)]]>其中σsv表示节点s到节点v的最短路径数目。Ps(v)表示节点v以节点s为源的前驱节点。步骤S3,回溯求解点对依赖度。从距离源节点最远一层的节点开始回溯,按照公式3计算当前层中节点的前驱节点的点对依赖度。不停回溯计算前驱节点的点对依赖度,直到回到源节点。得到源节点对其他所有节点的依赖度。δs·(v)=Σw,v∈Ps(w)σsvσsw(1+δs·(w))---(3)]]>其中δs·(v)表示节点s对节点v的依赖度,称为点对依赖度。步骤S4,累加点对依赖度得到介数。根据公式4,将不同源节点对节点v的依赖度求和得到该节点的介数。B(v)=Σs≠v∈Vδs·(v)---(4)]]>其中B(v)表示节点v的介数。所述步骤S2和S3都包含多次的MapReduce迭代,原理相似。以S2为例对算法中的消息传递过程进行介绍,所述步骤S2进一步为。步骤S21,网络中每个节点维护着一个状态记录表,表中每条记录包含当前已经访问到的源节点id和相应的距离、最短路径数目、前驱节点,示例中该条记录表示节点a到本身的距离为0,默认有1条路径,不需要经过前驱节点。步骤S22,在Map阶段所有节点都根据当前状态表中的每条记录构造更新消息。更新消息是以键/值对的形式处理,其中键是需要接受该消息的目的节点的id,值中包含了目的节点需要的信息,与记录表中的记录包含同样的四个字段。到源节点的距离等于本节点到源节点的距离加1,最短路径数目即为本节点到源节点的最短路径数目,前驱节点则为节点本身。如示例中,节点a向邻居节点b和c发送包含同样值的消息a|1|1|a,告知邻居节点可以通过本节点到达a,距离为1,最短路径数目为1,前驱节点为a。步骤S23,Map阶段产生的键/值对(包括节点状态信息和更新消息)将会通过MapReduce框架进行自动划分,最终相同键的键/值对会被同一个Reduce函数接收,完成消息传递的过程。如示例中的b和c产生的以a为键的消息将会被发送到节点a。步骤S24,在Reduce阶段,所有节点都会收到来自邻居节点的若干条更新消息。以消息中的源节点为准在状态记录表中进行匹配,查找该源节点对相应的状态记录,并根据消息中包含的信息进行状态更新。如示例中a收到来自b,c的消息后,因为a节点没有记录到达这两个节点的信息,所以将该信息添加到自身节点的状态表中,表示节点a已经知道了到达节点b和c的信息,完成了一轮迭代。步骤S25,判断所有源节点是否完成宽度遍历,若没有则跳转到步骤S23继续迭代,若完成了则输出结果,宽度遍历阶段结束。本发明在分布式计算框架中实现了网络拓扑特征参数的计算,解决了单机计算内存受限、效率低下的问题,提高了计算网络拓扑参数的效率。利用实验说明本发明的性能。实验对五个不同规模的路由器网络的拓扑特征参数进行计算,网络规模如表1所示。表1五个不同规模的网络其中,n,m表示网络的节点数和边数,<k>表示网络的节点平均度。使用本发明计算网络中节点介数的效率如图3所示。可以看出,在同一计算集群中计算不同规模网络的介数,网络规模越大,算法的执行时间越长。对于处理同一网络数据来说,随着计算集群中计算节点的增加,计算介数的时间在不断下降。并且随着实验网络数据规模的增大,运行时间减少的幅度越大。使用8个计算节点来计算包含百万级别节点的网络,效率可以提升6倍以上。实验说明本发明可以通过扩大集群规模来大幅计算提升效率,尤其是在处理大规模拓扑数据时更具优势。除并行介数算法外,本发明基于MapReduce计算框架设计还实现了计算的度(Degree)、聚类系数(Cluster)、网络直径(D)、平均路径长度(L)、最大连通子图大小(|gs|)和核数(Core)的并行算法。它们在不同规模集群中运行的加速比平均值如图4所示。从图中可以看出,随着计算集群规模的扩大,七种算法的加速比都得到了明显的提升。而且算法时间复杂度最高的介数算法提升幅度最大。这说明了本发明所设计实现的算法在Hadoop平台上具有良好的扩展性,尤其是在对时间复杂度较高的算法提升更明显。综上所述,本发明基于Mapreduce计算框架实现的网络拓扑参数的计算方法在Hadoop平台上表现出了较高的计算效率和良好的扩展性。尤其是在处理网络数据规模比较大、算法时间复杂度较高的情况下,算法的效率得到了更显著的提升。本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1