一种图数据处理方法、装置、设备及可读存储介质与流程

文档序号:24750542发布日期:2021-04-20 23:35阅读:85来源:国知局
一种图数据处理方法、装置、设备及可读存储介质与流程

1.本申请涉及计算机技术领域,特别涉及一种图数据处理方法、装置、设备及可读存储介质。


背景技术:

2.目前,各个物理节点在配合处理同一个图数据的过程中,需要相互通信。例如:物理节点a需要从物理节点b、c、d中分别获取一些处理结果,而物理节点b需要从物理节点a、c中获取一些处理结果。如此一来,不同物理节点之间频繁相互通信,会消耗较多计算机资源,降低了图数据的处理效率。
3.因此,在处理图数据的过程中,如何避免不同物理节点频繁通信,提高图数据的处理效率,是本领域技术人员需要解决的问题。


技术实现要素:

4.有鉴于此,本申请的目的在于提供一种图数据处理方法、装置、设备及可读存储介质,以在处理图数据的过程中,避免不同物理节点频繁通信,提高图数据的处理效率。其具体方案如下:
5.第一方面,本申请提供了一种图数据处理方法,应用于逻辑中心节点,包括:
6.获取目标图数据,并划分所述目标图数据获得多个子图;
7.将所述多个子图分发至多个物理节点,以使所述多个物理节点并行处理所述多个子图,获得多个处理结果;
8.收集所述多个处理结果,并对所述多个处理结果进行整合,获得整合结果;
9.若接收到任一个物理节点发送的数据获取请求,则根据所述数据获取请求从所述整合结果中选择并返回相应数据,以便所述任一个物理节点处理所述相应数据。
10.优选地,所述多个物理节点并行处理所述多个子图,获得多个处理结果,包括:
11.所述目标物理节点将至少一个子图存储至自身内存;所述目标物理节点为所述多个物理节点中的任一个;
12.利用numa技术将所述目标物理节点中的cpu核和内存,划分为至少一个numa集合,并针对每个numa集合绑定相应线程;
13.并行运行相应线程,获得任一个处理结果。
14.优选地,所述利用numa技术将所述目标物理节点中的cpu核和内存,划分为至少一个numa集合,包括:
15.确定所述目标物理节点中的cpu核的核数量,将所述核数量确定为所述numa集合的集合数量;
16.按照所述集合数量划分所述目标物理节点中的cpu核和内存,获得等于所述集合数量的numa集合;
17.对每个numa集合包括的cpu核和内存地址范围打标签。
18.优选地,所述划分所述目标图数据获得多个子图,包括:
19.将所述目标图数据按点分割或按边分割,以得到所述多个子图。
20.优选地,所述目标图数据为无向图、有向图或简单图。
21.优选地,所述收集所述多个处理结果,包括:
22.接收每个物理节点推送的处理结果。
23.优选地,所述对所述多个处理结果进行整合,获得整合结果之后,还包括:
24.若所述整合结果收敛,则发送处理成功的通知消息至所述多个物理节点。
25.第二方面,本申请提供了一种图数据处理装置,应用于逻辑中心节点,包括:
26.获取模块,用于获取目标图数据,并划分所述目标图数据获得多个子图;
27.分发模块,用于将所述多个子图分发至多个物理节点,以使所述多个物理节点并行处理所述多个子图,获得多个处理结果;
28.整合模块,用于收集所述多个处理结果,并对所述多个处理结果进行整合,获得整合结果;
29.反馈模块,用于若接收到任一个物理节点发送的数据获取请求,则根据所述数据获取请求从所述整合结果中选择并返回相应数据,以便所述任一个物理节点处理所述相应数据。
30.第三方面,本申请提供了一种图数据处理设备,包括:
31.存储器,用于存储计算机程序;
32.处理器,用于执行所述计算机程序,以实现前述公开的图数据处理方法。
33.第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的图数据处理方法。
34.通过以上方案可知,本申请提供了一种图数据处理方法,应用于逻辑中心节点,包括:获取目标图数据,并划分所述目标图数据获得多个子图;将所述多个子图分发至多个物理节点,以使所述多个物理节点并行处理所述多个子图,获得多个处理结果;收集所述多个处理结果,并对所述多个处理结果进行整合,获得整合结果;若接收到任一个物理节点发送的数据获取请求,则根据所述数据获取请求从所述整合结果中选择并返回相应数据,以便所述任一个物理节点处理所述相应数据。
35.可见,本申请设置了一个逻辑中心节点,该逻辑中心节点可以收集每个物理节点输出的处理结果,并对这些处理结果进行整合,获得整合结果。即:每个物理节点均与逻辑中心节点进行通信,而不同物理节点之间无需通信。若逻辑中心节点接收到任一个物理节点发送的数据获取请求,则根据数据获取请求从整合结果中选择并返回相应数据,以便任一个物理节点处理相应数据。本申请中的逻辑中心节点能够按照物理节点的需要同步相关数据给相关物理节点,可以避免各个物理节点在处理图数据的过程中频繁相互通信,因此可以节约物理节点的计算机资源,提高物理节点处理图数据的效率。
36.相应地,本申请提供的一种图数据处理装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
37.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
38.图1为本申请公开的一种图数据处理方法流程图;
39.图2为本申请公开的一种图数据示意图;
40.图3为本申请公开的一种图数据划分结果示意图;
41.图4为本申请公开的一种数据同步示意图;
42.图5为本申请公开的一种numa集合划分示意图;
43.图6为本申请公开的一种图数据处理装置示意图;
44.图7为本申请公开的一种图数据处理设备示意图。
具体实施方式
45.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
46.目前,各个物理节点在配合处理同一个图数据的过程中,需要相互通信。例如:物理节点a需要从物理节点b、c、d中分别获取一些处理结果,而物理节点b需要从物理节点a、c中获取一些处理结果。如此一来,不同物理节点之间频繁相互通信,会消耗较多计算机资源,降低了图数据的处理效率。为此,本申请提供了一种图数据处理方案,能够在处理图数据的过程中,避免不同物理节点频繁通信,提高图数据的处理效率。
47.参见图1所示,本申请实施例公开了一种图数据处理方法,应用于逻辑中心节点,包括:
48.s101、获取目标图数据,并划分目标图数据获得多个子图。
49.目标图数据可以为无向图、有向图或简单图。划分目标图数据可以采用按点分割或按边分割方式,划分具体过程可参照现有相关技术,本实施例不再赘述。
50.其中,逻辑中心节点可以为众多物理节点中的任一个,也可以是新创建的、专用于整合数据的节点。所有物理节点处理同一个图数据的过程可以认为是在执行olap(online analytical processing,联机分析处理)任务。
51.在一种具体实施方式中,划分目标图数据获得多个子图,包括:将目标图数据按点分割或按边分割,以得到多个子图。
52.例如:按顶点b和c划分如图2所示的无向图,可获得3个子图。请参见图3,子图1(包括a主副本和b镜像副本)被分发至物理节点1,子图2(包括b主副本和c镜像副本)被分发至物理节点2,子图3(包括c主副本和d主副本)被分发至物理节点3。其中,白色顶点表示主副本,灰色顶点表示镜像副本。
53.这三个物理节点处理这些子图的过程即:这三个物理节点计算联通分量数目的过程,具体可参照下述示例。
54.1、标记所有顶点均为活跃状态
55.2、针对所有活跃的顶点,如果其没有分配编号,则给该顶点分配唯一编号;如果该
顶点被切分,那么推送该编号到逻辑中心节点。各物理节点遍历分配给自己的子图,以给子图中的各个顶点分配编号。遍历方式可采用bfs、dfs、a*等遍历算法进行。如果一个顶点的所有孩子节点均被遍历,则标记该顶点为不活跃状态。
56.3、一轮迭代结束,所有顶点都是不活跃状态。
57.(1)假设在3个物理节点上,第一次计算结果为:
58.物理节点1——a编号:1

1,b编号:1

1;
59.物理节点2——b编号:2

1,c编号:2

1;
60.物理节点3——c编号:3

1,d编号:3

1;
61.所有编号(即多个处理结果)汇总到逻辑中心节点进行整合,主副本的编号覆盖镜像副本的编号,则有:b编号:2

1,c编号:3

1。其中,逻辑中心节点只需要汇总被切割顶点(本示例中的b和c)的信息。由于物理节点1上有一个b镜像副本,那么以物理节点1从逻辑中心节点上拉取b的新编号,从而更新物理节点1上b的编号为2

1后,标记b为活跃状态。由于物理节点2上有一个c镜像副本,那么以物理节点2从逻辑中心节点上拉取c的新编号,从而更新物理节点2上c的编号为3

1后,标记c为活跃状态。
62.(2)假设在3个物理节点上,第二次计算结果为:
63.物理节点1——a编号:2

1,b编号:2

1;
64.物理节点2——b编号:3

1,c编号:3

1;
65.物理节点3——c编号:3

1,d编号:3

1;
66.所有编号汇总到逻辑中心节点进行整合,主副本的编号覆盖镜像副本的编号,则有:b编号:3

1,c编号:3

1。由于物理节点1上有一个b镜像副本,那么以物理节点1从逻辑中心节点上拉取b的新编号,从而更新物理节点1上b的编号为3

1后,标记b为活跃状态。物理节点2和物理节点3中c编号相同(c主副本和c镜像副本的编号相同),故无需再做c编号的更新。
67.(3)假设在3个物理节点上,第三次计算结果为:
68.物理节点1——a编号:3

1,b编号:3

1;
69.物理节点2——b编号:3

1,c编号:3

1;
70.物理节点3——c编号:3

1,d编号:3

1;
71.所有编号汇总到逻辑中心节点进行整合,主副本的编号覆盖镜像副本的编号,仅得到3

1这一个连通分量标记,因此整合结果收敛,程序结束。
72.s102、将多个子图分发至多个物理节点,以使多个物理节点并行处理多个子图,获得多个处理结果。
73.利用numa(non uniform memory access architecture,非统一内存访问)可以对任一个物理节点中的cpu资源和内存资源进行划分,从而得到至少一个numa集合。属于一个numa集合中的cpu核和内存地址范围具有对应关系,该cpu核访问该内存地址范围的速度,比其他cpu核访问该内存地址范围的速度快。一个numa集合中可以包括多个cpu核,这些cpu核访问其对应内存地址范围的速度基本没有差别。一个cpu核可以绑定至少一个线程,这些线程可以并行运行来处理其对应内存地址范围上存储的数据块。由于子图存储在内存上,而内存被划分至多个numa集合,因此子图被划分为多个数据块。
74.在一种具体实施方式中,多个物理节点并行处理多个子图,获得多个处理结果,包
括:目标物理节点将至少一个子图存储至自身内存;目标物理节点为多个物理节点中的任一个;利用numa技术将目标物理节点中的cpu核和内存,划分为至少一个numa集合,并针对每个numa集合绑定相应线程;并行运行相应线程,获得任一个处理结果。针对每个numa集合绑定相应线程,即:给numa集合中的每个cpu核绑定线程。
75.在一种具体实施方式中,利用numa技术将目标物理节点中的cpu核和内存,划分为至少一个numa集合,包括:确定目标物理节点中的cpu核的核数量,将核数量确定为numa集合的集合数量;按照集合数量划分目标物理节点中的cpu核和内存,获得等于集合数量的numa集合;对每个numa集合包括的cpu核和内存地址范围打标签,以表明哪些cpu核属于同一个numa集合,哪些cpu核属于不同numa集合,哪部分内存地址范围属于同一个numa集合,哪部分内存地址范围属于不同numa集合。
76.s103、收集多个处理结果,并对多个处理结果进行整合,获得整合结果。
77.在一种具体实施方式中,收集多个处理结果,包括:接收每个物理节点推送的处理结果。即:物理节点主动将处理结果推送给逻辑中心节点。同时,物理节点主动从逻辑中心节点拉取自己想要的数据。具体请参见图4。
78.s104、若接收到任一个物理节点发送的数据获取请求,则根据数据获取请求从整合结果中选择并返回相应数据,以便任一个物理节点处理相应数据。
79.其中,任一个物理节点处理相应数据后获得的处理结果仍然会被推送到逻辑中心节点中,然后逻辑中心节点执行s103,以进行数据整合。如此反复迭代,直至整合结果收敛。也就是:不同物理节点对于同一对象的处理结果相同。
80.在一种具体实施方式中,对多个处理结果进行整合,获得整合结果之后,还包括:若整合结果收敛,则发送处理成功的通知消息至多个物理节点。
81.可见,本申请实施例设置了一个逻辑中心节点,该逻辑中心节点可以收集每个物理节点输出的处理结果,并对这些处理结果进行整合,获得整合结果。即:每个物理节点均与逻辑中心节点进行通信,而不同物理节点之间无需通信。若逻辑中心节点接收到任一个物理节点发送的数据获取请求,则根据数据获取请求从整合结果中选择并返回相应数据,以便任一个物理节点处理相应数据。本申请中的逻辑中心节点能够按照物理节点的需要同步相关数据给相关物理节点,可以避免各个物理节点在处理图数据的过程中频繁相互通信,因此可以节约物理节点的计算机资源,提高物理节点处理图数据的效率。
82.参见图2所示,本申请实施例公开了一种图数据处理方案,包括:线程绑定部分和数据同步部分。
83.线程绑定部分包括:利用numa技术划分每个物理节点上的cpu资源和内存资源,并给每个cpu核绑定相应的线程。
84.一个物理节点即为一个服务器,一个服务器包括多个chip(即cpu),每个chip包括多个核(core)。请参见图5,将服务器中的cpu0和cpu1划分至不同node。(即numa集合),cpu0被划分至node0,cpu1被划分至node1。相应的,服务器的内存空间也被划分至node0和node1中。此时,由于内存空间上存储有相应的子图,因此子图被划分为数据块0和数据块1。可以给cpu0和数据块0所占用的内存地址范围添加node0的标签,使得服务器中的cpu资源和内存资源隶属于不同node,使用特定的core访问对内存上的数据,会加快访存速度,最终提高运算效率。
85.一般node的数量和cpu的数量相同。可以对一个服务器中的所有cpu进行node划分,也可以从其中选择出一部分cpu,对这一部分cpu进行node划分。
86.请参见图5,对于双路服务器来说,有两颗cpu,内存分为node0和node1两个集合,那么数据读取到内存后,根据其所在的地址范围,根据1划分数据,打上0或1的标签,分别代表node0,node1集合对应的数据。
87.进行线程绑定时,首先使用numa实用工具查询node集合对应的cpu核列表;其次将一半的线程绑定到node0对应的cpu核上,另一半绑定到node1对应的cpu核上。控制这些线程并行运行来处理内存上的数据。若某一线程与某一cpu核具有绑定关系,则表明该线程与该cpu核具有亲和性。其中,线程可以提前创建好,然后存储于pthread库中。
88.请参见图4,数据同步部分包括:各个物理节点采用推送方式,将处理结果传递到逻辑中心节点进行数据整合。同时,各个物理节点采用主动拉取方式从逻辑中心节点拉取自己需要的数据。实际实现中,逻辑中心节点可以是任意的一个实际的物理节点。
89.本实施例提出了一种加速的图计算方法,均适用于离线计算模式。离线计算模式有两种:一种利用数据本地性,在存储节点上进行计算,这种方式存储和计算是一体的。第二种是利用外部spark等计算集群,将数据传输到计算集群,这种方式存储和计算是分离的。
90.本实施例在不同物理节点之间和单节点内部都进行了数据划分,为加快处理速度,针对numa集合进行了线程绑定,提高了访存速度,加快了单节点计算性能。同时,在每轮迭代计算后,利用逻辑中心节点收集并整合计算结果,然后各个物理节点采用拉取的方式按需同步自己想要的信息,以进行下一轮的迭代计算,直至达到指定轮次或者计算结果收敛。采用推拉结合的方式获取数据,可以有效利用带宽,加快数据的传输速率。
91.下面对本申请实施例提供的一种图数据处理装置进行介绍,下文描述的一种图数据处理装置与上文描述的一种图数据处理方法可以相互参照。
92.参见图6所示,本申请实施例公开了一种图数据处理装置,应用于逻辑中心节点,包括:
93.获取模块601,用于获取目标图数据,并划分目标图数据获得多个子图;
94.分发模块602,用于将多个子图分发至多个物理节点,以使多个物理节点并行处理多个子图,获得多个处理结果;
95.整合模块603,用于收集多个处理结果,并对多个处理结果进行整合,获得整合结果;
96.反馈模块604,用于若接收到任一个物理节点发送的数据获取请求,则根据数据获取请求从整合结果中选择并返回相应数据,以便任一个物理节点处理相应数据。
97.在一种具体实施方式中,目标物理节点将至少一个子图存储至自身内存;目标物理节点为多个物理节点中的任一个;利用numa技术将目标物理节点中的cpu核和内存,划分为至少一个numa集合,并针对每个numa集合绑定相应线程;并行运行相应线程,获得任一个处理结果。
98.在一种具体实施方式中,目标物理节点具体用于:
99.确定目标物理节点中的cpu核的核数量,将核数量确定为numa集合的集合数量;按照集合数量划分目标物理节点中的cpu核和内存,获得等于集合数量的numa集合;对每个
numa集合包括的cpu核和内存地址范围打标签。
100.在一种具体实施方式中,获取模块具体用于:
101.将目标图数据按点分割或按边分割,以得到多个子图。
102.在一种具体实施方式中,目标图数据为无向图、有向图或简单图。
103.在一种具体实施方式中,整合模块具体用于:
104.接收每个物理节点推送的处理结果。
105.在一种具体实施方式中,还包括:
106.通知模块,用于若整合结果收敛,则发送处理成功的通知消息至多个物理节点。
107.其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
108.可见,本实施例提供了一种图数据处理装置,该装置中的逻辑中心节点能够按照物理节点的需要同步相关数据给相关物理节点,可以避免各个物理节点在处理图数据的过程中频繁相互通信,因此可以节约物理节点的计算机资源,提高物理节点处理图数据的效率。
109.下面对本申请实施例提供的一种图数据处理设备进行介绍,下文描述的一种图数据处理设备与上文描述的一种图数据处理方法及装置可以相互参照。
110.参见图7所示,本申请实施例公开了一种图数据处理设备,包括:
111.存储器701,用于保存计算机程序;
112.处理器702,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
113.下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种图数据处理方法、装置及设备可以相互参照。
114.一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的图数据处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
115.本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
116.需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
117.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
118.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执
行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的可读存储介质中。
119.本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1