为解决大规模计算和海量数据处理问题,Google 在 2010 年提出了图计算模型 Pregel。随后又陆续出现了。GraphLab、GraphChi等典型图计算系统。
图计算是人工智能的一个使能技术。
大数据时代,越来越多的数据采用图结构进行表示.图也是一种能够表达对象之间复杂关系的数据存储方式。
那么,什么是图?
下面是数据类型的结构和图的结构表示对比:
可以看出:图(graph)是一种用于表示对象之间联系的抽象数据结构。
接下来,小普列举几个常见的图计算模式:(这部分比较偏向于技术,想看应用的小伙伴可以往下滑)
目前的图计算框架基本上都遵循BSP(Bulk Synchronous Parallell)计算模式。它将计算分成一系列的超步(superstep)的迭代(iteration)。从纵向上看,它是一个串行模型,而从横向上看,它是一个并行的模型,每两个superstep之间设置一个栅栏(barrier),即整体同步点,确定所有并行的计算都完成后再启动下一轮superstep。
超步可分为三个阶段:
01计算
每一个processor利用上一个superstep传过来的消息和本地的数据进行本地计算;
02消息传递
每一个processor计算完毕后,将消息传递给与之关联的其它processors;
03整体同步
用于整体同步,确定所有的计算和消息传递都进行完毕后,进入下一个superstep。
BSP模型架构
模型基于一个master协调,所有的worker同步(lock-step)执行, 数据从输入的队列中读取。
Pregel模型
Pregel在概念模型上遵循BSP模式。整个计算过程由若干顺序运行的超级步(Super Step)组成,系统从一个“超级步”迈向下一个“超级步”,直到达到算法的终止条件。
超步的组成如下:
01vpro
是节点上的用户定义的计算函数,运行在单个节点之上,在superstep 0,这个函数会在每个节点上以初始的initialMsg为参数运行并生成新的节点值。在随后的超步中只有当节点收到信息,该函数才会运行。
02sendMsg