文献综述(或调研报告):
1、专用大数据图处理系统的研究进展
现今具有数百万个节点和数十亿条边的大图已经变得非常常见,而且越来越多的实际问题都需要对这样的大图进行分析与处理。对大图进行分析处理,是一项非常艰难的任务。不仅仅是因为图的规模,还因为图本身的不规则结构以及图分析计算算法的迭代性质等等。
早在2004年,Dean等人研究提出了MapReduce的大数据计算框架。MapReduce提供了一个简单但却高效的编程模型,使得开发者能够非常简单的在多个集群上构建实现并行算法,以此来处理海量的数据。但是MapReduce在对于迭代数据分析上就显得力不从心,开发者需要额外的手动链接多个MapReduce任务并用驱动程序来编排执行设计的迭代作业。而图处理算法往往都是迭代的。虽然在这之后出现了一些对MapReduce的扩展,来支持和优化MapReduce图处理算法的实现,但是这些方法对图处理仍然非常低效。
为了能够解决MapReduce框架固有的性能问题,之后出现了几种通用的大数据图处理系统。这些系统提供编程模型,能够对分布式集群系统上的大图进行并行的迭代分析。
Malewicz等人研究提出了Pregel系统,是被认为第一个提供本机API的BSP模型的实现,它专门使用“think like a vertex”的计算范例来实现图算法。Pregel将图顶点分配给集群的不同机器,其中每个顶点及其相关的邻居集被分配给同一节点。然后将图处理算法表示为超级步,其中每个超级步定义每个参与顶点必须计算的内容,并且顶点之间的边表示用于将计算结果从一个顶点传送到另一个顶点的通信信道。在每个超级步中,顶点可以执行用户自定义的函数,向其邻居节点发送或接收消息,并将其状态从活动状态更改为非活动状态。每个超级步都以同步屏障结束,这确保从一个超级步发送的消息被正确传递到之后的超级步中。在每个超级步中,如果顶点没有接收到任何消息,则顶点可以投票停止(非活动状态),并且一旦它在任何后续超级步中接收到消息,它也可以被重新激活。当所有顶点都处于非活动状态并且图形的顶点之间不再有消息传输时,整个图形处理操作终止。
Yucheng等人研究提出了GraphLab系统。与Pregel不同,GraphLab依赖于共享内存抽象和GAS (Gather, Apply, Scatter)处理模型,该模型与Pregel使用的BSP模型类似,但也有本质上的不同。GraphLab抽象由三个主要部分组成:数据图、更新函数和同步操作。数据图表示一个用户可修改的程序状态,该状态存储可变的用户定义数据,并对稀疏计算依赖项进行编码。更新函数表示用户计算,并通过在作用域的上下文中转换数据对数据图进行操作。在GAS模型中,顶点在Gather阶段收集邻域信息,在apply阶段进行计算,在scatter阶段更新相邻的顶点和边缘。因此,在GraphLab中,图顶点可以直接拉取其邻居的数据,而不需要显式地接收来自这些邻居的消息。相比之下,在Pregel的BSP模型中,顶点只能通过它的邻居推送给它的消息来知道它的邻居的值。
GraphLab提供了两种执行模式:同步和异步。与BSP一样,同步模式使用通信屏障的概念,而异步模式不支持通信屏障或超级步的概念。它使用分布式加锁来避免冲突并维护可序列化性。特别是,GraphLab通过使用细粒度加锁协议来防止相邻顶点程序并发运行,从而自动增强可序列化性,该协议要求对所有相邻顶点按顺序获取锁。
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。