Pregel体系结构

article/2025/9/7 10:54:25
在Pregel计算框架中,一个大型图会被划分成许多个分区,每个分区都包含了一部分顶点以及以其为起点的边
一个顶点应该被分配到哪个分区上,是由一个函数决定的,系统默认函数为hash(ID) mod N,其中,N为所有分区总数,ID是这个顶点的标识符;当然,用户也可以自己定义这个函数

这样,无论在哪台机器上,都可以简单根据顶点ID判断出该顶点属于哪个分区,即使该顶点可能已经不存在了





容错性:

Pregel采用检查点机制来实现容错。在每个超步的开始,Master会通知所有的Worker把自己管辖的分区的状态写入到持久化存储设备
Master会周期性地向每个Worker发送ping消息,Worker收到ping消息后会给Master发送反馈消息

每个Worker上都保存了一个或多个分区的状态信息,当一个Worker发生故障时,它所负责维护的分区的当前状态信息就会丢失。Master监测到一个Worker发生故障“失效”后,会把失效Worker所分配到的分区,重新分配到其他处于正常工作状态的Worker集合上,然后,所有这些分区会从最近的某超步S开始时写出的检查点中,重新加载状态信息

Worker:

在一个Worker中,它所管辖的分区的状态信息是保存在内存中的。分区中的顶点的状态信息包括:
顶点的当前值
以该顶点为起点的出射边列表,每条出射边包含了目标顶点ID和边的值
消息队列,包含了所有接收到的、发送给该顶点的消息

标志位,用来标记顶点是否处于活跃状态

在每个超步中,Worker会对自己所管辖的分区中的每个顶点进行遍历,并调用顶点上的Compute()函数,在调用时,会把以下三个参数传递进去:
该顶点的当前值
一个接收到的消息的迭代器

一个出射边的迭代器 

在Pregel中,为了获得更好的性能,“标志位”和输入消息队列是分开保存的
对于每个顶点而言,Pregel只保存一份顶点值和边值,但是,会保存两份“标志位”和输入消息队列,分别用于当前超步和下一个超步

如果一个顶点V在超步S接收到消息,那么,它表示V将会在下一个超步S+1中(而不是当前超步S中)处于“活跃”状态

当一个Worker上的一个顶点V需要发送消息到其他顶点U时,该Worker会首先判断目标顶点U是否位于自己机器上
如果目标顶点U在自己的机器上,就直接把消息放入到与目标顶点U对应的输入消息队列中

如果发现目标顶点U在远程机器上,这个消息就会被暂时缓存到本地,当缓存中的消息数目达到一个事先设定的阈值时,这些缓存消息会被批量异步发送出去,传输到目标顶点所在的Worker上

Master:

Master主要负责协调各个Worker执行任务,每个Worker会借助于名称服务系统定位到Master的位置,并向Master发送自己的注册信息,Master会为每个Worker分配一个唯一的ID
Master维护着关于当前处于“有效”状态的所有Worker的各种信息,包括每个Worker的ID和地址信息,以及每个Worker被分配到的分区信息


Master中保存这些信息的数据结构的大小,只与分区的数量有关,而与顶点和边的数量无关

一个大规模图计算任务会被Master分解到多个Worker去执行,在每个超步开始时,Master都会向所有处于“有效”状态的Worker发送相同的指令,然后等待这些Worker的回应
如果在指定时间内收不到某个Worker的反馈,Master就认为这个Worker失效
如果参与任务执行的多个Worker中的任意一个发生了故障失效,Master就会进入恢复模式

在每个超步中,图计算的各种工作,比如输入、输出、计算、保存和从检查点中恢复,都会在“路障(barrier)”之前结束

Master在内部运行了一个HTTP服务器来显示图计算过程的各种信息
用户可以通过网页随时监控图计算执行过程各个细节
图的大小
关于出度分布的柱状图
处于活跃状态的顶点数量
在当前超步的时间信息和消息流量

所有用户自定义Aggregator的值

Aggregator:

每个用户自定义的Aggregator都会采用聚合函数对一个值集合进行聚合计算得到一个全局值
每个Worker都保存了一个Aggregator的实例集,其中的每个实例都是由类型名称和实例名称来标识的
在执行图计算过程的某个超步S中,每个Worker会利用一个Aggregator对当前本地分区中包含的所有顶点的值进行归约,得到一个本地的局部归约值
在超步S结束时,所有Worker会将所有包含局部归约值的Aggregator的值进行最后的汇总,得到全局值,然后提交给Master

在下一个超步S+1开始时,Master就会将Aggregator的全局值发送给每个Worker



http://chatgpt.dhexx.cn/article/6M0DUUnn.shtml

相关文章

Spark GraphX 中的 pregel函数(转载)

文章目录 pregel函数源码 与 各个参数介绍:案例: 求顶点5 到 其他各顶点的 最短距离pregel原理分析 一篇关于 Spark GraphX 中 pregel函数 的笔记,通过一个小案例将pregel函数理解透彻。 pregel函数源码 与 各个参数介绍: def…

03 graphx 从 SSSP 来看 pregel

前言 呵呵 最近刚好有一些需要使用到 图的相关计算 然后 在其他文章中找到了一篇 关于最短路径的graphx计算的代码 spark graphx 最短路径及中间节点 呵呵 很久没有用这些东西了, 虽然只是简单的使用, 但是还是要 复习一下, 稍微理解一下 他的执行方式 pregel 相关论文 …

ArangoDB(四)Pregel

arango pregel.status()返回值 localhost:8529_system> pregel.status(1099521660554) {"state" : "done","gss" : 7,"totalRuntime" : 8.389497518539429,"aggregators" : {},"sendCount" : 392647,"re…

graphx中的pregel原理详解

优秀参考: graphx教程参考:https://www.jianshu.com/p/ad5cedc30ba4 pergel函数详细讲解:https://blog.csdn.net/hanweileilei/article/details/89764466 迪杰斯特拉原理简介:https://www.jianshu.com/p/ad5cedc30ba4 ps: 以最…

Pregel模型

简介 在Hadoop兴起之后,google又发布了三篇研究论文,分别阐述了了Caffeine、Pregel、Dremel三种技术,这三种技术也被成为google的新“三驾马车”,其中的Pregel是google提出的用于大规模分布式图计算框架。主要用于图遍历&#xf…

Spark Graphx Pregel(pregel参数详解,pregel调用实现过程的详细解释)

Spark Graphx Pregel 一.Pregel概述1.什么是pregel?2.pregel应用场景 二.Pregel源码及参数解释1.源码2.参数详细解释(1)initialMsg(2)maxIteration(3)activeDirection(4)…

2020.11.26课堂笔记(sparkGraphx算法之pregel)

参考博客:https://blog.csdn.net/hanweileilei/article/details/89764466 大佬博客写的很详细,不用继续看这篇了,随便写一些记录一下。 Pregel框架: Pregel是一种面向图算法的分布式编程框架,采用迭代的计算模型&…

Pregel(图计算)技术原理

图计算简介 图结构数据: 许多大数据都是以大规模图或网络的形式呈现。许多非图结构的大数据,也常常会被转换为图模型后进行分析。图数据结构很好地表达了数据之间的关联性。关联性计算是大数据计算的核心——通过获得数据的关联性,可以从噪…

python bar函数

bar(left, height, width, color, align, yerr)函数:绘制柱形图。left为x轴的位置序列,一般采用arange函数产生一个序列;height为y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;width为柱形…

C++ 函数模板

函数模板是通用的函数描述,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有…

lead窗口函数

lead函数在Impala中可以配合over使用,lead函数有三个参数 lead(property,num,default) 第一个参数「property」标识想查询的列,「num」标识相对于当前行的第num行,第三个参数是默认值。 举例: -- 建表 CREATE TABLE test(id s…

C++ 仿函数

文章目录 1.由来2.定义3.实例参考文献 1.由来 我们先从一个非常简单的问题入手,来了解为什么要有仿函数。 假设我们现在有一个数组,数组中存有任意数量的数字,我们希望能够统计出这个数组中大于 10 的数字的数量,你的代码很可能…

心形函数的几种表达式

用两个函数表示: f(x)sqrt(1-(abs(x)-1)^2) h(x)-2*sqrt(1-0.5*abs(x)) 也可以根据图中的q(x)画出心形的内部: q(x)(f(x)-h(x))/2*cos(200*x)(f(x)h(x))/2 带入得: 用一个函数表示,我拟合了很久才画出来的: f(x)…

共轭函数

共轭函数在最近火的不行的Gan生成对抗神经网络进阶版本的数学推理中有着神奇的作用,因此在这边记录下。 共轭函数的定义为: f ∗ ( t ) max ⁡ x ∈ dom ⁡ ( f ) { x t − f ( x ) } f ^ { * } ( t ) \max _ { x \in \operatorname { dom } ( f ) }…

高斯函数解析

高斯函数广泛应用于统计学领域,用于表述正态分布,在信号处理领域,用于定义高斯滤波器,在图像处理领域,二维高斯核函数常用于高斯模糊,在数学领域,主要用于解决热力方程和扩散方程。 https://blo…

PostgreSQL 函数

PostgreSQL 函数 函数的定义 使用函数,可以极大的提高用户对数据库的管理效率。函数表示输入参数表示一个具有特定关系的值。 一、数学函数 绝对值函数、三角函数、对数函数、随机函数等,当有错误产生时,数学函数会返回null值。 二、函数…

EXCEL IFS函数简单使用

IFS函数的使用: 在学生成绩以及绩效考核中,我们需要对每个范围的成绩打分。比如【A】,【B】,【C】,【D】。可以使用【IFS()函数】完成操作。 1:选择单元格【C2】,输入【】,点击【fx】,弹出【插入函数】对话…

函数的返回值

1.什么是函数的返回值? print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作为返回值作为函数的输出 可以用变量接走,继续使用该返回值做其它事 函数需要先定义后调用,函数体中 return 语句的结果就是返回值 如果一个函数没有 reutrn…

反双曲函数

Chapter10:反双曲函数 10.3 反双曲函数10.3.1 反双曲正弦函数【 yarsinh(x) 】反双曲正弦函数图像反双曲正弦函数的指数形式反双曲正弦函数的对数形式推导反双曲正弦函数的导数推导 10.3.2 反双曲余弦函数【 yarcosh(x) 】反双曲余弦函数图像反双曲余弦函数的指数形…

损失函数作用

前言:损失函数是机器学习里最基础也是最为关键的一个要素,通过对损失函数的定义、优化,就可以衍生到我们现在常用的机器学习等算法中 损失函数的作用:衡量模型模型预测的好坏。 正文: 首先我们假设要预测一个公司某商品…