5. Spark GraphX论文概况

2018-12-08  本文已影响0人  GongMeng

1. 基本的框架

论文地址: https://amplab.cs.berkeley.edu/wp-content/uploads/2014/09/graphx.pdf

论文是基于Spark 0.9版本做的, 所以有一些细节会和1.6.0以及2.4.0不太一样.

GraphX

GraphX参考了CMU的GAS模型来做计算部分, 然后把整个计算模型放在Spark上进行运行. 从之前的介绍我们知道, CMU核心的提升在GAS操作Vertex Split两个点上

2. GAS的模拟, 这里贴了个论文slider里的原文

3. 程序部分的模型

3.1 Property Table

GraphX用Vertex RDD 和Edge RDD的概念来表现一张图. 在RDD里, key是vertex, edge. value是用于计算的属性, 如果一个计算完全用不到property, graphx会抛弃掉value部分以压缩存储. GraphX甚至会分析计算过程的字节码, 只把那些计算过程用的到的Property读到内存里, 这也是GraphX论文中一个重要的优化点.


Property Table

3.2 Triplets

在GraphX中使用一个矩阵来表示一个图的结构, 这是一个三元结构.


Triplets

有了这个三元表之后, 就可以用SQL来模拟很多的图操作

CREATE VIEW triplets AS
SELECT s.Id, d.Id, s.P, e.P, d.P
FROM edges AS e
JOIN vertices AS s JOIN vertices AS d
ON e.srcId = s.Id AND e.dstId = d.Id

生成Triplets

SELECT t.dstId, 0.15+0.85*sum(t.srcP*t.eP)
FROM triplets AS t GROUP BY t.dstId

PageRank中一轮迭代

GraphX对图计算中每一轮的建模就建立在这样的Triplets表的SQL里, 图本身就可以表现成一个表, 然后每一轮迭代被模拟成一个对表的SQL操作.

4. 图的数据建模部分

GraphX也是采用了vertex cut的策略来分散一个图

4.1 分布式图

Distribution Graph
上一篇 下一篇

猜你喜欢

热点阅读