数据管理和系统实现课程上要分享的论文:《LEOPARD: Lightweight Edge-Oriented Partitioning and Replication for Dynamic Graphs》
背景
目前分析处理图数据已经成为一项重要的任务,例如,研究互联网结构,分析社会关系,或捕获蛋白质之间的关系等。在网上也有许多公开的数据集,可以看到图数据已经广泛应用在多个领域。
处理这类图是具有挑战性的,因为这些图往往十分巨大,甚至会有数万亿的边,如此庞大的数据在单机器上是很难处理的,典型的方法就是对数据进行划分,分布到多个机器上。因为我们最终是要在图上进行各种计算,所以图划分的速度、划分效果的好坏都将直接影响计算系统的运行效率。
从划分方式上来看,图划分问题可以被分为两类:边划分和点划分。
点划分指将图中的点集合划分为若干部分,图中每个点及其相关信息(邻接列表等)存放于一个划分出的子图中,而图中的边则可能因为两个顶点被划分在 不同的子图中而成为割边,如图中的边 (d,z) 和 (b,z)。边割集的大小将直接影响分布式算法的通讯代价。
边划分则是将图中的边集合划分为若干部分,图中每条边及其相关信息存放 于一个划分出的子图中,而当一个点的邻边被划分在不同的子图中时,这个点将在多个子图中均存在,这样的点被称为割点, 如图中的点 d 和 z。与边割集相同,点割集的数量也将直接影响分布式算法的通讯代价。
图划分的目标有两个:负载均衡和最小割。负载均衡是为了使分布式系统中的多台机器有相近的任务负荷,负载不均会导致负载较小的处理器出现空等的情况而浪费资源。此外,要尽量减少分割,以便最小化由不同分区之间交换消息引起的通信成本。
目前图划分算法主要可以分为三类:
- 静态图划分算法:它在获得整个图数据后进行全局划分,能取得很好的划分效果,但需要多次迭代运行时间长。
- 流式图划分算法:它将图数据看作是持续不断地数据流,当数据到达时基于当前的数据信息判断该数据的划分位置,可以获得较快的运行速度,但效果差于静态图划分。
- 动态图划分算法:上述的静态图划分算法不适合处于大规模图数据。除此之外,目前很多图是动态的,新的友谊出现,新的联系建立,或者蛋白质相互作用改变。那么原先通过静态图划分或流式图划分得到的初始良好划分会随着图结构的不断变化而恶化。动态图划分算法的作用就是在图结构变化的同时及时的调整划分,使得系统保持可以一个良好的划分。
研究现状
在动态图算法的研究方面,之前大部分的动态图划分研究集中在一批更改导致原始分区恶化之后再对图进行重新分区,然而这样的算法是重量级的。
最近也有一些关于轻量级的动态图划分算法,一些研究者不认为复制是一种改进边切的机制,当然他们这么认为是有道理的,因为保持副本之间的同步是需要巨大开销的。但是这篇论文引入了复制机制,所以它其实只适用于只读图计算,例如:子图模式匹配、三角计数、图遍历等。另外也有一些工作引入了复制机制,但是没有考虑动态重划分。
所以这篇论文的工作重点就是将动态重划分和复制紧密结合起来,每次增加或删除顶点、边后,检查分区情况,决定是否需要重新分配。同时,复制可以提供一定的容错性,并增加访问局部性,可以有效的减少边切割。
那么该方法需要考虑的问题有:
在划分方面:如何进行顶点的分配;顶点重分配计算的时机;哪些顶点需要重分配。
在复制方面:副本复制到哪些分区;副本复制的数量。
Leopard:划分
论文的划分算法借鉴了2014所提出的FENNEL算法,它是一种流式图划分算法。
FENNEL算法的主要思想:为了减少边切割,一个顶点应该被分配到有较多邻居的分区,同时还要加入一个惩罚因子,以防止一个分区变得过大。前面这部分就表示 v 节点在 i 分区的邻居数,后面项是对分区节点数的惩罚因子。
在许多情况下,使大多数动态图变化的是新添加的顶点和边。因此,在任何时间点,动态图都可以被认为是该算法的中间状态。该算法对于顶点只分配一次,后续不再变更。但是Leopard会不断地重新访问由单次划分所分配的顶点和边,以此来实现重新分配。
如何进行重分配一个最简单的办法就是在添加或删除边后,去重新计算每个顶点的值,但这样肯定太傻了。事实上,当一个节点发生变化时,基本上只有它的邻居节点才会受到较大的影响。所以这里我们可以设立一个候选集,逐步将更改节点的邻居加入候选集。这个过程其实有点像BFS。
接下来再考虑一个问题,就是重新进行分配计算其实也是很耗时间的,事实上,对于候选集中的节点,如果它在分区内已经拥有大量邻居节点时,其重新分配的概率就相对较小,所以我们也没有必要每次都计算检测,给定顶点 v 和阈值 t ,如果跳过的计算与v的总邻居的比率小于t,则函数跳过重新分配分数的计算。但同时随着计数的增大,每个节点都可以保证被定时的检测。
Leopard:复制
论文提出了一种称为MAP的方法,也就是包含两个参数,即最小复制数和平均复制数。最小数量的拷贝确保了容错性,任何超出最小数量的额外拷贝都提供了额外的访问局部性,可以减小边切割率。Leopard首先运行顶点分配算法。第二,将第一步计算得到的分数与最近其他顶点计算得到的分数进行排序。排名越是靠前,复制的概率就越大。
首先计算主节点的划分,直接将其分配至分数最高的分区上。然后对副本节点计算分数,因为有最小复制数的规定,所以top(min-1) 的分区会复制该节点的副本。同时该方案也还有平均复制数,将剩下的计算分数与最近计算得到分数进行排序,如果分区的分数在top内,就在该分区复制节点副本。这里用滑动窗口维护最近最近计算得到的分数。
(【注】这里主节点的分配计算和副本节点的分配计算都是用的FENNEL算法,但是由于引入了复制,所以论文中重新定义了邻居,这里就省略了,详细的看论文。总之,它们的区别就是FENNEL算法中邻居的数量会不一样,所以结果也就会不一样。)
实验
最后论文在多个不同的图形上进行了实验评估,包括社交图、协作图、网络图、电子邮件图等等。总共比较了5种不同的方法:
1 Leopard:论文所提出的方法
2 FENNEL:没有涉及顶点重分配,用来比较顶点重分配的好处
3 METIS: state-of-the-art静态图划分算法,METIS需要所有的更新请求完成后,也就是得到最终的图后对其进行静态分区,在分区时拥有最终图形的全局视图是一个很大的优势。因此,METIS被用作分区质量的近似上限,Leopard的目标是获得与METIS相似的最终分区。
4 ParMETIS: ParMETIS先允许分区恶化,然后再批量重新分区操作。而Leopard持续保持对图形的良好分区,所以也对它们进行比较。
5 哈希划分算法:哈希划分算法简单,容易实现负载均衡,缺点是会产生大量割边,但是现在仍然是在广泛使用着,所以也和它进行比较。
我们采用两个评估指标:
1 边切割率 λ :λ = 切割边的数量除以边的总数(对于复制数据,切割边的定义按照论文所述的,这里没说,详情看论文)
2 负载不平衡 ρ :ρ = 分区中的最大顶点数除以分区中的平均顶点数
首先评估没有复制时的分区质量,使用上面描述的五种划分生方法将我们上面所提到的11个真实世界的图形集划分成40个分区,该图仅显示了边切割率,因为负载不平衡率对于所有方法都大致相同(哈希划分:1.00,其它:1.02~1.03)。
由这张图可以看出黑色的哈希算法效果是最差的,除此之外最差的就是红色的FENNEL算法了,论文的Leopard边切割率比起FENNEL来低了不少,这显示出了动态重新分配的重要性。这里面静态图划分算法METIS的效果是最好的,虽然Leopard的效果没它好,但已经十分接近了。只有在最后面四个网络图的划分中,Leopard与METIS的划分效果相差较大,因为网络图往往具有较大的直径,更容易划分。而Leopard没有全局的图,容易陷入局部最优,导致更多的边被切割。
需要注意的是,这里没有考虑运行的时间,事实上,FENNEL算法的速度是Leopard的44.6倍,但是如果使用论文所提到的优化技术的话,就可以降至2。
我们这里定义
然后考虑分区数量对划分效果的影响,在实验中分区数量从2逐渐增至256,但METIS和Leopard的差异并没有太大的改变,这说明Leopard对于不同的分区数量都能有较好的划分效果。
最后,我们再加入复制,由于Leopard是第一个(据他们所知)将复制与动态分区集成在一起的系统,所以这里是将带有复制的Leopard与不带复制的Leopard进行了比较。负载不平衡 $rho$ 的值还是和之前差不多的,但是切割率却可以达到一个显著的下降。
总结
Leopard是为大规模、不断变化的图所设计的算法,通过将动态图的划分和复制紧密结合,能够很好的实现访问局部性和容错性。但是它也有一个很大的局限性,因为复制机制的引入,所以其只适用于只读图计算。
个人想法
副本是否要重分配?副本的个数是否会改变?这些问题论文里好像并没有提到。
参考
【1】J. Huang and D. J. Abadi. Leopard: Lightweight edge-oriented partitioning and replication for dynamic graphs. Proceedings of the VLDB Endowment, 9(7):540–551, 2016
【2】C. Tsourakakis, C. Gkantsidis, B. Radunovic, and M. Vojnovic. Fennel: Streaming graph partitioning for massive scale graphs. In WSDM ’14
【3】许金凤,董一鸿,王诗懿等. 大规模图数据划分算法综述. 电信科学,2014,30(7);100-106
【4】M. Besta, M. Fischer, V. Kalavri, M. Kapralov, and T. Hoefler, “Practice of streaming and dynamic graphs: Concepts, models, systems, and parallelism,” arXiv preprint arXiv:1912.12740, 2019.
【5】图流划分算法综述