节点关联变量数量计算方法、节点异常识别方法及装置与流程

文档序号:30951015发布日期:2022-07-30 07:34阅读:166来源:国知局
节点关联变量数量计算方法、节点异常识别方法及装置与流程

1.本技术属于大数据计算技术领域,具体涉及一种节点关联变量数量计算方法、节点异常识别方法及装置。


背景技术:

2.图数据相较于传统关系型数据具有独特的优势,首先图数据可以免去表结构的建立,可以将原始数据根据需要抽象为图节点数据或者图关系数据,当需要查询图中数据的关联关系时,使用常见的图查询算法即可。但使用图数据进行计算的一个前提是图中节点为正常节点,若存在异常节点,会影响图数据计算结果的准确性。其中,通过计算关联变量的数量,识别出异常节点,即计算关注节点在几跳之内关联目标节点的数量,若关联目标节点的数量超出阈值则可识别出异常节点。具体过程为:将目标节点的id信息发送给邻居节点,邻居节点将消息再发送出去,进行消息传递,直到达到设置跳数消息传递停止,最后统计关注节点上接收的信息,得出关联变量的数值。如果存在超级节点,即一个节点关联的邻居数量很大,关联变量数量计算时,每次传递的消息都是邻居节点消息的合并之后的集合并且随着跳数的增加节点之间传递的消息的数量也会增加,消息在传递过程中,就会占用大量内存,导致计算任务不能正常执行,不能判定超级节点是否异常。


技术实现要素:

3.为至少在一定程度上克服存在超级节点时,节点间消息在传递过程中占用大量内存,导致计算任务不能正常执行,不能判定超级节点是否异常的问题,本技术提供一种节点关联变量数量计算方法、节点异常识别方法及装置。
4.第一方面,本技术提供一种节点关联变量数量计算方法,包括:
5.接收至少一个目标节点发送的字符串信息,所述字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;
6.将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;
7.将所有目标节点对应的参数信息进行合并得到元素集合;
8.统计所述元素集合中所有元素的数量得到关联变量数量值。
9.进一步的,还包括:
10.将目标节点的字符串信息发送至对应邻居节点;
11.对应邻居节点将目标节点将字符串信息进行传递,直到节点接收到预设消息传递跳数对应的所有目标节点发送的字符串信息。
12.进一步的,所述目标节点参数对应的hll数据结构获取方法包括:
13.对所述目标节点参数进行murmurhash转换得到hll数据结构。
14.进一步的,所述hll数据结构包括宽和高,还包括:
15.通过调整宽和高的值调节计数的误差率和内存占用的大小。
16.进一步的,所述hll数据结构的宽为8,高为18。
17.进一步的,所述序列化处理,包括:
18.将目标节点参数对应的hll数据结构转化成二进制数据得到目标节点参数对应的字符串信息。
19.进一步的,所述将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构,包括:
20.将目标节点参数对应的字符串信息恢复成目标节点参数对应的hll数据结构。
21.第二方面,本技术提供一种节点异常识别方法,包括:
22.根据第一方面所述节点关联变量数量计算方法计算出节点对应的关联变量数量值;
23.判断所述关联变量数量值是否超出预设阈值;
24.若是,判定所述节点为异常节点。
25.第三方面,本技术提供一种节点关联变量数量计算装置,包括:
26.接收模块,用于节点接收至少一个目标节点发送的字符串信息,所述字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;
27.处理模块,用于将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;
28.合并模块,用于将所有目标节点对应的参数信息进行合并得到元素集合;
29.输出模块,用于统计所述元素集合中所有元素的数量得到关联变量数量值。
30.第四方面,本技术提供一种节点异常识别装置,包括:
31.计算模块,用于根据第一方面所述节点关联变量数量计算方法计算出节点对应的关联变量数量值;
32.判断模块,用于判断所述关联变量数量值是否超出预设阈值;
33.识别模块,用于在所述关联变量数量值超出预设阈值时,判定所述节点为异常节点。
34.本技术的实施例提供的技术方案可以包括以下有益效果:
35.本发明实施例提供的节点关联变量数量计算方法、节点异常识别方法及装置,通过接收至少一个目标节点发送的字符串信息,字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;将所有目标节点对应的参数信息进行合并得到元素集合;统计元素集合中所有元素的数量得到关联变量数量值,由于hll数据结构可以有效地降低计算关联变量数量值所需的内存,从而可以保证计算任务的顺利执行,同时也可以支持更多跳数的关联变量数量计算。
36.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
37.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
38.图1为本技术一个实施例提供的一种节点关联变量数量计算方法的流程图。
39.图2~图9为本技术一个实施例提供的一种传统节点关联变量数量计算方法的流程图。
40.图10为本技术另一个实施例提供的一种节点关联变量数量计算方法的流程图。
41.图11为本技术一个实施例提供的另一种节点关联变量数量计算方法的流程图。
42.图12为本技术一个实施例提供的一种节点异常识别方法的流程图。
43.图13为本技术一个实施例提供的一种节点关联变量数量计算装置的功能结构图。
44.图14为本技术一个实施例提供的一种节点异常识别装置的功能结构图。
具体实施方式
45.为使本技术的目的、技术方案和优点更加清楚,下面将对本技术的技术方案进行详细的描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本技术所保护的范围。
46.图1为本技术一个实施例提供的节点关联变量数量计算方法的流程图,如图1所示,该节点关联变量数量计算方法包括:
47.s11:接收至少一个目标节点发送的字符串信息,字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;
48.本实施例中,目标节点参数为目标节点id或目标节点名称。
49.将目标节点id或目标节点名称转换为hll数据结构。hll是一种固定大小、类似于集合的结构,用于具有可调精度的不同值计数。hll有4种存储方式,分别是empty,explicit,sparse,full,并且这四种存储方式具有层次递进的关系。基于hll数据结构进行计数的存储方式变化过程包括:先初始化一个空集(empty)。当hll数据结构的计数值没有超过int((regwith*m+7)/8)取值,以显式的方式存储,计数也是准确的,存储空间也不会节省;当hll的计数值超过int((regwith*m+7)/8)取值,以sparse方式存储,sparse是一种基于映射的hyperloglog算法实现,是一种概率集合数据结构。只存储取值非零的桶,此方式是一种近似计数,但是存储空间会节省;当sparse存储桶的映射大小大于一定阈值时,就以full方式存储。full是基于列表的一种hyperloglog的实现方式,显式地按顺序存储桶的取值,此方式也是一种近似计数,但是会节省空间。对于超级节点的问题,当节点关联的邻居节点很多时,实际上不需要关注邻居节点的准确值,近似值往往就可以满足实际需求,因此可以通过hll数据结构减少计算所需内存。
50.s12:将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;
51.s13:将所有目标节点对应的参数信息进行合并得到元素集合;
52.s14:统计元素集合中所有元素的数量得到关联变量数量值。
53.传统节点关联变量数量计算方法是,将目标节点的id信息发送给邻居节点,邻居节点将目标节点的id信息转发至上一跳数对应的邻居节点出去,...,就这样进行消息传递,直到达到设置跳数阈值时停止消息传递,最后统计起始节点上接收的信息,得出关联变量的数量值。比如:计算图2中a类型节点,两跳之内关联c类型节点的数量。图结构如图2。关
联c类型节点的数量计算流程如下:
54.第一步:属性初始化:给目标(c类型)节点初始化临时属性node_stat,数据类型为set,值为节点的id;如图3;
55.第二步:消息传播:将c类型节点的节点id作为消息向周围的邻居发送,完成1跳消息传播如图4;
56.第三步:消息接收及合并:接收到消息的节点将接收的消息与节点已经接收的属性值进行去重合并,更新属性值,该属性值是目标节点id的集合,如图5;
57.第四步:接收到消息的节点再将临时属性值作为消息向邻居节点进行发送,完成2跳消息传播,如图6;
58.第五步:节点接收消息,去重并统计类型a节点的临时属性值,得到节点类型a在2跳内关联c类型节点的数量如图7。
59.如果存在超级节点,即一个节点关联的邻居数量很大。关联变量数量计算时,每次传递的消息都是邻居节点消息的合并之后的集合并且随着跳数的增加节点之间传递的消息的数量也会增加,消息在传递过程中,就会占用大量内存,导致计算任务不能正常执行。比如以下图8例子:当一个节点为超级节点时,在图9第三步会出现同时发送10万条包含10万个元素的set集合数据,如果该节点关联的节点数量更多,可能会占用更多内存,导致计算任务不能正常完成。
60.本实施例中,通过接收至少一个目标节点发送的字符串信息,字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;将所有目标节点对应的参数信息进行合并得到元素集合;统计元素集合中所有元素的数量得到关联变量数量值,由于hll数据结构可以有效地降低计算关联变量数量值所需的内存,从而可以保证计算任务的顺利执行,同时也可以支持更多跳数的关联变量数量计算。
61.本发明实施例提供另一种节点关联变量数量计算方法,如图10所示的流程图,该节点关联变量数量计算方法包括:
62.s101:对目标节点参数进行murmurhash转换得到hll数据结构;
63.hll数据结构包括宽和高,所述方法还包括:
64.通过调整宽和高的值调节计数的误差率和内存占用的大小。
65.本实施例中,hll数据结构的宽为8,高为18。
66.hll数据结构对应的java实现类包含两个参数,log2m(》=4&&《=30)和regwidth(》=1&&《=8),这两个参数的取值决定计数的误差率和内存占用的大小;当log2m取值较小时,regwidth取值越大,计数越准确,占用内存也越大。当log2m取值较大时,regwidth取值越大,对计数的准备性影响不大,主要会增加内存占用。在实际业务使用中,可根据业务的实际情况以及计算资源的大小,选择合适的参数取值。log2m与regwidth取值对误差率和占用内存大小对比如表1所示:
67.表1log2m与regwidth取值对误差率和占用内存大小对比表
[0068][0069][0070]
现针对关联变量数量的计算过程,对比set计数和hyperloglog计数占用内存的大小,如表2,其中regwidth=8,log2m=18。
[0071]
表2set计数和hyperloglog计数占用内存对比表
[0072][0073]
根据表2对比可以发现,利用hyperloglog算法进行计数,占用的内存很少。
[0074]
s102:将目标节点参数对应的hll数据结构转化成二进制数据得到目标节点参数对应的字符串信息。
[0075]
s103:目标节点将字符串信息发送至对应邻居节点;
[0076]
s104:对应邻居节点将目标节点将字符串信息进行传递,直到起始节点接收到设定消息传递跳数对应的所有目标节点发送的字符串信息。
[0077]
s105:起始节点将目标节点参数对应的字符串信息恢复成目标节点参数对应的hll数据结构。
[0078]
s106:将所有目标节点对应的hll数据结构进行合并得到元素集合;
[0079]
s107:统计元素集合中所有元素的数量得到关联变量数量值。
[0080]
关联变量数量计算的计算过程可以看作一个基数计数的过程,即统计一个集合中不重复元素的个数。计数原理是:当元素到来时,通过hash算法将这个元素分派到其中的一个小集合存储,同样的元素总是会散列到同样的小集合。这样总的计数就是所有小集合中元素个数的总和。
[0081]
计算的主要过程如图11所示:
[0082]
第一步:初始化节点属性:将图中目标节点(即c类型),先进行murmurhash,转为hll类型,然后再序列化为字符串,作为节点的临时属性node_stat_hll_str;
[0083]
第二步:消息传递:目标节点的临时属性node_stat_hll_str发送给邻居节点;
[0084]
第三步:消息接收及合并:节点接收传来的消息,将消息依次反序列化为hll类型,即message_hll,并将节点自身的node_stat_hll_str反序列化为hll类型,即node_stat_hll,并将node_stat_hll与接收到的消息message_hll依次进行合并得到新的node_stat_hll,然后再序列化为字符串更新节点的node_stat_hll_str取值;
[0085]
第四步:依次执行第二步和第三步,直到消息传递的次数与期望计算的跳数一致。
[0086]
第五步是将a点接收的消息和自身的属性值进行合并,更新a点的node_stat属性,并对node_stat属性值,即集合元素进行计数得到关联变量值(即a类型节点在3跳内关联多少个c类型节点)。
[0087]
本实施例提供的节点关联变量数量计算方法,对于超级节点的问题,使用hyperloglog算法进行计数代替之前的set集合方法计数,可以大大的降低计算过程中的内存占用,从而可以保证计算任务的顺利执行,同时也可以支持更多跳数的计算。
[0088]
图12为本技术一个实施例提供的节点异常识别方法的流程图,如图1所示,该节点异常识别方法包括:
[0089]
s121:根据上述实施例所述节点关联变量数量计算方法计算出节点对应的关联变量数量值;
[0090]
s122:判断关联变量数量值是否超出预设阈值;
[0091]
s123:若是,判定节点为异常节点。
[0092]
本实施例中,通过节点关联变量数量计算方法计算出节点对应的关联变量数量值,判断关联变量数量值是否超出预设阈值,若是,判定节点为异常节点,由于节点关联变量数量计算方法可以准确计算出节点关联变量数量,保证计算任务的完成,因此,节点异常识别方法可以及时发现异常节点,避免影响图数据计算效果。
[0093]
图13为本技术一个实施例提供的节点关联变量数量计算装置的功能结构图,如图13所示,该节点关联变量数量计算装置包括:
[0094]
接收模块131,用于节点接收至少一个目标节点发送的字符串信息,字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;
[0095]
处理模块132,用于将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;
[0096]
合并模块133,用于将所有目标节点对应的参数信息进行合并得到元素集合;
[0097]
输出模块134,用于统计所述元素集合中所有元素的数量得到关联变量数量值。
[0098]
本实施例中,通过接收模块接收至少一个目标节点发送的字符串信息,字符串信息为根据目标节点参数对应的hll数据结构进行序列化处理得到;处理模块将接收到的目标节点的字符串信息反序列化处理得到目标节点对应的hll数据结构;合并模块将所有目标节点对应的参数信息进行合并得到元素集合;输出模块统计元素集合中所有元素的数量得到关联变量数量值,由于hll数据结构可以有效地降低计算关联变量数量值所需的内存,从而可以保证计算任务的顺利执行,同时也可以支持更多跳数的关联变量数量计算。
[0099]
图14为本技术一个实施例提供的节点异常识别装置的功能结构图,如图14所示,该节点异常识别装置包括:
[0100]
计算模块141,用于根据上述实施例所述节点关联变量数量计算方法计算出节点对应的关联变量数量值;
[0101]
判断模块142,用于判断关联变量数量值是否超出预设阈值;
[0102]
识别模块143,用于在关联变量数量值超出预设阈值时,判定所述节点为异常节点。
[0103]
本实施例中,通过计算模块根据上述实施例所述节点关联变量数量计算方法计算出节点对应的关联变量数量值;判断模块判断关联变量数量值是否超出预设阈值;识别模块在关联变量数量值超出预设阈值时,判定节点为异常节点,可以及时发现异常节点,避免影响图数据计算效果。
[0104]
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
[0105]
需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。
[0106]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0107]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0108]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0109]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0110]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0111]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0112]
尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
[0113]
需要说明的是,本发明不局限于上述最佳实施方式,本领域技术人员在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本技术相同或相近似的技术方案,均落在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1