图计算-Pregel-Hama

一.图计算简介

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 简介
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Pregel是Google提出的一种计算模型,它的思想是将大规模计算问题分解成一系列小的计算任务,然后在一个分布式计算环境下并行地执行这些任务,最终得到整个计算结果。 Pregel模型的过程可以概括为以下几个步骤: 1. 的输入:首先,需要将待计算输入到Pregel系统中。这个可以是有向或无向,节点和边可以带有不同的属性。 2. 计算任务的划分:接下来,Pregel系统会将整个划分成一系列小的计算任务,每个计算任务对应中的一个节点。每个计算任务都会接收该节点的属性信息以及与该节点相邻的边的信息。 3. 计算任务的执行:每个计算任务会执行一系列迭代计算,直到达到指定的终止条件。在每次迭代中,计算任务会根据当前节点的属性信息和相邻边的信息,进行一些计算操作。这些计算操作可以是自定义的,例如更新节点的属性信息、发送消息给相邻节点等。 4. 消息传递:在计算任务的执行过程中,节点之间可能需要进行消息传递。例如,节点A在某次迭代中更新了自己的属性信息,需要将这个信息发送给与之相邻的节点B和C。Pregel系统会自动将这个消息发送到B和C,并在下一次迭代中让B和C接收这个消息。 5. 计算结果的输出:当所有计算任务都完成了迭代计算,Pregel系统会将结果输出,可以是每个节点的最终属性信息,也可以是整个的某些全局属性信息。 总之,Pregel模型主要是通过分解大规模计算问题,将其转化为一系列小的计算任务,并在分布式计算环境下并行地执行这些任务,以提高计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值