bsp模型适用于图计算_干货学习丨大规模图计算

本文由普适智能算法工程师王钊撰写,深入探讨图计算的存储方式、切分策略和数据划分。介绍了邻接矩阵、邻接表作为图存储结构的优缺点,以及边切分和点切分的权衡。强调了图数据划分在负载均衡中的重要性,特别是普通哈希划分的方法。最后,概述了单机和分布式图计算框架的局限与适用场景。
摘要由CSDN通过智能技术生成

427df038cc80f72f00e9b70894aaaebe.png

▕ 作者:王钊,美国德克萨斯州达拉斯分校硕士毕业。现任普适智能算法工程师,目前专注于图计算算法研究。

导读

图计算就是研究如何高效计算、存储和管理大规模图数据。图是由顶点和边组成的,它可以对事物以及事物之间的关系建模,比如文章是点,文章与文章之间的超链接是边;或者顾客和商品是点,购买或者喜欢是边,购买的次数喜欢的程度是边的权重;再如银行卡持卡人是点,交易是边,交易频率交易金额是属性。

针对这些关系模型,我们可以用最短路径算法做好友推荐,计算关系紧密程度;最小连通图可以识别洗钱或虚假交易;Keyperson可以找到社区领袖,防止客户流失的群体效应;对图做PageRank可以做传播影响力分析,找出问题的中心,做搜索引擎的网页排名等。

▐ 图的存储方式:

图之所以复杂在于每个顶点的逻辑位置都是相对的,顶点之间的关联依赖也是不确定的,所以无法以数据元素在内存中的物理位置来表示元素之间的关系,即无法用简单的顺序存储结构来表示。所以将图的顶点和边分别使用两种结构来存储表示会相对容易。

图的邻接矩阵是一种常见的图存储结构,它将n个顶点存储在一维数组中,用n*n的矩阵来表示任意两点之间的关系。则主对角线全是无用空间,顶点的行向与列向边的数量之和分别表示它的出度和入度。显然对于边数量相对于顶点较少的稀疏矩阵会极大的浪费存储空间。

d47c78bd552ed414c27bdb011b4f26a5.png

a9fb0cfd17cfbf44f34b71b947534a40.png

邻接表用一个线性表存储顶点,与之邻接的顶点会另外构成一个线性表,由于邻接点的数量不确定,故常使用链表存储。

cb1f9404074f017110ba1c581bdff1f4.png

▐ 图的切分方式:

正态分布是我们最为熟悉的在自然界常见的一种数据分布形式,它具有中间多,两头少的特点,比如我们身高,大家的身高多集中在平均身高区域,极矮或极高的人属于少数。

其实幂律分布(Power-law distribution)也同样常见,它是一个不断下降的曲线,从最高的峰值开始极速下降,后面拖了一个长长的尾巴,比如微博大V拥有百万粉丝,而普通人的关注度则寥寥无几。

bf6594ab604a585a95e88355990b92ae.png

为什么要介绍幂律分布呢?因为在图计算中数据倾斜的情况非常常见,一个点与图中大多数的点有联系,我们应该如何将这些点分开储存在不同的节点上,是尽量减少跨分块的边,牺牲内存减少节点与 节点这间的通讯开销;还是减少内存消耗,转而增加通讯开销,都是一个值得权衡思考的问题。

图的切分方式有两种,边切分点切分

边切分每个顶点都存储一次,但有的边会被打断分到两台机器上。这样做的好处是节省存储空间;坏处是对图进行基于边的计算时,对于一条两个顶点被分到不同机器上的边来说,要跨机器通信传输数据,内网通信流量大。

6ed8630535dad5a1c6e0628fa6005a3f.png

3395bec18b9f938642abd01a4827a8d4.png

点切分每条边只存储一次,都只会出现在一台机器上。邻居多的点会被复制到多台机器上,增加了存储开销,同时会引发数据同步问题。好处是可以大幅减少内网通信量。

32e9fd5d6e79f8fde5291a2c104537d6.png

1a0614ac46cc99e49ba279f866f8289b.png

▐ 图数据划分:

图数据划分是指在分布式计算中,将数据分发到集群中不同节点上。尽量做到分发到各节点上的数据量大小均匀,避免大量数据倾斜在某些节点所导致的负载不均衡的现象出现。

负载不均衡会使得数据量少的节点CPU利用不饱和而数据量多的节点计算速度缓慢,如果我们使用整体同步并行计算模型(BSP),每一轮迭代都要等到上一轮超步全部执行完后才会进行,在负载不均衡的情况下,需要浪费大量时间等待数据倾斜节点完成本轮任务。

因此,图数据划分是分布式图计算系统中的一个核心内容。

这里我们介绍一种较为简单的普通哈希划分。

普通哈希划分是对每个点的hash结果取余数,即Hash(Key)%M,假设对机器编号从0到N-1,按照自定义的 hash()算法,对每个请求的hash()值按M取模,得到余数i,然后将点分发到编号为i的机器上。这样我们就可以把点均匀的分发到M个机器上了。

▐ 图计算框架

1. 单机内存图处理系统

此类图计算系统单机运行,可直接将图完全加载到内存中进行计算。但是单机的计算能力和内存空间总是有限,故只能解决较小规模的图计算问题。

2. 单机核外图处理系统

此类图计算系统单机运行,但是将存储层次由RAM拓展到外部存储器如SSD,Flash,SAS,HDD等,使其所能处理的图规模增大。但受限于单机计算能力和核外存储系统的数据交换的带宽限制也无法在可接受的情形下处理超大规模的图数据。

3. 分布式内存图处理系统

此类图计算系统将图数据全部加载到集群中的内存中计算,理论上随着集群规模的增大其计算性能和内存容量都线性增大,能处理的图数据也按线性扩大。图分割的挑战在分布式系统愈加明显,再加上集群网络总带宽的限制,所以整体性能和所能处理的图规模也存在一定的缺陷。

4. 分布式核外图处理系统

此类图计算系统将单机核外图处理系统拓展为集群,能够处理边数量级为trillion的图。

总结

在这一篇专题中我们介绍了大规模图计算的基础,在现实应用中我们应该选择哪一种切分方式,计算框架都需要根据实际数据特征来定夺。

在下一期图计算专栏中,我们着重介绍Flink,感兴趣的小伙伴记得关注我们哦~

【参考】

https://www.docin.com/p-1833675343.html

https://blog.csdn.net/qq_21125183/article/details/80671547

关于我们

普适智能科技有限公司(简称:普适智能PUSHI AI)是一家专注于数据处理和知识图谱技术的人工智能高科技公司,致力于为企业提供一站式认知智能服务。

普适智能专注于技术创新型人才提供技术分享和学习内容,使创新成为持续的核心竞争力。

如果您感兴趣,欢迎加入PUSHI AI社群,共同探索AI。关注普适智能并发消息即可加入我们~

219485183611e7f4bc4408624eb10636.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值