图计算简介和Pregel简介

一、图计算简介

1、图结构数据

许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响
许多非图结构的大数据,也常常会被转换为图模型后进行分析
图数据结构很好地表达了数据之间的关联性
关联性计算是大数据计算的核心——通过获得数据的关联性,可以从噪音很多的海量数据中抽取有用的信息
比如,通过为购物者之间的关系建模,就能很快找到口味相似的用户,并为之推荐商品
或者在社交网络中,通过传播关系发现意见领袖

2、传统图计算解决方案的不足之处

很多传统的图计算算法都存在以下几个典型问题:
(1)常常表现出比较差的内存访问局部性
(2)针对单个顶点的处理工作过少
(3)计算过程中伴随着并行度的改变

 

针对大型图(比如社交网络和网络图)的计算问题,可能的解决方案及其不足之处具体如下:
(1)为特定的图应用定制相应的分布式实现:通用性不好
(2)基于现有的分布式计算平台进行图计算:在性能和易用性方面往往无法达到最优
现有的并行计算框架像MapReduce还无法满足复杂的关联性计算
MapReduce作为单输入、两阶段(Map和Reduce)、粗粒度(以数据块为单位处理)数据并行的分布式计算框架,在表达多迭代、稀疏结构和细粒度数据时,力不从心
比如,有公司利用MapReduce进行社交用户推荐,对于5000万注册用户,50亿关系对,利用10台机器的集群,需要超过10个小时的计算
(3)使用单机的图算法库:比如BGL、LEAD、NetworkX、JDSL、Standford GraphBase和FGL等,但是,在可以解决的问题的规模方面具有很大的局限性
(4)使用已有的并行图计算系统:比如,Parallel BGL和CGM Graph,实现了很多并行图算法,但是,对大规模分布式系统非常重要的一些方面(比如容错),无法提供较好的支持

3、图计算通用软件

传统的图计算解决方案无法解决大型图的计算问题,因此,就需要设计能够用来解决这些问题的通用图计算软件
针对大型图的计算,目前通用的图计算软件主要包括两种:
第一种主要是基于遍历算法的、实时的图数据库,如Neo4j、OrientDB、DEX和 Infinite Graph
第二种则是以图顶点为中心的、基于消息传递批处理的并行引擎,如GoldenOrb、Giraph、Pregel和Hama,这些图处理软件主要是基于BSP模型实现的并行图处理系统

  一次BSP(Bulk Synchronous Parallel Computing Model,整体同步并行计算模型,又称“大同步”模型)计算过程包括一系列全局超步(超步就是计算中的一次迭代),每个超步主要包括三个组件:
  局部计算:每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的
  通讯:处理器群相互交换数据,交换的形式是,由一方发起推送(put)和获取(get)操作
  栅栏同步(Barrier Synchronization):当一个处理器遇到“路障”(或栅栏),会等到其他所有处理器完成它们的计算步骤;每一次同步也是一个超步的完成和下一个超步的开始

二、Pregel简介

  谷歌公司在2003年到2004年公布了GFS、MapReduce和BigTable,成为后来云计算和Hadoop项目的重要基石
  谷歌在后Hadoop时代的新“三驾马车”——Caffeine(大规模网页索引构建,即爬虫)、Dremel(实时交互式查询,PB级数据2-3秒即可给出查询结果)和Pregel,再一次影响着圈子与大数据技术的发展潮流
  Pregel是一种基于BSP模型实现的并行图处理系统
  为了解决大型图的分布式计算问题,Pregel搭建了一套可扩展的、有容错机制的平台,该平台提供了一套非常灵活的API,可以描述各种各样的图计算
  Pregel作为分布式图计算的计算框架,主要用于图遍历、最短路径、PageRank计算等等

你可能感兴趣的:(图计算)