`

Spark GraphX源码解析启动篇(1)

 
阅读更多

    一直负责公司的大数据平台技术建设,也一直在使用并研究spark,讲spark架构和原理的文章非常多,但是真正对graphx,mllib,sql,r等API实现源码介绍的文章非常少,也刚好最近有些时间,就把自己使用和学习的一些心得写出来,希望会有些帮助。

     首先就是图计算框架GraphX,在淘宝中有比较多的应用。图计算顾名思义,就是对图结构进行分析计算,现实中社交网站,电网,互联网,物联网等等无一不是一种图结构,图的结构在现实生活中无处不在。

     GraphX基于Spark的RDD计算框架来实现,基于spark的RDD实现了分布式的图数据结构,这个图结构是一个有向多重图的结构,包含了:边RDD,节点RDD,节点和边构成的三元组RDD,其中每个节点都有一个节点id和节点属性,每个边也有自己的属性,此外这些rdd除了core里面提供的基本操作,它还提供了针对图的一些特定操作,比如:取子图,节点连接操作,消息汇聚操作,优化版的pregel API,此外它还实现了一些常见的图算法,比如PageRank,强连通子图,连通子图,最短路径等,后面我将会对这些内容一一做一个详细的介绍。大家会看到有了spark的rdd作为基础计算框架实现海量的分布式图计算时多么的简单。在具体介绍之前有必要先看看spark怎么表示一幅分布式图结构的,分布式图表示方法有两种,一种是做边的切割,然后每个分区存放一些节点信息,然后每个分区都需要一个结构来维护边的信息,这种方式的会带来很大的通信开销和存储开销,因为现实中边数目一般会比节点数目多很多,还有一种方式就是坐点的复制切割,这种方式分区和分区之间并不会产生边的交叉,只是每个节点可能会分布在多个分区中,当节点属性值改变的时候,需要把这个改变分发到多个分区中去,因此还需要维护一份数据结构,保存了节点和分区的对应关系,当作join操作的时候可以这种对应关系来传播节点属性值。后面我将分成一下几个大块来介绍graphx的实现。

分别是:

1.图的表示。

2.图的基本操作实现。

3.图的算法实现。

4.图的一些工具类实现和使用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics