图计算-Pregel-Hama

article/2025/9/7 9:20:44

一.图计算简介

1.1 图计算是专门针对图结构数据的处理.

  • 许多大数据都是以大规模图或网络的形式呈现;
  • 许多非图结构的大数据,也常常被转换为图模型后进行分析;
  • 图结构很好地表达了数据之间的关联性;
  • 关联性计算是大数据计算的核心------通过获得数据的关联性,可以从噪音很多的海量数据中抽取有用的信息;

1.2 传统的图计算算法存在典型问题

  • 常常表现出比较差的内存访问局部性;
  • 针对单个节点的处理工作过少;
  • 计算过程中伴随着并行度的改变;

1.3 解决方案

  • 为特定的图应用定制相应的分布式实现,通用性不好;
  • 基于现有的分布式计算平台进行图计算;
  • 使用单机的图算法库:BGL,LEAD,NetworkX,JDSL,Standford GraphBase 和FGL等,对于大规模计算能力有限.
  • 使用已有的并行图计算系统:Parallel BGL 和CGM Graph ,实现了很多并行图算法,存在容错性问题;

1.4 MapReduce 是分布式计算平台.

  • MapReduce 在图计算方面的性能和易用性不好,是粗粒度的计算,以为单位进行数据分析

1.5 通用的图计算软件

  • 基于遍历算法的,实时的图数据库;如,Neo4j,OrientDB,DEX,Infinite Graph;
  • 以图顶点为中心的,基于消息传递批处理的并行引擎;如,GoldenOrb,Giraph,Pregel,Hama;
  • 共同特点:BSP 模型
    • BSP(Bulk Synchronous Parallel Computing Mode) 模型叫整体同步并行计算模型或者简称为大同步模型
      在这里插入图片描述  
      在这里插入图片描述

二. Pregel

2.1 简介

1.Pregel 是谷歌公司发布的一款商业图计算产品;

  • Caffeine:快速用于大规模网页索引的构建;
  • Dremel:实时性的交互分析产品,是一种只读嵌套数据的分析,支持分析PB 级别的数据;
  • Pregel:基于BSP 模型实现的并行图计算系统;

2.2 Pregel 图计算模型

1.有向图和顶点
在这里插入图片描述
在这里插入图片描述

2.传递消息的基本方法

  • 远程读取;
  • 基于共享内存;
  • 基于消息传递模型;

3.Pergel 采用消息传递模型主要基于以下两个原因:
在这里插入图片描述

  • 远程读取具有较高的延迟,如MapReduce;
  • 消息传递采用的是异步的批量的方式传递,延迟低;

4.Pregel 的计算过程
在这里插入图片描述
在这里插入图片描述
5.顶点的状态在这里插入图片描述

6.Pregel 实例
在这里插入图片描述

2.3 Pregel C++ API

  • 定义基类Vertex
    在这里插入图片描述

  • 消息传递机制和Combiner
    顶点之间的通讯是通过消息传递机制来实现的,每条消息包含了消息值和需要到达的目标顶点ID.
    在一个超步S 中,一个顶点可以发送任意数量的消息,这些消息将在下一个超步(s+1)中被其他顶点接收.
    Combiner:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • Aggregator,拓扑改变和输入输出
    在这里插入图片描述

    • 可以通过Aggregator实现全局协调功能;

    拓扑改变

    在这里插入图片描述
    输入输出:
    在这里插入图片描述

2.3 Pregel体系结构

1.Pregel执行过程
在这里插入图片描述
在这里插入图片描述

  • 用户程序的执行过程:
    在这里插入图片描述
    • 选择集群中的多台机器执行图计算任务,有一台及其会被选为Master 其他机器作为Worker;
    • Master把一个图分成多个分区,并把分区分配到多个Worker,一个Worker会领到一个或多个分区,每个Worker知道所有其他Worker所分配到的分区情况;
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

2.容错性
在这里插入图片描述

3.Worker,Master和Aggregator

  • worker : 一般在执行过程中它的信息保存在内存当中,顶点当前的值,出射边列表,消息队列,标志位;worker会对自己所管辖的分区中的每个顶点进行遍历,并调用顶点上的Compute() 函数,Computer 函数接收顶点当前值,消息迭代器和出射边迭代器三个参数;
    在这里插入图片描述
    保存两份,一份用于当前超步,一份用于下一个超步.
    在这里插入图片描述
    在这里插入图片描述

  • Master:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.Pregel的应用实例------单源最短路径
在这里插入图片描述

三.Hama的安转使用

3.1 Hama 简介
在这里插入图片描述


http://chatgpt.dhexx.cn/article/vg45n9c8.shtml

相关文章

分布式图处理系统--Pregel

介绍分布式图处理系统–Pregel以及其开源实现–Giraph 图数据处理简介 图数据的应用 图数据 数据本身以图的形式呈现 社交网络传染病传播途径交通路网 某些非图结构的数据,也可以转换为图模型后进行处理 网页链接机器学习训练数据 关联性分析 图数据结构表达了…

graphx中Pregel函数详解

1、PregelAPI 图本质上是一种递归的数据结构,其顶点的属性值依赖于其邻接顶点,而其邻接顶点属性又依赖于其邻接顶点,许多重要的图算法通过迭代计算每个顶点的属性直到到达定点条件,这些迭代的图算法被抽象成一系列图并行操作。 2、…

Pregel与图迭代

graphx是如何实现Pregel迭代操作,我们应该如何使用该模型。先看下pregel接口源码: 接口中各参数的含义已在图中进行注释,所以此处不再赘述。简单介绍下源码中的参数说明: 剖析 pregel模型提供了消息收集方向、迭代次数、初始化消…

Google图算法引擎Pregel介绍

参考文献点击打开链接 【前言:有一种说法[1]是Google的程序里面80%用的是MapReduce,20%用的是Pregel。今天就来介绍一下这个Pregel。想要深入研究的同志们,可以参考最新的SIGMOD 2010 ppt[2]。】 简介 Pregel是一个用于分布式图计算的计算…

图计算: 使用 Spark Graphx Pregel API 处理分层数据

今天,分布式计算引擎是许多分析、批处理和流应用程序的支柱。Spark提供了许多开箱即用的高级功能(pivot、分析窗口函数等)来转换数据。有时需要处理分层数据或执行分层计算。许多数据库供应商提供诸如“递归 CTE(公用表达式&#…

pregel 与 spark graphX 的 pregel api

[原文](https://blog.csdn.net/u013468917/article/details/51199808)简介 在Hadoop兴起之后,google又发布了三篇研究论文,分别阐述了了Caffeine、Pregel、Dremel三种技术,这三种技术也被成为google的新“三驾马车”,其中的Pregel…

Pregel体系结构

在Pregel计算框架中,一个大型图会被划分成许多个分区,每个分区都包含了一部分顶点以及以其为起点的边 一个顶点应该被分配到哪个分区上,是由一个函数决定的,系统默认函数为hash(ID) mod N,其中,N为所有分区…

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)…