图计算图数据的划分将一个大图划分为若干较小的子图,是很多图计算系统都会使用的扩展处理规模的方法;此外,图划分还能增强数据的局部性,从而降低访存的随机性,提升系统效率
对于分布式图计算系统而言,图划分有两个目标:(1) 每个子图的规模尽可能相近,获得较为均衡的负载
(2) 不同子图之间的依赖(例如跨子图的边)尽可能少,降低机器间的通信开销
图划分有按照顶点划分和按照边划分两种方式,它们各有优劣:(1) 顶点划分将每个顶点邻接的边都放在一台机器上,因此计算的局部性更好,但是可能由于度数的幂律分布导致负载不均衡
(2) 边划分能够最大程度地改善负载不均衡的问题,但是需要将每个顶点分成若干副本分布于不同机器上,因此会引入额外的同步/空间开销
所有的类Pregel系统采用的均为顶点划分的方式,而PowerGraph/GraphX采用的是边划分的方式
Gemini采用了基于顶点划分的方法来避免引入过大的分布式开销;但是在计算模式上却借鉴了边划分的思想,将每个顶点的计算分布到多台机器上分别进行,并尽可能让每台机器上的计算量接近,从而消解顶点划分可能导致的负载不均衡问题
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。