一种基于磁盘的分布式图计算方法

文档序号:9887309阅读:438来源:国知局
一种基于磁盘的分布式图计算方法
【技术领域】
[0001] 本发明属于计算机技术领域,更具体地,涉及一种基于磁盘的分布式图计算方法。
【背景技术】
[0002] 图(graph)是计算机科学中最常用的一类抽象数据结构,在结构和语义方面比线 性表和树更加复杂,更具有一般性表示能力。在当今大数据的背景下,呈现出越来越多的大 规模图分析应用需求;对于各种大规模图计算的应用要求,多采用计算模型处理;计算模型 关系到图处理系统的硬件成本、性能、效率等重要特征,目前的图处理系统主要采用以下几 种计算模型:
[0003] 基于内存的大规模同步并行处理模型(Bulk Synchronous Parallel model, BSP):把一个图计算作业(job)分为多个超步,每个超步以顶点为单位进行并行计算;在每 个超步中,每个顶点(vertex)v根据它的邻居顶点在上一个超步发给它的消息来更新它自 己的状态,并根据新的状态产生消息,然后把消息发送给它的邻居;每个超步结束时,系统 需要执行一个高代价的同步,确保所有的消息都被成功接收;这种方式把图驻留大规模集 群的内存中,目的是可以利用大规模集群的并行处理能力;但具有以下缺陷:
[0004] -是每个超步结束后,系统需要执行一个高代价的同步过程,用于顶点之间的消 息交换;二是只能观察到前一个超步的计算结果,降低了计算的收敛速度,甚至有些图算法 不能收敛;三是图数据顶点间的强耦合性以及图算法本身缺乏并行性的特征很难使大规模 集群的并行处理能力发挥作用;四是自然图的度分布极度不均匀,即极少数顶点拥有大部 分度,这些"度高"的顶点在BSP计算模型中成为一个重要的性能瓶颈,系统要等最慢的顶点 计算完成后才能进行同步消息交换;因此,该模型效能较低,且随着所处理图的规模增大, 这种劣势越明显。
[0005] 基于内存的大规模异步并行计算模型(Bulk Asynchronous Parallel model, BAP) :BAP计算模型也以顶点为单位进行并行计算,顶点在计算过程中可以观察到本轮迭代 邻居顶点的最新值;BAP计算模型取消了同步的消息交换过程,顶点在计算过程中直接更新 其邻居顶点及边的值;该方法存在以下缺陷:两个顶点不能同时对同一个顶点进行更新操 作,顶点间数据相关性使大规模并行处理能力得不到充分发挥,系统效能低,对于越大规模 的图,系统需要越大规模的集群。
[0006] 基于磁盘单节点的串行计算模型:该计算模型把图的顶点分割成多个不相连的区 间(interval),在一轮迭代中系统串行执行这多个区间;每个区间的执行分为三个阶段: ⑴子图的加载与构建,⑵计算(CPU时间),(3)保存结果;该方式节约硬件成本,系统效率 很高;但是,由于每执行一个区间时,系统需要把子图从磁盘加载到内存,计算完成后又需 要将结果保存到磁盘,系统的读写时间通常达到整个运行时间的90%,高昂的读写开销拉 低了系统的性能。

【发明内容】

[0007] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于磁盘的分布式图计 算方法,其目的在于提高大规模图处理系统的效能。
[0008] 为实现上述目的,按照本发明的一个方面,提供了一种基于磁盘的分布式图计算 方法;与基于内存的大规模并行图计算模型不同的是,本发明提供的基于磁盘的分布式图 计算方法的每个计算节点管理多个子图,子图被存贮在磁盘;具体包括以下步骤:
[0009] (1)预处理,将图分割成P个能被装进各计算节点内存的子图;其中,P>1;
[0010] (2)通过N次迭代完成一个图计算作业;N2 1;
[0011] (3)输出结果:主节点将各计算节点的计算结果进行合并,并输出给用户。
[0012] 优选地,上述步骤(2)具体包括如下子步骤:
[0013] (2.1)子图指派:主节点采用以下哈希函数将P个子图依次指派到Μ个计算节点;其 中,Μ>1,Μ<Ρ;
[0014] H(s)=s mod M,s为子图s的ID号,0<s<P-l;
[0015] (2.2)任务指派:主节点采用以下哈希函数将(NXP)个任务依次指派到各计算节 点;各计算节点把收到的任务依次放入一个任务队列;
[0016] H(t)=t mod M,其中t为第t个任务的ID号,0<t<NX(P-l);
[0017] (2.3)任务与子图关联:计算节点采用以下哈希函数关联任务队列的任务与子图; [0018] H(t)=t mod P,其中t为任务的ID号,H(t)为认为所关联子图的ID;
[0019] (2.4)由主节点对(NXP)个任务进行调度,向各计算节点发出"开始执行"指令;
[0020] (2.5)各计算结点取出任务,并根据该任务关联的子图构建子图数据结构,并行处 理该子图的所有顶点,并按优先级发送保持数据块;
[0021] 该步骤中,采用一个轻量级的集群以流水的方式执行图计算任务,各任务的计算 阶段按顺序执行,而各任务的子图加载和构建与结果存储和数据发送两个阶段与其它任务 的子图计算阶段并行执行;
[0022] 优选地,步骤(2.5)具体包括以下子步骤:
[0023] (2.5.1)各计算节点从任务队列中取出任务,从磁盘加载该任务关联的子图,并在 内存中构建该子图的数据结构;
[0024] (2.5.2)判断前一个任务的计算阶段是否完成,若是,则进入步骤(2.5.3);若否, 则等待,直到前一个任务的计算阶段完成,再进入步骤(2.. 5.3);
[0025] (2.5.3)计算节点根据用户定义并行处理该子图的所有顶点;
[0026] (2.5.4)计算节点根据各子图所依赖数据块的个数设置子图的优先级,并按优先 级从高到低的顺序,将子图所依赖的数据块发送给其它(P-1)个子图;
[0027] 由此,优先级高的子图对应的任务可以尽可能快地结束等待过程,进入计算阶段;
[0028] (2.5.5)判断是否达到用户设定的结束条件或任务队列为空,若是,则向主结点发 送本计算结点的计算结果;若否,则进入步骤(2.5.1)。
[0029] 优选地,上述优先级,根据子图所依赖数据块的个数确定,子图所依赖数据块的个 数越小,子图的优先级越高。
[0030] 本发明中,分布式图处理方法采用的是一种基于磁盘的分布式计算模型,其中,一 个有向图G=(V,E)由顶点集合V和边集合E组成;每个顶点v( vev)关联一个用户定义的值; 对于一条边e(u,v)而言,6是7的入边,是u的出边;每条边e被关联一个用户定义的值;
[0031] 用图分割算法把原始图分割成P个子图,一个图算法作业由N次迭代组成,子图的 一次执行为一个任务,共有(P X N)个任务;
[0032] -个任务的执行分三个阶段:(1)子图加载和构建;(2)子图的计算;(3)结果存储、 向其它子图发送相关数据;
[0033]采用一个轻量级的集群以流水的方式执行图计算任务,各任务的计算阶段按顺序 执行,任意时刻只有一台计算机处于子图的计算阶段;而每个任务的子图加载和构建阶段 与结果存储和数据发送阶段与其它任务的子图计算阶段并行执行;
[0034] 通过任务之间的重叠执行,可隐藏系统执行过程中磁盘读写与通讯的时延,这种 执行过程使整个系统的运行时间几乎缩短到计算时间(CPU时间),大大提高了系统的性能, 其有益效果在于,面对不同规模的图,系统始终保持极小的系统规模。
[0035] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有 益效果:
[0036] 1、系统的硬件成本大幅降低:采用大规模并行处理模型的系统,其集群的规模随 着图规模的增大而增大;本发明所提供的基于磁盘的分布式图计算方法,将图分割子图,由 轻量级集群的若干台机器执行图计算任务,系统只需要少量普通计算机就能处理规模不同 的图,并且随着图规模的增大系统也能保持良好的性能;
[0037] 2、高性能与良好的可扩展性,本发明中,通过将任务的计算与其它任务的网络通 讯以及磁盘读写进行重叠,从而使得整个作业的执行时间几乎缩短到接近于各任务的计算 时间之和;
[0038] 另外,与大规模同步并行处理模型相比,本发明所基于的计算模型的相邻迭代之 间没有明显界限,前一轮迭代的计算阶段完成后,下一轮迭代可以立即执行计算部分;
[0039] 因此,当处理不同规模图时,系统总能持续保持良好性能,而使用的机器数量却保 持不变。另外,每个计算节点管理一定数量子图,子图都存储在磁盘上,任何时刻只有当前 执行任务的子图加载到内存中;因此,系统所能处理图的规模取决于各计算节点硬盘容量 总和;实测表明,当系统规模为14,每个worker节点安装了2个1TB的硬盘,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1