首页 / 专利库 / 电信 / 超级分发 / 一种链接分析的计算方法和装置及系统

一种链接分析的计算方法和装置及系统

阅读:576发布:2020-05-20

专利汇可以提供一种链接分析的计算方法和装置及系统专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了一种链接分析的计算方法和装置及系统,用于减少对内存的占用,数据计算成本较低。本发明实施例方法包括:处理机从分布式文件系统中获取管理 服务器 预处理生成的第一子地图数据,第一子地图数据包括第一 节点 的身份识别码ID和第一节点的边所链接的目标节点的ID;处理机在第一超级步super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,消息包括处理机在第一super step中为第一子地图数据中的每一个目标节点分发的权值;处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中。,下面是一种链接分析的计算方法和装置及系统专利的具体信息内容。

1.一种链接分析的计算方法,其特征在于,包括:
处理机从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,所述第一子地图数据包括第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID;
所述处理机在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,所述消息包括所述处理机在第一super step中为所述第一子地图数据中的每一个目标节点分发的权值;
所述处理机将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
2.根据权利要求1所述的方法,其特征在于,所述处理机将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中,包括:
所述处理机将在所述第一super step中每生成一个消息后,就将生成的消息留存在所述处理机的内存中;
当所述处理机的内存中留存的消息数量达到预置的消息记录数时,所述处理机将所述内存中留存的消息发送到所述处理机的本地数据缓冲区,所述本地数据缓冲区中还存储有所述处理机对所述第二子地图数据中的每个目标节点分别生成的消息,所述第二子地图数据包括第二节点的ID和所述第二节点的边所链接的目标节点的ID;
当所述本地数据缓冲区中存储的消息超过容量限时,所述处理机将所述本地数据缓冲区中存储的消息批量存储到所述分布式文件系统中。
3.根据权利要求2所述的方法,其特征在于,所述处理机将所述内存中留存的消息发送到所述处理机的本地数据缓冲区之后,还包括:
所述处理机将所述本地数据缓冲区中对相同目标节点分别生成的消息进行合并和压缩。
4.根据权利要求1所述的方法,其特征在于,所述第一子地图数据中还包括:所述第一节点的边所链接的目标节点中属于悬挂dangling节点的目标节点;
所述处理机在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发之后,还包括:
所述处理机将对属于dangling节点的目标节点分发的权值进行合并,得到所述第一节点在所述第一super step中对应的dangling分数;
所述处理机将所述第一节点在所述第一super step中对应的dangling分数存储到所述分布式文件系统中,以使所述管理服务器通过所述分布式文件系统获取到在完成所述第一super step的计算后所述第一节点对应的dangling分数。
5.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
所述处理机监测所述分布式文件系统中所述第一节点对应的源节点是否为所述第一节点生成有消息,所述第一节点为所述源节点的目标节点;
若所述源节点为所述第一节点生成有消息,所述处理机从所述分布式文件系统中获取所述源节点为所述第一节点生成的消息;
所述处理机对所有源节点为所述第一节点分发的权值进行合并,得到所述第一节点的权值。
6.根据权利要求5所述的方法,其特征在于,所述处理机对所有源节点为所述第一节点分发的权值进行合并,包括:
所述处理机对每N个源节点为所述第一节点分发的权值进行合并后,备份当前得到的所述第一节点的权值,并记录下已经处理过的源节点的ID,所述N为自然数。
7.根据权利要求1所述的方法,其特征在于,所述处理机将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中之后,还包括:
所述处理机监测超级步的轮次信息是否发生更新;
若所述超级步的轮次信息从所述第一super step更新为第二super step,所述处理机在第二super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,并将生成的消息存储到所述分布式文件系统中。
8.一种链接分析的计算方法,其特征在于,包括:
管理服务器将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和所述源节点的边所链接的目标节点的ID;
所述管理服务器将所述多个子地图数据存储到分布式文件系统;
所述管理服务器监测每个处理机是否已经根据所述子地图数据完成第一超级步super step的计算。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所有处理机已经完成第一super step的计算,将超级步的轮次信息从所述第一super step更新为第二super step,并将更新后的所述超级步的轮次信息存储到所述分布式文件系统中;
所述管理服务器监测所述每个处理机是否已经根据所述子地图数据完成第二super step的计算。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若所有处理机都已经完成第一super step的计算,所述管理服务器获取所述每个处理机在完成所述第一super step的计算后发送的悬挂dangling分数;
所述管理服务器将所述每个处理机在完成所述第一super step的计算后发送的dangling分数进行合并,并计算出所述第一super step对应的dangling平均分数;
所述管理服务器将所述第一super step对应的dangling平均分数发送给所述每个处理机。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:当所述超级步的轮次信息更新完所有super step后,所述管理服务器监测所述每个处理机是否已经根据所述子地图数据完成所有super step的计算;
若所有处理机都已经完成所有super step的计算,所述管理服务器获取每个处理机在完成所述所有super step的计算后发送的dangling分数;
所述管理服务器将所述每个处理机在完成所述所有super step的计算后发送的dangling分数进行合并,并计算出所述所有super step对应的dangling平均分数;
所述管理服务器将所述所有super step对应的dangling平均分数发送给所述每个处理机。
12.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述管理服务器监测所述每个处理机在执行所述第一super step的计算时的运行状态,所述运行状态指的是所述处理机的计算效率或者是否正常工作的指示;
所述管理服务器将计算效率最低或者不正常工作的处理机所执行的计算任务迁移到另一个处理机,并通过计算效率最低或者不正常工作的处理机退出。
13.一种处理机,其特征在于,包括:
子地图获取模,用于从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,所述第一子地图数据包括第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID;
权值分发模块,用于在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,所述消息包括所述处理机在第一super step中为所述第一子地图数据中的每一个目标节点分发的权值;
消息存储模块,用于将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
14.根据权利要求13所述的处理机,其特征在于,所述消息存储模块,包括:
消息留存子模块,用于将在所述第一super step中每生成一个消息后,就将生成的消息留存在所述处理机的内存中;
消息本地存储子模块,用于当所述处理机的内存中留存的消息数量达到预置的消息记录数时,将所述内存中留存的消息发送到所述处理机的本地数据缓冲区,所述本地数据缓冲区中还存储有所述处理机对所述第二子地图数据中的每个目标节点分别生成的消息,所述第二子地图数据包括第二节点的ID和所述第二节点的边所链接的目标节点的ID;
批量存储子模块,用于当所述本地数据缓冲区中存储的消息超过容量门限时,将所述本地数据缓冲区中存储的消息批量存储到所述分布式文件系统中。
15.根据权利要求14所述的处理机,其特征在于,所述消息存储模块,还包括:
消息压缩子模块,用于所述处理机将所述本地数据缓冲区中对相同目标节点分别生成的消息进行合并和压缩。
16.根据权利要求13所述的处理机,其特征在于,所述第一子地图数据中还包括:所述第一节点的边所链接的目标节点中属于悬挂dangling节点的目标节点;
所述处理机,还包括:分数计算模块和分数存储模块,其中,
所述分数计算模块,用于将对属于dangling节点的目标节点分发的权值进行合并,得到所述第一节点在所述第一super step中对应的dangling分数;
所述分数存储模块,用于将所述第一节点在所述第一super step中对应的dangling分数存储到所述分布式文件系统中,以使所述管理服务器通过所述分布式文件系统获取到在完成所述第一super step的计算后所述第一节点对应的dangling分数。
17.根据权利要求13所述的处理机,其特征在于,所述处理机,还包括:
消息监测模块,用于监测所述分布式文件系统中所述第一节点对应的源节点是否为所述第一节点生成有消息,所述第一节点为所述源节点的目标节点;
消息获取模块,用于若所述源节点为所述第一节点生成有消息,从所述分布式文件系统中获取所述源节点为所述第一节点生成的消息;
权值合并模块,用于对所有源节点为所述第一节点分发的权值进行合并,得到所述第一节点的权值。
18.根据权利要求17所述的处理机,其特征在于,所述权值分发模块,具体用于对每N个源节点为所述第一节点分发的权值进行合并后,备份当前得到的所述第一节点的权值,并记录下已经处理过的源节点的ID,所述N为自然数。
19.根据权利要求13所述的处理机,其特征在于,所述处理机,还包括:超级步监测模块,其中,
所述超级步监测模块,用于监测超级步的轮次信息是否发生更新;
所述权值分发模块,还用于当所述超级步的轮次信息从所述第一super step更新为第二super step时,在第二super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息;
所述消息存储模块,还用于将在所述第二super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
20.一种管理服务器,其特征在于,包括:
地图预处理模块,用于将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和所述源节点的边所链接的目标节点的ID;
子地图存储模块,用于将所述多个子地图数据存储到分布式文件系统;
计算监测模块,用于监测每个处理机是否已经根据所述子地图数据完成第一超级步super step的计算。
21.根据权利要求20所述的服务器,其特征在于,所述管理服务器,还包括:
超级步更新模块,用于当所有处理机已经完成第一super step的计算时,将超级步的轮次信息从所述第一super step更新为第二super step,并将更新后的所述超级步的轮次信息存储到所述分布式文件系统中;
所述计算监测模块,还用于监测所述每个处理机是否已经根据所述子地图数据完成第二super step的计算。
22.根据权利要求21所述的服务器,其特征在于,所述管理服务器,还包括:
分数获取模块,用于当所有处理机都已经完成第一super step的计算时,获取所述每个处理机在完成所述第一super step的计算后发送的悬挂dangling分数;
平均分数获取模块,用于将所述每个处理机在完成所述第一super step的计算后发送的dangling分数进行合并,并计算出所述第一super step对应的dangling平均分数;
平均分数发送模块,用于将所述第一super step对应的dangling平均分数发送给所述每个处理机。
23.根据权利要求21或22所述的服务器,其特征在于,所述管理服务器,还包括:分数获取模块、平均分数获取模块和平均分数发送模块,其中,
所述计算监测模块,还用于当所述超级步的轮次信息更新完所有super step后,监测所述每个处理机是否已经根据所述子地图数据完成所有super step的计算;
所述分数获取模块,用于当所有处理机都已经完成所有super step的计算时,获取每个处理机在完成所述所有super step的计算后发送的dangling分数;
所述平均分数获取模块,用于将所述每个处理机在完成所述所有super step的计算后发送的dangling分数进行合并,并计算出所述所有super step对应的dangling平均分数;
所述平均分数发送模块,用于将所述所有super step对应的dangling平均分数发送给所述每个处理机。
24.根据权利要求20所述的服务器,其特征在于,所述管理服务器,还包括:
效率监测模块,用于监测所述每个处理机在执行所述第一super step的计算时的运行状态,所述运行状态指的是所述处理机的计算效率或者是否正常工作的指示;
任务迁移模块,用于将计算效率最低或者不正常工作的处理机所执行的计算任务迁移到另一个处理机,并通过计算效率最低或者不正常工作的处理机退出。
25.一种链接分析的计算系统,其特征在于,包括:
如权利要求20至24中任一项所述的管理服务器、两个以上的如权利要求13至19中任一项所述的处理机和分布式文件系统,所述管理服务器和所述处理机分别与所述分布式文件系统之间具有通信连接。

说明书全文

一种链接分析的计算方法和装置及系统

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种链接分析的计算方法和装置及系统。

背景技术

[0002] 随着互联网技术的飞速发展,搜索引擎因其能够在海量的网络资源中为用户找到所需的信息而越来越受到重视。其中,基于链接分析的搜索引擎因其准确率较高,日益受到用户的欢迎。
[0003] 目前,链接分析对整个网页搜索起非常重要的作用。链接分析主要的功能是依据网页之间的链接关系,网页的锚文本等信息,评价网页的重要性(或称权威性),通过对网页的评价会对网页搜索最终结果的排序产生影响。
[0004] 现有技术中存在一种适用于大规模图计算的链接分析计算方法,适用于大规模图计算的系统Pregel,主要用于Page Rank和路径计算,由于pregel目前的计算状态都是常驻内存的,对于规模继续增大的图计算对内存的要求越来越大,这种基于全内存的计算系统在内存资源不够或者数据量特别大的时候,并不适用,数据计算成本比较高。

发明内容

[0005] 本发明实施例提供了一种链接分析的计算方法和装置及系统,用于减少对内存的占用,数据计算成本较低。
[0006] 为解决上述技术问题,本发明实施例提供以下技术方案:
[0007] 第一方面,本发明实施例提供一种链接分析的计算方法,包括:
[0008] 处理机从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,所述第一子地图数据包括第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID;
[0009] 所述处理机在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,所述消息包括所述处理机在第一super step中为所述第一子地图数据中的每一个目标节点分发的权值;
[0010] 所述处理机将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
[0011] 第二方面,本发明实施例还提供另一种链接分析的计算方法,包括:
[0012] 管理服务器将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和所述源节点的边所链接的目标节点的ID;
[0013] 所述管理服务器将所述多个子地图数据存储到分布式文件系统;
[0014] 所述管理服务器监测每个处理机是否已经根据所述子地图数据完成第一超级步super step的计算。
[0015] 第三方面,本发明实施例还提供一种处理机,包括:
[0016] 子地图获取模,用于从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,所述第一子地图数据包括第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID;
[0017] 权值分发模块,用于在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,所述消息包括所述处理机在第一super step中为所述第一子地图数据中的每一个目标节点分发的权值;
[0018] 消息存储模块,用于将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
[0019] 第四方面,本发明实施例还提供一种管理服务器,包括:
[0020] 地图预处理模块,用于将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和所述源节点的边所链接的目标节点的ID;
[0021] 子地图存储模块,用于将所述多个子地图数据存储到分布式文件系统;
[0022] 计算监测模块,用于监测每个处理机是否已经根据所述子地图数据完成第一超级步super step的计算。
[0023] 第五方面,本发明实施例还提供一种链接分析的计算系统,包括:
[0024] 如前述第三方面所述的管理服务器、两个以上的如前述第四方面所述的处理机和分布式文件系统,所述管理服务器和所述处理机分别与所述分布式文件系统之间具有通信连接。
[0025] 从以上技术方案可以看出,本发明实施例具有以下优点:
[0026] 在本发明实施例中,管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。附图说明
[0027] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
[0028] 图1为本发明实施例提供的一种链接分析的计算方法的流程方框示意图;
[0029] 图2-a为本发明实施例提供的一种源节点和目标节点的链接关系示意图;
[0030] 图2-b为本发明实施例提供的另一种源节点和目标节点的链接关系示意图;
[0031] 图3为本发明实施例提供的一种处理机将消息合并后存储到文件分布式文件系统的实现方式示意图;
[0032] 图4为本发明实施例提供的另一种链接分析的计算方法的流程方框示意图;
[0033] 图5为本发明实施例提供的另一种链接分析的计算方法的计算流程示意图;
[0034] 图6为本发明实施例提供的一种链接分析的计算系统的逻辑架构示意图;
[0035] 图7为本发明实施例提供的一种消息格式示意图;
[0036] 图8为本发明实施例提供的一种处理机的组成结构示意图;
[0037] 图9为本发明实施例提供的一种管理服务器的组成结构示意图;
[0038] 图10为本发明实施例提供的一种链接分析的计算系统的组成结构示意图。

具体实施方式

[0039] 本发明实施例提供了一种链接分析的计算方法和装置及系统,用于减少对内存的占用,数据计算成本较低。
[0040] 为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 本发明的说明书权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
[0042] 以下分别进行详细说明。
[0043] 本发明链接分析的计算方法的一个实施例,首先从处理机的度来描述,可以包括:处理机从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,其中,上述第一子地图数据包括第一节点的身份识别码(ID,IDentity)和上述第一节点的边所链接的目标节点的ID;上述处理机在第一超级步(super step)中对上述第一子地图数据中的每一个目标节点进行权值分发,针对上述第一子地图数据中的每一个目标节点分别生成消息;上述处理机将在上述第一super step中对上述第一子地图数据中的每一个目标节点分别生成的消息存储到上述分布式文件系统中。
[0044] 请参阅图1所示,本发明一个实施例提供的链接分析的计算方法,具体可以包括如下步骤:
[0045] 101、处理机从分布式文件系统中获取管理服务器预处理生成的第一子地图数据。
[0046] 其中,上述第一子地图数据包括第一节点的身份识别码(ID,IDentity)和上述第一节点的边(edge)所链接的目标节点的ID。
[0047] 在本发明实施例中,链接分析的计算系统中部署有一个管理服务器、多个的处理机和分布式文件系统,其中,管理服务器通常作为master,处理机作为worker,每个处理机都独立处理属于各自处理机负责的数据。管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中。本发明实施例中,管理服务器预处理得到的多个子地图数据并不是常驻内存中的,而是当管理服务器生成多个子地图数据后,管理服务器将生成的多个子地图数据存储到分布式文件系统中。其中,分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地主机上,而是通过计算机网络与其它主机相连。分布式文件系统可以基于客户端/服务器模式来实现,例如网络架构可能包括多个供多客户端访问的服务器,管理服务器可以将子地图数据存储到分布式文件系统中,管理服务器向处理机发布一个允许其访问的存储目录,一旦处理机成功访问分布式文件系统,处理机就可以根据这个目录查找对应的子地图数据。具体的,本发明实施例中分布式文件系统可以有多种实现方式,例如基于XFS、hadoop实现的文件系统等等。
[0048] 在本发明实施例中,地图数据中包括所有的源节点以及每个源节点的边所链接的目标节点,还包括有每个节点的网页数据,其中,源节点又称之为父节点,目标节点也称之为子节点,源节点的出链指向该源节点的边所链接的目标节点,目标节点的入链指向该目标节点的边被链接的源节点。源节点和目标节点指相对于这两个节点之间才有意义,例如,一个源节点出链为一个目标节点,但是该目标节点可能是下一个链接关系中的源节点,其中地图数据中的节点之间的链接关系通常保存在锚文本系统中。请参阅如图2-a所示,为本发明实施例提供的一种源节点和目标节点的链接关系示意图,其中,节点A的出链为节点B,节点A的入链为节点C,节点B的出链为节点C,节点C的出链为节点D和节点F,节点E的出链为节点F。另外,请参阅如图2-b所示,为本发明实施例提供的另一种源节点和目标节点的链接关系示意图,节点G的出链为节点H,节点G的入链为节点I,节点H的出链为节点I,节点I的出链为节点J和节点G,节点K的出链为节点I。如图2-a和图2-b所示为地图数据,也称之为链接地图,每个节点表示一个网页,对于图2-a,有出链的网页A为父页面,有入链的网页B为网页A的子页面,对于图2-b,有出链的网页H为父页面,有入链的网页I为网页H的子页面。
[0049] 需要说明的是,在本发明实施例中,地图数据中还包括一种悬挂(dangling)节点,其中,dangling节点指的是只有入链没有出链的目标节点,例如,如图2-a所示,节点D和节点F都是源节点C的目标节点,但是节点D和节点F都只有入链而没有出链,同样的,对于图2-b所示,节点J和节点K都是只有入链没有出链的目标节点,故节点J和节点K也可以称之为dangling节点。其中一个节点是Dangling节点的情况很多,例如,有的网页页面可能本身就没有出链,这个网页页面就是dangling节点,也有可能因为下载调度以及其它过滤策略原因使得一个网页页面未被下载或出链被过滤掉,这种情况下也会导致一个网页页面为dangling节点。
[0050] 具体的,一个节点由一个网页(doc)和其出链所指向的节点组成,节点ID就是doc id,出链格式为{links num,{子doc id}*,{is_dangling}*}。具体的,is_dangling是一个bitmap序列,可以和子doc id的顺序相同,表明对应的子doc id是否是dangling节点。
[0051] 前述实施例中对地图数据进行了详细说明,管理服务器根据每一个节点和该节点的链接关系将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点和该源节点的边所链接的目标节点,以图2-a为例,节点C作为源节点时,其目标节点有三个分别为:节点A、节点D和节点F,那么对于一个子地图数据(即本发明实施例中描述的第一子地图数据)来说,就包括源节点C(即本发明实施例中描述的第一节点)的ID和该源节点C的边所链接的目标节点A的ID、目标节点D的ID和目标节点F的ID,并且第一子地图数据中还包括节点C、节点A、节点D和节点F的网页数据。另外,根据前述对dangling节点的说明可知,在第一子地图数据中节点D和节点F为dangling节点,故在第一子地图数据中还携带指示节点D和节点属于dangling节点的信息。
[0052] 在本发明实施例中,当管理服务器生成多个子地图数据后,管理服务器将生成的多个子地图数据存储到分布式文件系统中,每个处理机都独立处理属于各自处理机负责的数据。接下来以链接分析的计算系统中其中一个处理机为例,对本发明实施例提供的链接分析的计算方法进行详细说明。其中为例说明的处理机负责处理第一节点的数据。需要说明的是,在本发明实施例中,链接分析的计算系统中包括有多个处理机,每个处理机负责处理一个以上的子地图数据,通常一个处理机负责处理哪些地图数据可以有多种实现方式,例如管理服务器在将地图数据切分为多个子地图数据后,可以由管理服务器指定将哪几个子地图数据划分给哪个处理机,例如一个管理服务器管理有100个处理机,管理服务器共划分出500个子地图数据,则管理服务器可以将前5个子地图数据划分给第一个处理机,然后按照这样的方式分别给每个处理机分配5个子地图数据。又如,还可以根据子地图数据中包括的节点的ID进行区分,例如管理服务器共划分出500个子地图数据,其中每个子地图数据中都包括有源节点的ID,则可以根据节点的ID来决定一个子地图数据应该属于哪个处理机负责,具体的,可以对节点的ID设置取模规则,假如500个子地图数据中每个子地图数据包括的节点ID分别为1、2、3……、500,100处理机分别为处理机1、处理机2、处理机3、……、100,则可以将节点ID为1、101、201、301、401的共5个子地图数据划分给处理机
1负责处理,同样的,将节点ID为2、102、202、302、402的共5个子地图数据划分给处理机2负责处理。按照这样的划分子地图数据给处理机的方式,各个处理机就可以从分布式文件系统中获取到属于各自处理机负责的子地图数据。由于每个处理机从分布式文件系统中只获取属于自己负责处理的子地图数据,而不需要将所有的子地图数据都加载到处理机的内存中,故对于每个处理机来说子地图数据并不会占用过多的内存,不会带来计算成本随着地图数据规模的增加而急剧的上升。
[0053] 需要说明的是,在本发明实施例中,管理服务器将地图数据切分为多个子地图数据之后,管理服务器将子地图数据存储到分布式文件系统中,而每个处理机也是从分布式文件系统中读取属于自己负责处理的子地图数据,可见管理服务器和处理机之间的信息交换是通过分布式文件系统来进行的,而需要管理及服务器和处理机之间直接进行网络交换,故处理机就具有一定的独立性,而不是完全依赖于管理服务器,这样可以提高链接分析的计算系统的可靠性,并且易于扩展。
[0054] 102、处理机在第一super step中对上述第一子地图数据中的每一个目标节点进行权值分发,针对上述第一子地图数据中的每一个目标节点分别生成消息。
[0055] 其中,上述消息包括处理机在第一super step中为第一子地图数据中的每一个目标节点分发的权值。
[0056] 在本发明实施例中,处理机从分布式文件系统中获取到属于自己负责处理的第一子地图数据之后,处理机可以从第一子地图数据中获取到源节点(即第一节点)的边所链接的目标节点的ID,然后处理机在第一子地图数据中的每一个目标节点进行权值分发,针对每一个目标节点分别生成消息(message),其中消息指的是处理机分别为每一个目标节点分发的权值。
[0057] 需要说明的是,在本发明实施例中,管理服务器管理的有多个处理机,每个处理机对子地图数据的处理过程是各自独立进行处理的,也就是说,多个处理机之间对各自的子地图数据的处理时并列进行的,此处步骤102中只是以其中一个处理机对子地图数据的处理进行了描述。
[0058] 另外,本发明实施例中处理机对第一子地图数据中的每一个目标节点进行权值分发是以在第一super step中的计算为例的,通常情况下,每个处理机对子地图数据的处理要进行多轮的super step计算,并且处理机在进行当前轮次的super step计算时首先要获取到上一轮次的super step的计算结果。其中步骤102中是以处理机进行的当前轮次为第一super step,则处理机在进行下一轮次第二super step计算时要首先获取到该处理机在第一super step的计算结果。另外,本发明实施例中超级步的轮次信息由管理服务器来设置,管理服务器会监控所有的处理机对每一个超级步的计算执行情况,例如,一个管理服务器管理100个处理机,管理服务器将超级步的轮次信息设定为第一super step,则管理服务器会监测这100个处理机分别在第一super step的计算执行情况,当100个处理机都完成在第一super step的计算后,管理服务器会将超级步的轮次信息从第一super step更新为第二super step,并将更新后的超级步的轮次信息存储到分布式文件系统中。各个处理机定期监测超级步的轮次信息是否更新,若有更新,各个处理机在第二super step中对第一子地图数据中的每一个目标节点进行权值分发。
[0059] 在本发明的一些实施例中,处理机针对第一子地图数据中的每一个目标节点分别生成消息指的是处理机为每一个目标节点分别分发一个权值,并以生成的消息中携带为每个目标节点分发的权值。以图2-a为例,节点C作为源节点时,其目标节点有三个分别为:节点A、节点D和节点F,那么对于一个子地图数据(即本发明实施例中描述的第一子地图数据)来说,就包括源节点C(即本发明实施例中描述的第一节点)的ID和该源节点C的边所链接的目标节点A的ID、目标节点D的ID和目标节点F的ID,第一节点共有3个目标节点,则处理机在第一super step中分别为节点A、节点D和节点F分发一个权值。例如处理机为节点A分发的权值为Value1,处理机为节点D分发的权值为Value2,处理机为节点F分发的权值为Value3,则处理机针对节点A生成的消息中携带有Value1,处理机针对节点D生成的消息中携带有Value2,处理机针对节点F生成的消息中携带有Value3。
[0060] 需要说明的是,对于属于dangling节点的目标节点来说,在本发明实施例中还可以执行如下方法:
[0061] 当第一子地图数据中还包括:第一节点的边所链接的目标节点中属于dangling节点的目标节点时,在步骤102处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发之后,本发明实施例还可以包括如下步骤:
[0062] A1、处理机将对属于dangling节点的目标节点分发的权值进行合并,得到第一节点在第一super step中对应的dangling分数;
[0063] A2、处理机将第一节点在第一super step中对应的dangling分数存储到分布式文件系统中,以使管理服务器通过分布式文件系统获取到在完成第一super step的计算后第一节点对应的dangling分数。
[0064] 其中,对于第一节点的边所链接的目标节点中属于dangling节点的目标节点,处理机在第一super step中对属于dangling节点的目标节点分发过权值后,步骤A1中处理机对属于dangling节点的目标节点分发的权值进行合并,得到第一节点在第一super step中对应的dangling分数。例如,如图2-a所示,节点C作为源节点时,其目标节点有三个分别为:节点A、节点D和节点F,那么对于一个子地图数据(即本发明实施例中描述的第一子地图数据)来说,就包括源节点C(即本发明实施例中描述的第一节点)的ID和该源节点C的边所链接的目标节点A的ID、目标节点D的ID和目标节点F的ID,在第一子地图数据中节点D和节点F为dangling节点,处理机对于属于dangling节点的目标节点D和目标节点F分别分发的权值,例如处理机为节点D分发的权值为Value2,处理机为节点F分发的权值为Value3,则处理机对Value2和Value3进行合并,并将权值合并后的结果作为第一节点(节点C)在第一super step中对应的dangling分数,通常处理机还可以设置一个虚拟节点,将Value2和Value3的权值合并后可以累加到该虚拟节点上,以该虚拟节点上的dangling分数作为该处理机的总dangling分数。
[0065] 103、处理机将在上述第一super step中对上述第一子地图数据中的每一个目标节点分别生成的消息存储到上述分布式文件系统中。
[0066] 在本发明实施例中,处理机在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息之后,处理机将为每一个目标节点分别生成的消息存储到分布式文件系统中。其中,处理机将生成的多个消息存储到分布式文件系统中具有多种实现方式,例如,处理机每为一个目标节点生成一个消息后,就可以将单独生成的消息存储到分布式文件系统中,可以理解的是,这是一种效率较为低下的存储方式,通常适用于源节点的边所链接的目标节点较少的情况,在源节点的边所链接的目标节点很多时,还可以采用消息合并(combiner)的方式,本发明实施例中处理机采用消息合并的方式可以有多种,例如处理机可以采用内存合并的方式,处理机还是可以采用本地合并的方式,处理机还可以将内存合并和本地合并相结合方式,接下来对消息合并的方式进行详细说明。
[0067] 在本发明的一些实施例中,步骤103处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,具体可以包括:
[0068] B1、处理机将在第一super step中每生成一个消息后,就将生成的消息留存在处理机的内存中;
[0069] B2、当处理机的内存中留存的消息数量达到预置的消息记录数时,处理机将内存中留存的消息发送到处理机的本地数据缓冲区,其中,本地数据缓冲区中还存储有处理机对第二子地图数据中的每个目标节点分别生成的消息,第二子地图数据包括第二节点的ID和第二节点的边所链接的目标节点的ID;
[0070] B3、当本地数据缓冲区中存储的消息超过容量限时,将本地数据缓冲区中存储的消息批量存储到分布式文件系统中。
[0071] 其中对于步骤B1来说,处理机在第一super step中每生成一个消息后,并不是立刻发往分布式文件系统中,而是生成单个的消息后先留存在处理机的内存中,处理机同时监测内存中留存的消息数量,并对比于设定的消息记录数,对于步骤B2,当处理机的内存中留存的消息数量大于预置的消息记录数时,处理机可以内存中留存的消息全部发送到处理机的本地数据缓冲区,可见,处理机在内存中留存的消息数量达到一定数量时,统一的发送到处理机的本地数据缓冲区,这样可以降低处理机的输入/输出(Input/Output)接口的开销。当处理机将内存中留存的消息发送到处理机的本地数据缓冲区中之后,处理机存储的消息先存储在本地数据缓冲区,例如,处理机在处理第一子地图数据时,处理机还负责处理第二子地图数据,则处理机可以将对第二子地图数据中的每个目标节点分别生成的消息存储在本地数据缓冲区中,通过这样的方式,处理机的本地数据缓冲区中就会存储有处理机针对第一子地图数据生成的消息,还存储有针对第二子地图数据生成的消息。对于步骤B3,当本地数据缓冲区已满时,处理机再将本地数据缓冲区中存储的数据批量存储到分布式文件系统中,这样就可以减少处理机频繁向分布式文件系统传输数据带来的开销。
[0072] 需要说明的是,在本发明另一些实施例中,为了进一步的降低处理机的开销,步骤B2处理机将内存中留存的消息发送到处理机的本地数据缓冲区之后,还包括如下步骤:处理机将本地数据缓冲区中对相同目标节点分别生成的消息进行合并和压缩。也就是说,在处理机将多个消息都存储到本地数据缓冲区中之后,处理机还可以根据对被发送到同一个目标节点的消息进行合并和压缩,以降低处理机发送消息到分布式文件系统带来的资源开销。例如,如图2-B所示,第一子地图数据中包括节点C的ID以及节点C的边所链接的目标节点B、D、F,第二子地图数据中包括节点E以及节点E的边所链接的目标节点F,则对于第一子地图数据和第二子地图数据来说,就有一个共同的目标节点F,处理机负责处理第一子地图数据和第二子地图数据,在分别为各个子地图数据中包括的多个目标节点生成消息后,处理机针对第一子地图数据中包括的目标节点F生成消息messBge1,处理机针对第二子地图数据中包括的目标节点F生成消息messege2,则处理机就可以对messBge1和messBge2进行合并和压缩。在超级步的链接计算中,单个节点的计算量很小,并不会占用过多的CPU资源,CPU资源相对比较充足,故可以使用激进的压缩算法,比如ZLIB,得到更高的压缩比,来减少网络传输时间。其中可以压缩的数据包括:地图数据、消息数据等。
[0073] 例如如图3所示,在worker之间传递消息是有代价的,因此需要尽可能减少传输量,需要对同一个doc id的值进行合并,通常可可以有两种合并方式:
[0074] 1)内存合并(Combiner),只有内存中留存的消息数量达到一定消息记录数后,才发出到本地数据缓冲区中。
[0075] 2)、本地合并(Combiner),将消息首先放在本地数据缓冲区进行合并后,再发送到分布式文件系统XFS中。
[0076] 图3中,对于子地图数据graph-id来说,生成消息有0、1、…、n+1、n+2,其中从消息0到消息n,共n+1个消息后达到了消息记录数,然后统一的发送到本地数据缓冲区,然后在本地数据缓冲区中对消息在进行合并后,得到合并后的消息(也称之为大消息,合并之前可以称为小消息),并在XFS中保留检查(check point)数据。
[0077] 需要说明的是,在本发明的一些实施例中,步骤103处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中之后,本发明实施例还可以包括如下步骤:
[0078] C1、处理机监测超级步的轮次信息是否发生更新;
[0079] C2、若超级步的轮次信息从第一super step更新为第二super step,处理机在第二super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,并将生成的消息存储到分布式文件系统中。
[0080] 其中,步骤C1中管理服务器负责管理更新超级步的轮次信息,每当管理服务器对超级步的轮次信息更新之后,管理服务器就将更新后的超级步的轮次信息存储到分布式文件系统中,处理机监测分布式文件系统中存储的超级步的轮次信息是否有更新,当超级步的轮次信息有更新时,执行步骤C2,其中,步骤C2与本发明实施例中前述的步骤102和步骤103相类似,对步骤102和步骤103的内容描述详见前述步骤中的说明,此处不再赘述,其中步骤C2和步骤102、步骤103的不同之处在于,步骤C2是对步骤102、步骤103中的当前超级步(即为第一超级步)的下一个超级步的计算进行说明的。
[0081] 需要说明的是,本发明实施例中前述步骤101至步骤103描述的是一个处理机对消息的分发过程,并且本发明实施例中,处理机在对消息的分发执行过程中,处理机还可以执行消息的处理过程,那么当处理机将分发的消息存储到分布式文件系统之后,其它处理机就可以根据各自处理机所负责处理的节点的ID从分布式文件系统中获取到属于自己的消息。同样的,当一个处理机在执行对消息的分发过程中时,该处理机同样也可以监测分布式文件系统,监测是否有其它处理机为该处理机负责的节点生成有消息,当监测到有消息时,处理机可以从分布式文件系统中获取到其它处理机分发的属于该处理机负责处理的消息。接下来对本发明实施例中处理机对消息的处理过程,请参阅如下步骤的说明。
[0082] 本发明实施例中链接分析的计算方法还可以包括如下步骤:
[0083] D1、处理机监测分布式文件系统中第一节点对应的源节点是否为第一节点生成有消息,其中,第一节点为上述源节点的目标节点;
[0084] D2、若源节点为第一节点生成有消息,处理机从分布式文件系统中获取源节点为第一节点生成的消息;
[0085] D3、处理机对所有源节点为第一节点分发的权值进行合并,得到第一节点的权值。
[0086] 其中,步骤D1中,处理机会预先监测分布式文件系统中第一节点对应的源节点是否为第一节点生成有消息,处理机遍历分布式文件系统中所有处理机在第一super step的计算中生成的全部消息,步骤D2中处理机根据第一节点的ID查找将第一节点作为目标节点的所有源节点生成的消息,处理机得到属于自己负责处理的所有消息,然后步骤D3中处理机对收到的所有源节点对第一节点分发的权值进行合并,将合并后的权值更新到上述第一节点的权值中,作为第一节点的权值。可见,本发明实施例中,处理机对第一节点对应的源节点为该第一节点生成的消息进行预先监测,并可以及时处理获取到的所有源节点为第一节点生成的消息,故可以提高处理机对第一节点的消息的处理效率。
[0087] 为了保证处理机对消息进行处理能够全部完成,不会丢掉正在处理的权值合并结果,处理机还可以建立容错机制,在本发明的一些实施例中,步骤D2处理机对所有源节点为第一节点分发的权值进行合并,具体可以包括如下步骤:处理机对每N个源节点为第一节点分发的权值进行合并后,备份当前得到的第一节点的权值,并记录下已经处理过的源节点的ID,N为自然数。N为处理消息的个数,即处理机每处理N个消息就备份一下当前权值合并后的第一节点的权值,并记录下哪些消息已经被处理过,例如可以在每次备份时写一个检查(check point)文件,包括所有完成处理的消息列表。
[0088] 需要说明的是,在本发明的一些实施例中,为了能够使用户监测到处理机在执行super step计算时的运行状态,本发明实施例提供的链接分析的计算系统中还是设置运营支撑系统(OSS,Operation Support System),向用户显示状态,并随时统计上报数据,并对处理机的任务执行进程进行监控。
[0089] 由上述的实施例描述可知,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0090] 本发明链接分析的计算方法的一个实施例,接下来从管理服务器的角度来描述,可以包括:管理服务器将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和上述源节点的边所链接的目标节点的ID;管理服务器将上述多个子地图数据存储到分布式文件系统;管理服务器监测每个处理机是否已经根据上述子地图数据完成第一super step的计算。
[0091] 请参阅图4所示,本发明另一个实施例提供的链接分析的计算方法,可以包括如下步骤:
[0092] 401、管理服务器将地图数据划分为多个子地图数据。
[0093] 其中,每个子地图数据包括一个源节点的ID和上述源节点的边所链接的目标节点的ID。
[0094] 在本发明实施例中,链接分析的计算系统中部署有一个管理服务器、多个的处理机和分布式文件系统,其中,管理服务器通常作为master,处理机作为worker,每个处理机都独立处理属于各自处理机负责的数据。管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据。其中,分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地主机上,而是通过计算机网络与其它主机相连。分布式文件系统可以基于客户端/服务器模式来实现,例如网络架构可能包括多个供多客户端访问的服务器,管理服务器可以将子地图数据存储到分布式文件系统中,管理服务器向处理机发布一个允许其访问的存储目录,一旦处理机成功访问分布式文件系统,处理机就可以根据这个目录查找对应的子地图数据。
[0095] 在本发明实施例中,地图数据中包括所有的源节点以及每个源节点的边所链接的目标节点,还包括有每个节点的网页数据,其中,源节点又称之为父节点,目标节点也称之为子节点,源节点的出链指向该源节点的边所链接的目标节点,目标节点的入链指向该目标节点的边被链接的源节点。源节点和目标节点指相对于这两个节点之间才有意义,例如,一个源节点出链为一个目标节点,但是该目标节点可能是下一个链接关系中的源节点,其中地图数据中的节点之间的链接关系通常保存在锚文本系统中。
[0096] 需要说明的是,在本发明实施例中,地图数据中还包括一种悬挂(dangling)节点,其中,dangling节点指的是只有入链没有出链的目标节点,例如,如图2-a所示,节点D和节点F都是源节点C的目标节点,但是节点D和节点F都只有入链而没有出链,同样的,对于图2-b所示,节点J和节点K都是只有入链没有出链的目标节点,故节点J和节点K也可以称之为dangling节点。其中一个节点是Dangling节点的情况很多,例如,有的网页页面可能本身就没有出链,这个网页页面就是dangling节点,也有可能因为下载调度以及其它过滤策略原因使得一个网页页面未被下载或出链被过滤掉,这种情况下也会导致一个网页页面为dangling节点。
[0097] 在本发明实施例中,管理服务器对地图数据的切分是根据节点和该节点的链接关系进行切分的,请参阅如图2-a所示,节点A的出链为节点B,节点A的入链为节点C,节点B的出链为节点C,节点C的出链为节点D和节点F,节点E的出链为节点F。如图2-a所示为地图数据,也称之为链接地图,每个节点表示一个网页,对于图2-a,有出链的网页A为父页面,有入链的网页B为网页A的子页面。对于图2-a所示,共有节点6个,每个节点都有一个节点ID,管理服务器就需要将地图数据划分6个子地图数据,并且对于每个子地图数据,还需要指明相对于源节点哪些目标节点为dangling节点的信息,请参阅如下表1所示,为本发明实施例中对图2-a所示的地图数据划分6个子地图数据的划分结果示意表:
[0098] 表1
[0099]子地图数据 源节点 目标节点 Dangling节点
子地图数据A 节点A 节点B 无
子地图数据B 节点B 节点C 节点
子地图数据C 节点C 节点A、D、F 节点D、F
子地图数据D 节点D 无 无
子地图数据E 节点E 节点F 节点F
子地图数据F 节点F 无 无
[0100] 通过上表1的描述可知,管理服务器将地图数据划分为6个子地图数据,在每个子地图数据中包括有一个源节点的ID和该源节点的边所链接的目标节点的ID,具体的,对于源节点为第一节点,管理服务器生成的第一子地图数据包括:第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID,对于源节点为第二节点,管理服务器生成的第二子地图数据包括:第二子地图数据包括第二节点的ID和第二节点的边所链接的目标节点的ID。
[0101] 前述实施例中对地图数据进行了详细说明,管理服务器根据每一个节点和该节点的链接关系将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点和该源节点的边所链接的目标节点,以图2-a为例,节点C作为源节点时,其目标节点有三个分别为:节点A、节点D和节点F,那么对于一个子地图数据(即本发明实施例中描述的第一子地图数据)来说,就包括源节点C(即本发明实施例中描述的第一节点)的ID和该源节点C的边所链接的目标节点A的ID、目标节点D的ID和目标节点F的ID,并且第一子地图数据中还包括节点C、节点A、节点D和节点F的网页数据。另外,根据前述对dangling节点的说明可知,在第一子地图数据中节点D和节点F为dangling节点,故在第一子地图数据中还携带指示节点D和节点属于dangling节点的信息。
[0102] 402、管理服务器将上述多个子地图数据存储到分布式文件系统。
[0103] 在本发明实施例中,管理服务器在将地图数据划分为多个子地图数据后,管理服务器将划分后的多个子地图数据存储到分布式文件系统中。本发明实施例中,管理服务器在将地图数据切分为多个子地图数据中之后,由于管理服务器可以将多个子地图数据存储到分布式文件系统之中,而不会常驻管理服务器的内存,所以并不会导致对内存的长期占用,由于每个处理机从分布式文件系统中只获取属于自己负责处理的子地图数据,而不需要将所有的子地图数据都加载到处理机的内存中,故对于每个处理机来说子地图数据并不会占用过多的内存,不会带来计算成本随着地图数据规模的增加而急剧的上升。
[0104] 403、管理服务器监测每个处理机是否已经根据上述子地图数据完成第一super step的计算。
[0105] 在本发明实施例中,管理服务器在将子地图数据存储到分布式文件系统中之后,每个处理机分别可以从分布式文件系统中获取到属于自己的子地图数据,并且每个处理机需要根据子地图数据完成超级步super step的计算。并且在各个处理机执行super step的计算过程中,以前述实施例中处理机执行第一super step的计算为例,管理服务器监测每个处理机是否已经根据子地图数据完成第一super step的计算。
[0106] 需要说明的是,在本发明的一些实施例中,链接分析的计算方法还可以包括如下步骤:
[0107] 若所有处理机已经完成第一super step的计算,将超级步的轮次信息从第一super step更新为第二super step,并将更新后的所述超级步的轮次信息存储到分布式文件系统中;
[0108] 管理服务器监测每个处理机是否已经根据子地图数据完成第二super step的计算。
[0109] 也就是说,本发明实施例中管理服务器在监测到所有的处理机都已经完成第一super step的计算之后,管理服务器需要更新超级步的轮次信息,将超级步的轮次信息从第一super step更新为第二super step,并继续监测每个处理机是否已经根据子地图数据完成第二super step的计算。
[0110] 需要说明的是,在本发明的一些实施例中,链接分析的计算方法还可以包括如下步骤:
[0111] 若所有处理机都已经完成第一super step的计算,管理服务器获取每个处理机在完成第一super step的计算后发送的悬挂dangling分数;
[0112] 管理服务器将每个处理机在完成第一super step的计算后发送的dangling分数进行合并,并计算出第一super step对应的dangling平均分数;
[0113] 管理服务器将第一super step对应的dangling平均分数发送给每个处理机。
[0114] 也就是说,在每个处理机完成第一super step的计算之后,每个处理机就可以在完成第一super step的计算后发送dangling分数到分布式文件系统中,则管理服务器就可以获取到每个处理机在完成第一super step的计算后发送的dangling分数。管理服务器在获取到每个处理机在完成第一super step的计算后发送的dangling分数之后,对所有的dangling分数进行合并,并计算出第一super step对应的dangling平均分数,并将dangling平均分数存储到分布式文件系统之中,由每个处理机从分布式文件系统获取到第一super step对应的dangling平均分数,并在每个处理机进行第二super step的计算之前,更新自己负责处理的节点的dangling分数。
[0115] 需要说明的是,在本发明的一些实施例中,链接分析的计算方法还可以包括如下步骤:
[0116] 当超级步的轮次信息更新完所有super step后,管理服务器监测每个处理机是否已经根据子地图数据完成所有super step的计算;
[0117] 若所有处理机都已经完成所有super step的计算,管理服务器获取每个处理机在完成所有super step的计算后发送的dangling分数;
[0118] 管理服务器将每个处理机在完成所有super step的计算后发送的dangling分数进行合并,并计算出所有super step对应的dangling平均分数;
[0119] 管理服务器将所有super step对应的dangling平均分数发送给每个处理机。
[0120] 此处管理服务器在超级步的轮次信息更新完所有super step后,监测到每个处理机都完成了所有super step的计算,这与前述的对第二super step的描述相类似,此处不再赘述。
[0121] 需要说明的是,在本发明的一些实施例中,链接分析的计算方法还可以包括管理服务器的容错机制。具体的,链接分析的计算方法还可以包括如下步骤:
[0122] 管理服务器监测每个处理机在执行第一super step的计算时的运行状态,其中,运行状态指的是处理机的计算效率或者是否正常工作的指示;
[0123] 管理服务器将计算效率最低或者不正常工作的处理机所执行的计算任务迁移到另一个处理机,并通过计算效率最低或者不正常工作的处理机退出。
[0124] 也就是说,管理服务器可以监测每个处理机在执行第一super step的计算时的运行状态,对于计算效率最低或者不能正常工作的处理机迁移到另一个处理机,并通过计算效率最低或者不正常工作的处理机退出。
[0125] 需要说明的是,在本发明的一些实施例中,为了能够使用户监测到管理服务器的运行状态,本发明实施例提供的链接分析的计算系统中还是设置运营支撑系统,向用户显示状态,并随时统计上报数据,并对管理服务器的任务执行进程进行监控。
[0126] 需要说明的是,在本发明实施例中,链接分析的计算系统中在管理处理机和管理服务器时,可以基于分布式调度系统来实现,例如使用分布式调度系统torca来实现,则管理服务器相当于torca中的一个job,并且只有一个task,处理机也可以用分布式调度系统torca来管理和调度。
[0127] 由上述的实施例描述可知,管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0128] 为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
[0129] 请参阅如图5所示,为本发明实施例中另一种链接分析的计算方法的计算流程示意图。
[0130] 其中,具体可以包括如下步骤:
[0131] S01、首先由master启动,master预处理地图数据并划分成多个子地图数据。
[0132] S02、所有的worker启动,以master共管理3个worker为例,分别为worker1、worker2、worker,
[0133] S03、master监测是否已经完成所有的super step计算,若没有完成所有super step计算,执行步骤S04,若已经完成所有super step的计算,执行步骤S09.[0134] S04、启动下一轮的super step的迭代计算。
[0135] S05、worker1读取子地图数据并进行super step的计算。
[0136] S06、worker2读取子地图数据并进行super step的计算。
[0137] S07、worker3读取子地图数据并进行super step的计算。
[0138] S08、master监测所有的worker是否已经完成运算,然后,触发步骤S03再次执行。
[0139] S09、master获取所有worker反馈的权值,进行归一化处理,并计算dangling平均分数。
[0140] 需要说明的是,图5所示的实施例只是说明了链接分析的计算方法的整个计算流程框架,其中master和worker的详细说明,请参阅前述实施例中的说明,此处不再赘述。
[0141] 接下来以一个实际的应用场景来说明本发明实施例中链接分析的计算系统在具体实现时的逻辑框架示意图,请参阅如图6所示,链接分析的计算系统,主要包括:master、worker1和worker2、OSS、分布式文件系统XFS,其中,此处实施例中以两个worker为例进行说明,在实际应用中可以根据链接分析的计算量设置worker的数量。
[0142] 其中,master需要执行消息处理功能、任务监控功能、信息汇总功能、备份容错功能,其中,对于master的上述功能描述可参阅前述实施例中对管理服务器的详细说明,此处不再赘述。
[0143] worker1和worker2执行的功能相类似,总共包括子地图数据读取功能、超级步计算功能、消息处理功能和状态监控功能,对于worker的上述功能描述可参阅前述实施例中对处理机的详细说明,此处不再赘述。
[0144] 其中,分布式文件系统XFS主要用于执行子地图存储功能、消息数据存储功能。对于分布式文件系统中存储的消息,其消息格式具体可以为如图7所示的消息格式示意图。其中,可以将所有worker的消息只写成一个文件的方式,每段消息格式为二进制。并且通过消息索引将哪个目标节点对应的消息指出,例如消息索引包括有n个索引,分别为offset1、offset2、……、offset n-1、offset n,每个消息索引对应一个消息,共包括有n个消息,分别为消息1、消息2、……、消息n-1、消息n。
[0145] OSS主要用于执行状态显示功能、统计上报功能、进程监控功能,OSS向用户显示状态,并随时统计上报数据,并对worker1、worker2、master的任务执行进程进行监控。
[0146] 通过如上举例说明可知,管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0147] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0148] 为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
[0149] 请参阅图8所示,本发明实施例提供的一种处理机800,可以包括:子地图获取模块801、权值分发模块802、消息存储模块803,其中,
[0150] 子地图获取模块801,用于从分布式文件系统中获取管理服务器预处理生成的第一子地图数据,所述第一子地图数据包括第一节点的身份识别码ID和所述第一节点的边所链接的目标节点的ID;
[0151] 权值分发模块802,用于在第一超级步super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息,所述消息包括所述处理机在第一super step中为所述第一子地图数据中的每一个目标节点分发的权值;
[0152] 消息存储模块803,用于将在所述第一super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
[0153] 在本发明的一些实施例中,所述消息存储模块801,具体可以包括:
[0154] 消息留存子模块,用于将在所述第一super step中每生成一个消息后,就将生成的消息留存在所述处理机的内存中;
[0155] 消息本地存储子模块,用于当所述处理机的内存中留存的消息数量达到预置的消息记录数时,将所述内存中留存的消息发送到所述处理机的本地数据缓冲区,所述本地数据缓冲区中还存储有所述处理机对所述第二子地图数据中的每个目标节点分别生成的消息,所述第二子地图数据包括第二节点的ID和所述第二节点的边所链接的目标节点的ID;
[0156] 批量存储子模块,用于当所述本地数据缓冲区中存储的消息超过容量门限时,将所述本地数据缓冲区中存储的消息批量存储到所述分布式文件系统中。
[0157] 在本发明的另一些实施例中,所述消息存储模块801,还可以包括:
[0158] 消息压缩子模块,用于所述处理机将所述本地数据缓冲区中对相同目标节点分别生成的消息进行合并和压缩。
[0159] 在本发明的一些实施例中,所述第一子地图数据中还包括:所述第一节点的边所链接的目标节点中属于悬挂dangling节点的目标节点;
[0160] 则处理机800,还包括:分数计算模块和分数存储模块,其中,
[0161] 所述分数计算模块,用于将对属于dangling节点的目标节点分发的权值进行合并,得到所述第一节点在所述第一super step中对应的dangling分数;
[0162] 所述分数存储模块,用于将所述第一节点在所述第一super step中对应的dangling分数存储到所述分布式文件系统中,以使所述管理服务器通过所述分布式文件系统获取到在完成所述第一super step的计算后所述第一节点对应的dangling分数。
[0163] 在本发明的另一些实施例中,所述处理机800,还包括:
[0164] 消息监测模块,用于监测所述分布式文件系统中所述第一节点对应的源节点是否为所述第一节点生成有消息,所述第一节点为所述源节点的目标节点;
[0165] 消息获取模块,用于若所述源节点为所述第一节点生成有消息,从所述分布式文件系统中获取所述源节点为所述第一节点生成的消息;
[0166] 权值合并模块,用于对所有源节点为所述第一节点分发的权值进行合并,得到所述第一节点的权值。
[0167] 在本发明的一些实施例中,所述权值分发模块,具体用于对每N个源节点为所述第一节点分发的权值进行合并后,备份当前得到的所述第一节点的权值,并记录下已经处理过的源节点的ID,所述N为自然数。
[0168] 在本发明的另一些实施例中,所述处理机800,还包括:超级步监测模块,其中,[0169] 所述超级步监测模块,用于监测超级步的轮次信息是否发生更新;
[0170] 所述权值分发模块,还用于当所述超级步的轮次信息从所述第一super step更新为第二super step时,在第二super step中对所述第一子地图数据中的每一个目标节点进行权值分发,针对所述第一子地图数据中的每一个目标节点分别生成消息;
[0171] 所述消息存储模块,还用于将在所述第二super step中对所述第一子地图数据中的每一个目标节点分别生成的消息存储到所述分布式文件系统中。
[0172] 通过上述的实施例描述可知,处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0173] 请参阅图9所示,本发明实施例提供的一种管理服务器900,可以包括:地图预处理模块901、子地图存储模块902、计算监测模块903,其中,
[0174] 地图预处理模块901,用于将地图数据划分为多个子地图数据,其中,每个子地图数据包括一个源节点的ID和所述源节点的边所链接的目标节点的ID;
[0175] 子地图存储模块902,用于将所述多个子地图数据存储到分布式文件系统;
[0176] 计算监测模块903,用于监测每个处理机是否已经根据所述子地图数据完成第一超级步super step的计算。
[0177] 在本发明的一些实施例中,所述管理服务器900,还包括:
[0178] 超级步更新模块,用于当所有处理机已经完成第一super step的计算时,将超级步的轮次信息从所述第一super step更新为第二super step,并将更新后的所述超级步的轮次信息存储到所述分布式文件系统中;
[0179] 所述计算监测模块,还用于监测所述每个处理机是否已经根据所述子地图数据完成第二super step的计算。
[0180] 在本发明的一些实施例中,所述管理服务器900,还包括:
[0181] 分数获取模块,用于当所有处理机都已经完成第一super step的计算时,获取所述每个处理机在完成所述第一super step的计算后发送的悬挂dangling分数;
[0182] 平均分数获取模块,用于将所述每个处理机在完成所述第一super step的计算后发送的dangling分数进行合并,并计算出所述第一super step对应的dangling平均分数;
[0183] 平均分数发送模块,用于将所述第一super step对应的dangling平均分数发送给所述每个处理机。
[0184] 在本发明的一些实施例中,所述管理服务器900,还包括:分数获取模块、平均分数获取模块和平均分数发送模块,其中,
[0185] 所述计算监测模块,还用于当所述超级步的轮次信息更新完所有super step后,监测所述每个处理机是否已经根据所述子地图数据完成所有super step的计算;
[0186] 所述分数获取模块,用于当所有处理机都已经完成所有super step的计算时,获取每个处理机在完成所述所有super step的计算后发送的dangling分数;
[0187] 所述平均分数获取模块,用于将所述每个处理机在完成所述所有super step的计算后发送的dangling分数进行合并,并计算出所述所有super step对应的dangling平均分数;
[0188] 所述平均分数发送模块,用于将所述所有super step对应的dangling平均分数发送给所述每个处理机。
[0189] 在本发明的一些实施例中,所述管理服务器900,还包括:
[0190] 效率监测模块,用于监测所述每个处理机在执行所述第一super step的计算时的运行状态,所述运行状态指的是所述处理机的计算效率或者是否正常工作的指示;
[0191] 任务迁移模块,用于将计算效率最低或者不正常工作的处理机所执行的计算任务迁移到另一个处理机,并通过计算效率最低或者不正常工作的处理机退出。
[0192] 在本发明实施例中,管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0193] 请参阅图10所示,本发明实施例提供的一种链接分析的计算系统1000,包括:管理服务器900、两个以上的处理机800(图10中仅示出了一个处理机)、分布式文件系统1001,其中,
[0194] 管理服务器900为如图9所示实施例中任一处所述的管理服务器,处理机800为两个以上的如图8中任一处所述的处理机,所述管理服务器900和所述处理机800分别与所述分布式文件系统之间具有通信连接。
[0195] 综上实施例可知,管理服务器首先对地图数据进行预处理,根据节点和该节点的链接关系将地图数据划分为多个子地图数据,管理服务器将所有子地图数据存储到分布式文件系统中,多个处理机根据各自所负责处理的节点分别从分布式文件系统中获取到属于各个处理机负责处理的子地图数据,其中一处理机获取到第一子地图数据之后,上述处理机在第一super step中对第一子地图数据中的每一个目标节点进行权值分发,针对第一子地图数据中的每一个目标节点分别生成消息,然后上述处理机将在第一super step中对第一子地图数据中的每一个目标节点分别生成的消息存储到分布式文件系统中,在处理机进行第一super step的计算时管理服务器监测处理机是否已经根据子地图数据完成第一super step的计算。由于本发明实施例中管理服务器可以将地图数据切割为多个子地图数据,而每个处理机只负责处理属于自己的子地图数据而无需加载所有的地图数据,所以当地图数据很大时,每个处理机只处理自己负责的子地图数据并不会占用过多的内存,不会带来计算成本的急剧上升,并且本发明实施例中处理机在每一次的super step计算后都会将对每个目标节点分别生成的消息存储到分布式文件系统中,故处理机生成的消息数据也不会常驻内存,对内存需要有太高的要求。
[0196] 另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0197] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0198] 综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈