Powergraph – 贪心法在图划分任务中的应用
-
背景
大数据时代中,用户所收集到并希望进行分析和处理的数据集的规模正以极快的速度进行增长,这一规律也体现在图数据中。由于单机容量的限制,大规模的图数据无法被单机的内存完全容纳,因此分布式图计算系统成为解决方案之一,即将待处理的超大规模图划分成若干个子图,并分配到不同的计算节点中进行处理,划分成子图的过程就是图划分问题(graph partition)问题。无论是早期的BSP编程模型还是之后的GAS编程模型中,graph partition 问题的优化目标都是两个:减少负载不均衡和减少通信的开销,然而,这两个优化目标往往呈现 tradeoff 的关系[1],事实上,早在1992年,同时考虑通信量和负载均衡的图划分最优算法就被证明是 NP-hard 问题[2]。
现有的图划分算法可以分为两大类:边割(edge-cut)和点割(vertex-cut)。
-
边割
边割算法中(又称为以点为中心的划分算法),顶点被均匀地分配给机器,并且最小化跨越节点的边的数量。如下图所示,A、B、C、D顶点被均匀分配给三台机器,阴影节点为 ghosts。边割集的大小直接影响通信量的大小。
pregel系统使用的边割方法,即将图中的点均匀地分给不同的节点,每个点与他所有的邻边都存储在一起。这种情况下,如果一条边的两个点被分到了不同的机器上,他就会产生一次远程通讯。换句话说,在这种分割方式下,最终的通讯量和被分割的边
-