首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

DDIA:图计算和迭代处理

由于谷歌的一篇名为 Pregel 的论文将该图计算模型大规模的推广,因此 BSP 模型有时也被称为 Pregel 模型。...如果你把每个点认为是一个 actor 的话,Pregel 在某种程度上很像我们之前提到的 Actor 模型。但与 Actor 模型不同的是,Pregel 中点的状态和消息是持久化且容错的。...容错 Pregel 中限定只能通过消息传递(而不是通过主动拉取)来进行通信,因此可以方便的将消息 batch 起来以减少等待。...即使在消息传输的过程中,可能会出现丢失、重复和不定时延迟,Pregel 仍然能够保证所有消息在目的节点上严格的被处理一次。...和 MapReduce 一样,Pregel 会进行对上层无感的错误恢复,以期简化所有基于 Pregel 的上层算的实现。

8210

Spark图计算及GraphX简单入门

计算模式 图计算模式 目前基于图的并行计算框架已经有很多,比如来自Google的Pregel、来自Apache开源的图计算框架Giraph/HAMA以及最为著名的GraphLab,其中Pregel、HAMA...参考GraphX的Pregel代码,对一个大图,目前最佳的实践是: ?...进化的Pregel模式 GraphX中的Pregel接口,并不严格遵循Pregel模式,它是一个参考GAS改进的Pregel模式。定义如下: ?...这种基于mrTrilets方法的Pregel模式,与标准Pregel的最大区别是,它的第2段参数体接收的是3个函数参数,而不接收messageList。...它综合了Pregel和GAS两者的优点,即接口相对简单,又保证性能,可以应对点分割的图存储模式,胜任符合幂律分布的自然图的大型计算。另外,值得注意的是,官方的Pregel版本是最简单的一个版本。

2.5K51

GraphX 图计算实践之模式匹配抽取特定子图

Pregel 运行原理 源码定义如下: def pregel[A: ClassTag]( initialMsg: A, maxIterations: Int = Int.MaxValue...只看定义和逻辑同样不太清楚,所以下边再介绍一下 Pregel 的迭代流程: 对于一个 graph 对象,只有激活态的点才会参与下一次迭代,激活态的条件是完成了一次发送/收到消息 A 的动作; 首先初始化所有节点...模式匹配的思路 知道 Pregel 的计算原理之后,那么怎么实现模式匹配呢,主要就是根据迭代的思想,不停地将边信息聚合到点上,在迭代的过程中控制发送消息的逻辑来实现特定模式的路径。...等等的这些问题,但是核心点不变,就是基于 Pregel 实现广度优先遍历,累积边形成路径信息,主要的逻辑基本都在于 sendMsg 这个方法,来控制发或者不发,来决定路径的走向,以满足模式匹配的业务要求...总结 利用 GraphX 的 Pregel API 进行广度优先遍历来实现模式匹配的好处: GraphX 有多种图算子可以灵活处理图数据; 基于 Pregel,使用路径当做消息可以灵活控制模式子图的结构

64240

Apache Spark 2.2.0 中文文档 - GraphX Programming Guide | ApacheCN

对于迭代计算,我们建议使用Pregel API,它可以正确地解析中间结果。 Pregel API 图形是固有的递归数据结构,因为顶点的属性取决于其邻居的属性,而邻居的属性又依赖于其邻居的属性。...GraphX 公开了 Pregel API 的变体。 在高层次上,GraphX 中的 Pregel 运算符是限制到图形拓扑的批量同步并行消息抽象。...与 Pregel 不同,消息作为边缘三元组的函数并行计算,消息计算可以访问源和目标顶点属性。在超级步骤中跳过不接收消息的顶点。 Pregel 运算符终止迭代,并在没有剩余的消息时返回最终的图。...以下是 Pregel 运算符 的类型签名以及 其实现的草图(注意:为了避免由于长谱系链引起的 stackOverflowError , pregel 支持周期性检查点图和消息,将 “spark.graphx.pregel.checkpointInterval...需要两个参数列表(即:graph.pregel(list1)(list2)。

2.8K91

分布式机器学习的故事

后面还会提到BSP框架,它的一个著名实现是Google Pregel。 MPI这个框架很灵活,对程序结构几乎没有太多约束,以至于大家有时把MPI称为一组接口(API)。...这些功能在Google的系统里是分布式操作系统负责的,而Google MapReduce和Pregel都是在分布式操作系统基础上开发的,框架本身的代码量少很多,并且逻辑清晰易于维护。...Checkpointing是下文要说到的Pregel框架实现fault recovery的基础。 但是如果一个系统自己实现fault recovery,那还需要MPI做什么呢?做通信?...当我们踌躇于MPI的扩展性不理想而MapReduce的效率不理想时,Google MapReduce团队的几个人分出去,开发了一个新的并行框架Pregel。...当时Pregel项目的tech lead访问中国。这个叫Grzegorz Malewicz的波兰人说服了我尝试在Pregel框架下验证LDA。

1K60

深入理解Spark 2.1 Core (一):RDD的原理与源码分析

尽管如此,RDD仍然足以表示很多类型的计算,包括MapReduce和专用的迭代编程模型(如Pregel)等。...RDD可以用来描述Pregel、迭代式MapReduce,以及这两种模型无法描述的其他应用,如交互式数据挖掘工具(用户将数据集装入内存,然后执行ad-hoc查询)。...此外,我们还在Spark之上实现了Pregel和HaLoop编程模型(包括其位置优化策略),以库的形式实现(分别使用了100和200行Scala代码)。...在Pregel和HaLoop中,多次迭代之间采用一致性的分区置换策略进行优化,我们同样也允许用户指定这种优化。 (注: ?...首先讨论一些迭代式机器学习应用(4.1),然后看看如何使用RDD描述几种已有的集群编程模型,即MapReduce(4.2),Pregel(4.3),和Hadoop(4.4)。

70370

GraphX具体功能的代码使用实例-Scala实现

本文利用一个初始示例代码,结合部分官方文档中的说明,对GraphX的部分功能方法进行了实践,在全部亲自运行通过后,对大部分代码添加了自己的理解和认识,并且在Pregel模型编程部分结合运行结果对其运行流程做了一定梳理...Operators Computing Degree Collecting Neighbors Join Operators mapReduceTriplets aggregateMessages Pregel...----- //----------------- aggregateMessages ----------------- //----------------- Pregel...println) //上述计算的意义是:找到每个顶点用户的比自身年龄大的邻居节点用户的平均年龄,即原本的计算目的 //结果为: // (1,42.0) // (6,60.0) // (2,60.0) Pregel...Iterator[(graphx.VertexId, Double)], // 第三部分:mergeMsg: (Double, Double) => Double val sssp = initialGraph.pregel

2K31

Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)论文 | ApacheCN

认识到这个问题后, 研究者们已经为一些需要中间数据复用的应用开发出了一些特殊的框架.比如Pregel 在做迭代式图计算的时候会将中间结果放在内存中....这种在迭代之间进行数据一致分区是像 Pregel 这种框架中的主要的优化计算方式....Pregel: Google 的 Pregel 是一个专门解决迭代图计算应用的模型, 它一开始看起来和面向数据集的编程模型的其他系统完全不同.在 Pregel 中, 一个程序运行一些列的相互协调的“ supersteps...Pregel 在每一次迭代中都是对所有顶点应用相同的用户定义的函数, 这个是使的我们用 RDDs 来实现这个模型的关键点....和 Pregel 一样, RDDs 允许将点的状态保存在内存中、控制它们的分区以减少网络通讯以及指出从失败中恢复.

96190
领券