CN105224528A - 基于图计算的大数据处理方法和装置 - Google Patents
基于图计算的大数据处理方法和装置 Download PDFInfo
- Publication number
- CN105224528A CN105224528A CN201410228184.7A CN201410228184A CN105224528A CN 105224528 A CN105224528 A CN 105224528A CN 201410228184 A CN201410228184 A CN 201410228184A CN 105224528 A CN105224528 A CN 105224528A
- Authority
- CN
- China
- Prior art keywords
- value
- page
- summit
- buffer memory
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种基于图计算的大数据处理方法和装置,其中方法包括:从第一磁盘文件获取图计算模型的边;从堆向量中读取所述图计算模型的顶点值;运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。本发明提高了数据处理的速度。
Description
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种基于图计算的大数据处理方法和装置。
背景技术
当前,大数据问题(bigdataproblem)是信息科学技术领域的最前沿最受关注的课题之一,随着物联网、移动互联网、云计算以及各种数据自动采集技术的迅猛发展,许多机构或公司在迅速积累着大量的数据,比如客户有关的商业数据。同时,许多企业也已经开始组建和运作专门的大数据分析团队,以通过分析挖掘这些商业数据,及时发现新的市场机会或商业模式。现有技术中,大数据处理可以使用基于图计算的方式来进行,其基本思路是将要处理的大数据表示成实体-关系(E/Rmodel)形式的图计算模型,即采用顶点(vertex)存储顶点值,采用边(edge)表示顶点之间的关系;例如,对于矩阵因子分解算法,其图计算模型的顶点是一位用户或某个物品,边就是该用户对物品的评价关系。
GrahpChi是目前被普遍采用的一种基于图计算的大数据处理方法,该方式将顶点值同时存储在顶点和边上,即将本身属于顶点v的值v.value,同时存储在图模型中的顶点v以及该v的出边上(出边即从v发出的指向其他顶点的边),那么假设v的出边的数目是degree+(v),那么需要将v.value复制degree+(v)份分别存储到各出边中。但是,GrahpChi在磁盘的数据存储方式是按边存储的滑动窗口机制,将用于存储数据的磁盘分成了p个数据分片,每个数据分片存储某顶点以及该顶点的所有入边(比如,顶点v的入边即从其他顶点指向v的边),而该顶点的出边存储在其他数据分片中。那么数据处理中更新的顶点值v.value,既要在该顶点v所在的数据分片中更新,又要将该v.value复制degree+(v)份同步更新到其他数据分片中存储的顶点v的出边上,这个过程必然会带来额外的磁盘访问开销,使得大数据的处理速度较慢。
发明内容
本发明实施例提供一种基于图计算的大数据处理方法和装置,以减少基于图计算的数据处理过程中的磁盘I/O开销,提高数据处理速度。
第一方面,本发明实施例提供一种基于图计算的大数据处理方法,所述方法应用于大数据处理系统,所述大数据处理系统包括至少一个计算节点;所述计算节点存储有基于大数据构造的图计算模型,其中所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;所述边存储在所述计算节点的第一磁盘文件中,所述顶点对应的顶点值存储在所述计算节点的堆向量中,其中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述方法包括:
所述计算节点从所述第一磁盘文件获取所述图计算模型的边;
所述计算节点从所述堆向量中读取所述图计算模型的顶点值;
所述计算节点运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
结合第一方面,在第一种可能的实现方式中,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;所述从堆向量中读取所述图计算模型的顶点值,包括:从所述堆向量的缓存中读取所述顶点值中的目标顶点值;所述将所述更新的顶点值存储至所述堆向量,包括:采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述从堆向量中读取所述图计算模型的顶点值之前,还包括:将所述顶点值存储至所述第二磁盘文件。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述顶点值存储至所述第二磁盘文件,包括:根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述从所述堆向量的缓存中读取所述顶点值中的目标顶点值,包括:根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;根据所述目标位置得到所述目标顶点值。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,根据所述目标位置得到所述目标顶点值,包括:根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第一方面的第五种或第六种可能的实现方式,在第七种可能的实现方式中,还包括:若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,在将所述第三缓存页面存储的顶点值删除之前,还包括:若所述第三缓存页面具有已更改标识,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
第二方面,本发明实施例提供一种基于图计算的大数据处理装置,所述装置存储有基于大数据构造的图计算模型,所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;所述边存储在所述大数据处理装置的第一磁盘文件中,所述顶点对应的顶点值存储在所述大数据处理装置的堆向量中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述大数据处理装置包括:
第一读取单元,用于从所述第一磁盘文件获取所述图计算模型的边;
第二读取单元,用于从所述堆向量中读取所述图计算模型的顶点值;
处理单元,用于运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
结合第二方面,在第一种可能的实现方式中,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;所述第二读取单元,具体用于从所述堆向量的缓存中读取所述顶点值中的目标顶点值;所述处理单元,具体用于采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:存储单元,用于将所述顶点值存储至所述第二磁盘文件。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述存储单元包括:顶点数目确定单元,用于根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;页面数目确定单元,根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;标识设置单元,用于根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;顶点值存储单元,用于将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第二读取单元包括:位置确定单元,用于根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;获取单元,用于根据所述目标位置得到所述目标顶点值。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述获取单元,具体用于根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述获取单元,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第二方面的第五种或第六种可能的实现方式,在第七种可能的实现方式中,所述获取单元,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,所述处理单元,还用于在所述第三缓存页面具有已更改标识时,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
第三方面,本发明实施例提供一种基于图计算的大数据处理方法,所述方法应用于大数据处理系统,所述大数据处理系统包括多个计算节点及可供所述多个计算节点访问的存储节点;所述存储节点上存储有基于大数据构造的图计算模型,其中所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;
所述边存储在所述存储节点的第一磁盘文件中,所述顶点对应的顶点值存储在所述存储节点的堆向量中,其中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述方法包括:
所述多个计算节点中的第一节点从所述第一磁盘文件获取所述图计算模型的边;
所述第一节点从所述堆向量中读取所述图计算模型的顶点值;
所述第一节点运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
结合第三方面,在第一种可能的实现方式中,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;
所述从堆向量中读取所述图计算模型的顶点值,包括:从所述堆向量的缓存中读取所述顶点值中的目标顶点值;
所述将所述更新的顶点值存储至所述堆向量,包括:采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
结合第三方面的第一种可能的实施方式,在第二种可能的实现方式中,在所述从堆向量中读取所述图计算模型的顶点值之前,还包括:将所述顶点值存储至所述第二磁盘文件。
结合第三方面的第二种可能的实施方式,在第三种可能的实现方式中,所述将所述顶点值存储至所述第二磁盘文件,包括:
根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;
根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;
根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;
将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
结合第三方面的第三种可能的实施方式,在第四种可能的实现方式中,所述从所述堆向量的缓存中读取所述顶点值中的目标顶点值,包括:
根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;
根据所述目标位置得到所述目标顶点值。
本发明实施例提供的基于图计算的大数据处理方法和装置,通过将边和顶点值分开存储,边存储在第一磁盘文件中,顶点值存储在堆向量中,在更新顶点值时只需要在堆向量中更新即可,从而减少了基于图计算的数据处理过程中的磁盘I/O开销;并且堆向量是具有向量数据结构的数据库堆文件,通过将顶点值中待执行读或写操作的目标顶点值也存储于堆向量的缓存中,提高了数据处理速度。
附图说明
图1为本发明实施例提供的基于图计算的大数据处理方法的图计算模型示例图;
图2为本发明实施例提供的基于图计算的大数据处理方法中的堆向量体系结构图;
图3为本发明实施例提供的基于图计算的大数据处理方法中的缓存机制示意图;
图4为本发明实施例提供的基于图计算的大数据处理方法一实施例的流程示意图;
图5为本发明实施例提供的基于图计算的大数据处理方法另一实施例的流程示意图;
图6为本发明实施例提供的基于图计算的大数据处理方法另一实施例中的页面调度示意图一;
图7为本发明实施例提供的基于图计算的大数据处理方法另一实施例中的页面调度示意图二;
图8为本发明实施例提供的一种基于图计算的大数据处理装置的结构示意图;
图9为本发明实施例提供的另一种基于图计算的大数据处理装置的结构示意图;
图10为本发明实施例提供的基于图计算的大数据处理装置的实体结构示意图。
具体实施方式
大数据(bigdata)也称为巨量数据,指的是所涉及的数据量规模非常巨大,这些数据可以通过处理和分析成为帮助企业经营决策的有利信息。本发明实施例的大数据处理方法主要应用于图计算中的大数据处理系统,该大数据处理系统可以是一台单独的计算设备(比如个人电脑)或计算节点(比如计算机或服务器),也可以是包含多个计算节点的集群。上述的大数据处理系统可以应用于如下的一种可选的应用场景:某购物网站中展示了多种商品,其中有的商品已经被很多人购买过,而有些商品尚未被购买;并且,已经被购买的商品还被消费者根据实际使用情况进行了评分(例如有的人使用后感觉很好评分较高,有的人使用后感觉不好评分较低),所以从购物网站的上述商品消费记录可以得到如下的大数据:即某消费者对某商品的评分值。现在要通过处理和分析这些数据用以帮助企业进行商业经营活动,比如根据已有的上述大数据预测某消费者对某商品的可能评分值(当然所预测的是还未购买过该商品的消费者),如果预测的可能评分值较高,则推测该消费者可能对该商品有购买兴趣,则将该商品推荐给该消费者(推荐方式可以有多种,比如弹送广告)。那么在上述的“根据已有的上述大数据预测某消费者对某商品的可能评分值”的过程中,就用到了本发明实施例的大数据处理方法,比如,大数据处理系统将已经收集的评分值数据构造图计算模型,并将数据进行存储以及在处理过程中不断的存取和更新所述数据,最终得到预测的评分值。本发明实施例的大数据处理方法着重针对的是如何存储这些数据、以及如何提高处理过程中的数据存取的速度,为了解决现有技术中所提到的大数据处理中存在的磁盘访问开销较大且处理速度较慢的问题,是为了通过提高上述的数据存取速度来进而提高整个数据处理的速度,而具体如何计算可以采用常规技术,本发明实施例对此不再重点描述。
上述的大数据处理系统中存储有基于大数据构造的图计算模型,其中所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边。具体而言,当该大数据处理系统仅包含一个计算节点时,所述边具体存储在所述计算节点的第一磁盘文件中,所述顶点对应的顶点值存储在所述计算节点的堆向量中,其中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;当该大数据处理系统为包含多个计算节点的集群时,基于大数据构造的图计算模型存储在可供所述多个计算节点访问的存储节点上,该存储节点可以是共享磁盘、分布式存储器等,本发明不做特别限定;进一步地,所述边具体存储在可供所述多个计算节点共同访问的第一磁盘文件中,所述顶点对应的顶点值存储在可供所述多个计算节点共同访问的堆向量中。为了使得对于本发明实施例的方法更加容易理解,首先对基于图计算的大数据处理中所涉及到的一些基本概念进行简单说明:
图计算模型:图计算模型是基于待处理的数据生成的一种数据模型,包括顶点和边,顶点用于存储顶点值(顶点值的具体解释可以参见后面对“顶点和顶点值”的释义,这里不再详述),边用于表示各顶点之间的关系。例如对于PageRank算法,该图计算模型即为网页链接图,顶点就是Web网页,边就是由一个网页发出指向另一个网页的超链接(hyperlink)。又例如对于矩阵因子分解算法(matrixfactorization),该图计算模型即为用户/物品评价关系构成的二分图,顶点表示一位用户或某个物品,边表示用户对物品的评价关系。例如,假设有F1和F2两个顶点,以及从F1指向F2的一条边,F1表示用户小王,F2表示物品手机,那么所述的从F1指向F2的边表示的就是用户小王对手机的评价,这个评价比如可以采用打分制,假设小王对该手机打分是3分,那么在所述的边上可以存储打分值“3”,即所述的评价关系是“小王对手机打3分”。
图1为本发明实施例提供的基于图计算的大数据处理方法的图计算模型示例图,该图1以上述PageRank算法为例,顶点A、B、C和D分别表示Web网页,那么从A指向B的边“A—>B”表示从网页A向网页B的链接,从A指向C的边“A—>C”表示从网页A向网页C的链接,从D指向A的边“D—>A”表示从网页D向网页A的链接。并且,“A—>B”和“A—>C”可以称为顶点A的出边,这里所述的“顶点A的出边”是以顶点A为起点指向其他顶点的边,即从A发出去的边,“D—>A”可以称为顶点A的入边,这里所述的“顶点A的入边”是以其他顶点为起点并以顶点A为终点的边,即指向A的边。
顶点和顶点值:假设顶点是v,该顶点v用于存储顶点值v.value,v.value是处理数据所用的数据挖掘算法所需要计算的值。例如,大数据处理需要使用PageRank算法,该PageRank算法需要计算Web网页的PageRank打分值,所以v.value是Web网页的PageRank打分值。又例如,大数据处理需要使用matrixfactorization算法,v.value是matrixfactorization算法需要训练的全部用户或者物品的向量因子factors。需要说明的是,在初始对数据尚未进行处理之前,即刚构造完成图计算模型时,v.value是一个初始值,比如是初始的PageRank打分值;在数据处理过程中顶点值可能会更新,那么v.value也要随之更新为新的PageRank打分值。
此外,在图计算模型中,每个顶点都有唯一编号,用于标识该顶点,本实施例中将顶点编号称为顶点值索引。又以图1为例,顶点A~D分别存储的是对应的Web网页的PageRank打分值,在后续的数据处理过程中,如果该打分值有所更新,则将更新后的打分值存储在对应的顶点。并且,A~D也作为这四个顶点的标识称为顶点值索引。
顶点值类型:可以用v.value_type表示,是处理数据所用的数据挖掘算法所需要计算的值的类型。例如PageRank算法,v.value_type是PageRank打分值的类型,比如实数型。又例如matrixfactorization算法,v.value_type是matrixfactorization算法需要训练的全部用户或者物品的向量因子factors的类型,可以由用户定义的C++类描述实现。
在本实施例中,将顶点值和边分开存储,顶点值是使用专门设计的堆向量来存储的;堆向量是一种具有向量数据结构的数据库堆文件,在介绍本发明实施例的大数据处理方法前,先对堆向量的体系结构进行说明如下:
堆向量:本发明实施例的堆向量的体系结构可以参见图2,图2为本发明实施例提供的基于图计算的大数据处理方法中的堆向量体系结构图,该堆向量包括从下向上的体系结构:物理硬盘(physicalharddisk)、磁盘文件(kernelfilesystem)、磁盘管理(diskspacemanager)、缓存管理(buffermanager)和调用接口(heapvector)。
数据存储在该堆向量中,实际是存储在物理硬盘的空间,磁盘文件和磁盘管理相当于该堆向量中的部分功能模块,用于对数据进行管理,比如,磁盘文件将实际的物理硬盘作为一个“磁盘”,分成多个固定大小(block_size)的“块”(block),来对空间进行使用管理。在上述的多个块中,第一块(superblock)可以用于存储一些磁盘的全局信息,例如总块数、文件目录等,文件目录用于记录多个不同文件(file_entry),每个文件包括一些连续的块,可以记录这些连续块的开始块和终止块;而这些属于文件的块称为文件页面。在磁盘文件中还可以包括空间标示块(spacemapblocks),可以用于存储上述块的分配信息,可以是标示各个块是否已经被分配的位图。余下的块是数据块(datablocks),用于存储实际的数据即顶点值。
缓存管理(buffermanager)是用于管理缓存来对顶点值进行读取和写入的。具体的,本实施例分配固定大小的内存作为缓存,并且将缓存也分成了多个缓存页面,缓存页面的大小可以与文件页面的大小相同。本实施例设置缓存管理的作用是为了减小对存储顶点值的磁盘的访问,将一些使用较多的文件页面也存储在缓存中,可以直接从缓存中访问,这样就可以减小对磁盘的访问开销。
以图3为例说明缓存的作用,图3为本发明实施例提供的基于图计算的大数据处理方法中的缓存机制示意图。假设缓存中包括五个缓存页面,并假设磁盘文件中包括十个文件页面,其中,文件页面w1与缓存页面h1具有映射关系,意思是,w1中存储的顶点值也存储在h1中,形象的说,相当于将w1搬到了缓存中即是h1,并且,当后续需要访问w1时,根据该映射关系可以得知,h1是w1映射在缓存中的,可以直接访问h1即可,不用再访问w1,这样就减少了对磁盘的访问开销。其余的映射关系同理,例如“w2——h2”,参见图3,不再赘述。具体实施中,哪个文件页面需要映射到缓存中,可以根据某种规则或算法来确定,比如可以将访问频率较高的文件页面映射到缓存页面中。上述的映射关系也需要存储,当然在图3中仅是示例,映射关系可以存储在堆向量的buffermanager中,可以通过哈希表的方式实现管理。
对于堆向量中的调用接口,可以提供读取功能调用接口operator[int],以及写入功能调用接口updateRecord(value_type)。
下面将在上述一些基本概念的解释基础上,进一步详细阐述本发明实施例的基于图计算的大数据处理方法的处理过程和机制,需要说明的是,本发明实施例提供的基于图计算的大数据处理方法,主要应用于图计算中的大数据处理系统,基于上面的描述,当该大数据处理系统仅包单个计算节点时,该方法的步骤由该单个计算节点来执行;当该大数据处理系统为包含多个计算节点的集群时,该方法的步骤可由所述多个计算节点中的某一个节点(如第一节点)来执行,也可由多个节点共同执行。
图4为本发明实施例提供的基于图计算的大数据处理方法一实施例的流程示意图,如图4所示,该方法可以包括:
401、从第一磁盘文件获取图计算模型的边,从堆向量中读取所述图计算模型的顶点值;
其中,在构造图计算模型时,就将图计算模型的顶点值和边分开存储,将顶点值的存储在堆向量,将边存储在第一磁盘文件。所述边用于表示各所述顶点之间的关系,所述顶点值具体是存储在堆向量的第二磁盘文件中,并且,所述堆向量用于在所述堆向量的缓存中执行对所述顶点值的读或写操作。也就是说,所述的堆向量包括第二磁盘文件以及缓存,如果要读取该堆向量中的某个顶点值或者对该顶点值进行写操作,不是直接向第二磁盘文件进行读写操作,而是与所述缓存交互,在所述缓存中读取所述顶点值或者写所述顶点值,该缓存中也存储着要读写的所述顶点值。
具体的,待处理的数据可以显示给出图计算模型的结构而直接得到顶点和边,也可以隐含的给出图计算模型的结构。边是一个有序或无序的顶点对,对应有向边和无向边的情况,构成的图分别是有向图和无向图。例如,PageRank算法的Web图结构是显式给出的,是有向图。而matrixfactorization算法中的图结构是隐含给出的,顶点分为两个部分即用户和被用户评价的物品;边是由用户和物品的评价关系生成;顶点和边构成的二分图,是无向图。
本实施例将图计算模型的边和顶点值是分开存储的,将边存储在磁盘文件中,可以称为第一磁盘文件;顶点值是存储在堆向量中的。并且,本实施例的堆向量是具有向量数据结构的数据库堆文件,该堆向量采用数据库体系结构去存储顶点值,以更加方便顶点值的存取;所述的数据库体系结构比如是设计了包括缓存、页面分配和存储以及访问机制等的一整套顶点值的存储和访问方式。在存储边时,一般可以使用邻接列表的形式存储边,边可以在磁盘上以一定的顺序去分组和排列,以减少算法运行的I/O;例如可以使用GraphChi的滑动窗口机制(ParallelSlidingWindow,简称:PSW)完成存储图计算模型的边。
402、运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值时,并将所述更新的顶点值存储至所述堆向量。
本实施例中,在进行数据处理时,从所述第一磁盘文件获取所述边,从所述堆向量获取所述顶点值,并基于所述边和顶点值运行数据处理算法得到更新的顶点值;
具体的,所述的数据处理算法可以是某种数据挖掘算法,例如PageRank算法或者matrixfactorization算法等,并且需要进行多次迭代计算,在这多次迭代计算的过程中,顶点值会不断更新,直至算法计算得到的顶点值满足算法要求时结束数据处理,这时已经得到所有要计算的顶点值。
在每次迭代时,需要从第一磁盘文件获取边,从堆向量获取顶点值,基于这些边和顶点值运行数据处理算法进行处理。具体的,可以分成不同的线程运行基于不同邻接子图部分的分析计算,从第一磁盘文件读取的是某邻接子图的边,从堆向量读取的也是该邻接子图对应的顶点值,每个线程处理一个邻接子图。所述的邻接子图的意思可以结合图1来看,比如在图1中,有向边“A—>B”就是A的邻接子图(该子图包括顶点A和顶点B),那么就是从第一磁盘文件获取边“A—>B”,从堆向量获取顶点A和顶点B,然后运用PageRank算法基于边和顶点值进行处理,有可能得到的是更新的顶点值分别为A’和B’。
在得到更新的顶点值后,将所述更新的顶点值存储至所述堆向量中的对应顶点。
例如,以上述的得到更新的顶点值分别为A’和B’为例,在本步骤中,则将A’和B’更新到堆向量中,用A’代替原来顶点A的初始值,用B’代替原来顶点B的初始值。继续进行迭代运算,直至顶点值达到算法要求为止,比如最终得到顶点值A’’’和顶点值B’’’,该顶点值A’’’和顶点值B’’’满足了PageRank算法的要求,则本次对大数据的处理结束。本实施例的基于图计算的大数据处理方法,通过堆向量专门存储顶点值,并且将边和顶点值是分开存储的,这样在更新顶点值时只需要在堆向量中更新即可,相比于现有技术中的顶点值更新时同时在边上存储同步,大大提高了数据处理的速度;并且,本实施例的大数据处理方法中,顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中,堆向量是通过缓存来执行对顶点值的读或写操作,即要进行读写操作的顶点值不仅存储在第二磁盘文件也存储在缓存,可以从缓存中直接进行读写,不需要与第二磁盘文件交互,这样就能够减少对第二磁盘文件的I/O访问开销,加快数据读写的速度;并且,本实施例的堆向量是具有向量数据结构的数据库堆文件,能够更加快速的提供顶点值的存取。
图5为本发明实施例提供的基于图计算的大数据处理方法另一实施例的流程示意图,本实施例将更详细的阐述基于堆向量存储的顶点值,如何进行顶点值的读取或写入等具体的操作。如图5所示,该方法可以包括:
501、根据待处理的数据构造图计算模型的顶点和边;
502、将边存储至第一磁盘文件,并将顶点值存储至堆向量;
本步骤中,在将顶点值存储至堆向量之前,需要根据要存储的顶点值的数目建立相应大小的堆向量以存储所有顶点值。构建堆向量的过程实际上是分配用于存储顶点值的文件页面,假设顶点值的数目是|V|,则需要确定存储|V|个顶点值v.value所需要的文件页面数,以分配能容纳|V|个顶点值v.value的文件页面。其中,文件页面在前面已经说明过,是堆向量中的第二磁盘文件中用于存储所述顶点值的数据块,第二磁盘文件的命名是为了与存储边的第一磁盘文件相区分。具体的步骤可以如下:
首先,根据顶点值的类型v.value_type、单个文件页面的空间block_size,可以得到单页面顶点值数目page_rec_num,该单页面顶点值数目用于表示单个文件页面最多存储的顶点值数目。可以按照下面的公式(1)计算:
其中,页面内存储完最后一个值可能有剩余空间,但不能放下一个完整的v.value,所以上面的公式(1)向下取整。
然后,根据待存储的顶点值的总数目、以及上面得到的单页面顶点值数目page_rec_num,得到存储所述顶点值所需的文件页面数page_num,可以按照下面的公式(2)计算:
最后,经过上面的两步计算,已经得到了要存储所有的顶点值需要分配的文件页面数。那么,就可以根据得到的文件页面数,分配用于存储所述顶点值的所述文件页面,
分配的过程可以如下:buffermanager调用newPage函数分配page_num个连续的文件页面,并记录首页面为first_page。具体的,buffermanager是基于diskspacemanager,综合数据结构提供了如下数据接口:
StatusnewPage(int,page*,int)//分配连续的若干页;
StatusfreePage(int)//释放页面;
StatuspinPage(int)//通过hash查找,如果已经在缓存则返回指针;如果不在缓存,则找到其对应的缓存页面,并且将数据读入该缓存页面。如果缓存已满,则需要换页后再读取;
StatusunpinPage(int)//将页面写回磁盘;
本步骤中,buffermanager是调用newPage函数,并基于diskspacemanager,diskspacemanager调用allocate_page从第二磁盘文件kernelfile分配文件页面。比如,结合图3,本实施例可以是分配了从文件页面w1至w5的连续的文件页面来存储所有的顶点值,那么这些分配的文件页面的首页面就是w1。此外,可以将用于表示文件页面是否被分配的标示设置为已分配,所述标示位于第二磁盘文件中,具体的例如是第二磁盘文件中的空间标示块(spacemapblocks),可以将其设置成已经被分配的标识。
在完成文件页面的分配后,将顶点值存储进文件页面即可。
503、从第一磁盘文件获取所述边,从堆向量获取所述顶点值;
其中,本步骤重点说明如何从堆向量获取顶点值,即顶点值的读取过程。例如,假设要读取的顶点值的编号即顶点值索引是index,比如在图1中,顶点A的index是111,顶点B的index是112,顶点C的index是113等。假如本步骤要对邻接子图“A—>B”(包括顶点A和顶点B)进行分析,那么从第一磁盘文件读取有向边“A—>B”,并从堆向量读取顶点A和顶点B。在读取有向边“A—>B”时,就可以得到该有向边对应的顶点值索引index,分别是111和112,则根据111和112从堆向量中查找并读取。
首先,根据顶点值索引、单页面顶点值数目以及分配的文件页面中的首页面,确定目标顶点值所在的目标文件页面,该目标顶点值即是要读取的顶点值,即顶点A和顶点B存储的顶点值。按照如下公式(3)计算:
接着,在得到是哪个文件页面(即target_page对应的文件页面)存储了目标顶点值之后,进一步计算是该目标文件页面(即target_page对应的文件页面)中的第几个记录存储了目标顶点值,即计算目标顶点值在该目标文件页面的目标位置,该目标位置实际就是指的在目标文件页面的第几个记录即目标记录,按照公式(4)来计算:
index_in_page=indexmodpage_rec_num……………………………….(4)
其中,公式(4)中的mod是取模运算。
最后,在计算得到要读取的目标顶点值在堆向量中的具体位置,包括目标文件页面和目标记录之后,就执行从该目标文件页面的目标位置(即目标记录)读取该目标顶点值的过程。读取的过程可能包括三种情况:
第一种情况是:缓存中存在与目标文件页面对应的第一缓存页面,比如假设得到的目标文件页面是w2,假设buffermanager的哈希表中存储有w2与h2之间的映射关系,据此得到缓存中存在与w2对应的h2,该h2可以称为第一缓存页面;之前已经计算出了目标顶点值在目标文件页面w2的目标位置,那么此时就从第一缓存页面h2中与所述目标位置对应的位置读取目标顶点值例如顶点A的值即可;由于h2基本就相当于w2的复制页面,所以顶点A在w2中的目标位置与在h2中的对应位置是相同的。这种情况下,具体可以是[intindex]算符成员函数调用buffermanager的pinPage函数读取,pinPage函数根据target_page由哈希表映射到h2,直接返回指针,将引用次数加1(表示正在使用)。在读取之后,本次读取任务已经完成,可以调用buffermanager的unpinPage函数,根据target_page由哈希表映射到h2,将引用次数减1(表示使用完成),相当于释放供后续使用。
第二种情况是:缓存中不存在与目标文件页面对应的缓存页面,参见图6,图6为本发明实施例提供的基于图计算的大数据处理方法另一实施例中的页面调度示意图一。比如假设得到的目标文件页面是w6,缓存中不存在与w6对应的缓存页面,并且缓存中包括空闲的缓存页面h6,可以将h6称为第二缓存页面,则可以将w6存储的顶点值读入h6(见虚线所示),并建立w6与h6之间的映射关系,这样后续再需要访问w6时,根据该映射关系就可以找到缓存中对应的h6,直接访问h6即可,减少对磁盘的访问量。本步骤就从h6中与目标位置对应的位置读取目标顶点值即可,即从h6的第index_in_page个记录得到顶点值。
第三种情况是:参见图7,图7为本发明实施例提供的基于图计算的大数据处理方法另一实施例中的页面调度示意图二。缓存中不存在与目标文件页面对应的缓存页面,并且缓存中也不存在空闲的缓存页面。比如假设得到的目标文件页面是w6,缓存中不存在与w6对应的缓存页面,并且缓存中的各缓存页面都已经占满,没有空闲的缓存页面。这时可以从缓存中选取第三缓存页面,将该第三缓存页面存储的顶点值删除,以为w6的移入换出空间,这个过程可以称作换出页,即将某个缓存页面换出缓存。具体可以通过clock算法(比如按照最少使用LRU或者其他算法)决定缓存不足时换出哪个页面。假设本实施例决定将h5换出(h5可以称为第三缓存页面),即将h5存储的顶点值删除,然后将w6存储的顶点值读入h5。并且,建立w6与h5之间的映射关系。具体实施中,可以是调用diskspacemanager从磁盘文件读入w6,之后就可以从该h5中与目标位置对应的位置获取目标顶点值。
在该第三种情况中,进一步的,在将h5存储的顶点值删除之前,如果h5具有已更改标识dirty,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将h5中存储的顶点值写入第二磁盘文件中对应的文件页面,这里写回的文件页面是原h5映射的文件页面w5。
504、运行数据处理算法对边和顶点值进行处理,得到更新的顶点值;
更具体的,一次迭代计算首先得到多个不同顶点v的邻接子图Gv,包括从第一磁盘文件读取不同v的边,以及从堆向量读取所有顶点值。然后以多个不同线程,每个线程处理一个邻接子图,去运行基于不同子图部分的分析计算,计算得到一系列更新的顶点值。
505、将所述更新的顶点值存储至所述堆向量中的对应顶点;
本步骤中,是将计算得到的更新顶点值写入目标文件页面,写入的过程与503中读取的过程类似,同样是需要首先计算确定目标顶点值所在的目标文件页面、以及目标顶点值在目标文件页面中的目标记录,这里的目标顶点值是更新的顶点值的对应顶点。例如,假设w1中存储了顶点A,所有该顶点A的顶点值(包括不断更新的顶点值)都要存储到该顶点A,那么顶点A相当于上面所述的目标顶点值,目标顶点值所在的目标文件页面是w1,目标顶点值在目标文件页面中的目标记录是J1,即在w1的J1的位置就是顶点A。
接着,同样也是要判断缓存中是否存在与w1对应的缓存页面,如果缓存中存在与w1对应的h1,则将更新的顶点A的顶点值存储至h1中的顶点A即可,h1相当于w1在缓存中的复印本。若缓存中不存在与w1对应的缓存页面,且缓存中包括空闲的缓存页面,则可以将w1换入,即将w1存储的顶点值读入所述空闲的缓存页面,并将将更新的顶点A的顶点值存储至该缓存页面。如果缓存中不存在与w1对应的缓存页面,且缓存中不包括空闲的缓存页面,也是要选取缓存页面换出。详细的过程可以参见503中所述的三种情况,不再赘述。
具体实施中,可以调用成员函数updateRecord[intindex,value_typev.value],进而调用buffermanager的pinPage函数读取目标文件页面target_page,然后从该页面更新目标记录index_in_page。pinPage函数的处理步骤同上,但函数返回调用buffermanager的unpinPage函数,在与目标文件页面target_page对应的缓存页面中写入更新的顶点值之后,将引用次数减1,并将该缓存页面标记为dirty,等待以后成换出页时写回磁盘。
506、判断得到的顶点值是否满足算法要求;
如果是,则本次数据处理停止,已经得到所有要计算的顶点值;否则,返回重新执行503,继续下一次的迭代处理。
本实施例的基于图计算的大数据处理方法,由于将顶点值和边分开存储,并且将顶点值存储在堆向量中,只需要更新堆向量中的顶点值即可,避免了现有方法中GraphChi按边存储时把顶点值复制多个副本所带来的突出的额外磁盘访问开销;而且通过一定的页面缓存的调度算法进一步减小了磁盘读取的I/O,提高了数据处理的速度。
进一步的,本实施例还可以在第二磁盘文件中的文件页面与缓存中的缓存页面之间进行顶点值的批量读取或者写入,即缓存I/O(bufferedI/O)批量式地读取磁盘,能够进一步提高基于图计算的大数据处理的速度。
此外,从上述的实施例可以看到,堆向量提供了一个类似于std::vector<value_type>调用接口的外存数据结构,并且堆向量的大小可以远大于可用主存的大小,能在O(1)时间内读写堆向量中任意元素,速度较快。并且,本实施例的堆向量提供了按数组的形式使用数组下标直接存取访问所存储的数据而不是传统的按记录存取,使得数据存取更加快速。
图8为本发明实施例提供的一种基于图计算的大数据处理装置的结构示意图,该装置可以执行本发明实施例的方法,该装置应用于大数据处理;该装置存储有基于大数据构造的图计算模型,所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;所述边存储在该装置的第一磁盘文件中,所述顶点对应的顶点值存储在该装置的堆向量中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中。本实施例对装置的结构做简单说明,其具体的工作原理可以结合参见方法实施例。如图8所示,该装置可以包括第一读取单元81、第二读取单元82和处理单元83;其中,
第一读取单元81,用于从所述第一磁盘文件获取所述图计算模型的边;
第二读取单元82,用于从所述堆向量中读取所述图计算模型的顶点值;
处理单元83,用于运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
进一步的,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;所述第二读取单元82,具体用于从所述堆向量的缓存中读取所述顶点值中的目标顶点值。处理单元83,具体用于采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
图9为本发明实施例提供的另一种基于图计算的大数据处理装置的结构示意图,在图8结构的基础上,该装置还可以包括:存储单元84,用于将所述顶点值存储至所述第二磁盘文件。
更进一步的,该存储单元84可以包括:顶点数目确定单元841、页面数目确定单元842、标识设置单元843和顶点值存储单元844;其中,
顶点数目确定单元841,用于根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;
页面数目确定单元842,根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;
标识设置单元843,用于根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;
顶点值存储单元844,用于将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
进一步的,第二读取单元82包括:位置确定单元821和获取单元822;
位置确定单元821,用于根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;
获取单元822,用于根据所述目标位置得到所述目标顶点值。
可选的,所述获取单元822,具体用于根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;
若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述获取单元822,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述获取单元822,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述处理单元83,还用于在所述第三缓存页面具有已更改标识时,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
图10为本发明实施例提供的基于图计算的大数据处理装置的实体结构示意图,用于实现如本发明实施例所述的方法,其工作原理可以参见前述方法实施例。如图10所示,该装置可以包括:存储器1001、处理器1002、总线1003和通信接口1004。处理器1002和存储器1001和通信接口1004之间通过总线1003连接并完成相互间的通信。
其中,所述通信接口1004用于与外部设备进行通信,从所述第一磁盘文件获取所述图计算模型的边,所述图计算模型包括:多个用于存储所述顶点值的顶点以及用于表示顶点之间关系的至少一个所述边;从所述堆向量读取所述图计算模型的顶点值。存储器1001可以用于临时存储数据处理过程中读取的边和顶点值。
处理器1002用于运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
进一步的,所述通信接口1004还用于与外部设备进行通信,从所述堆向量的缓存中读取所述顶点值中的待执行读或写操作的目标顶点值;处理器1002具体用于采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
所述处理器1002还可以将所述顶点值存储至所述第二磁盘文件。
所述处理器1002还用于根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
可选的,所述处理器1002还用于根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;根据所述目标位置得到所述目标顶点值。
可选的,所述处理器1002具体用于根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则指示通信接口1004从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述处理器1002还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;并指示通信接口1004从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述处理器1002还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;指示通信接口1004从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
可选的,所述处理器1002还用于在所述第三缓存页面具有已更改标识时,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (23)
1.一种基于图计算的大数据处理方法,其特征在于,所述方法应用于大数据处理系统,所述大数据处理系统包括有一个计算节点;所述计算节点存储有基于大数据构造的图计算模型,其中所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;
所述边存储在所述计算节点的第一磁盘文件中,所述顶点对应的顶点值存储在所述计算节点的堆向量中,其中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述方法包括:
所述计算节点从所述第一磁盘文件获取所述图计算模型的边;
所述计算节点从所述堆向量中读取所述图计算模型的顶点值;
所述计算节点运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
2.根据权利要求1所述的方法,其特征在于,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;
所述从堆向量中读取所述图计算模型的顶点值,包括:从所述堆向量的缓存中读取所述顶点值中的目标顶点值;
所述将所述更新的顶点值存储至所述堆向量,包括:采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
3.根据权利要求2所述的方法,其特征在于,在所述从堆向量中读取所述图计算模型的顶点值之前,还包括:将所述顶点值存储至所述第二磁盘文件。
4.根据权利要求3所述的方法,其特征在于,所述将所述顶点值存储至所述第二磁盘文件,包括:
根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;
根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;
根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;
将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
5.根据权利要求4所述的方法,其特征在于,所述从所述堆向量的缓存中读取所述顶点值中的目标顶点值,包括:
根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;
根据所述目标位置得到所述目标顶点值。
6.根据权利要求5所述的方法,其特征在于,
根据所述目标位置得到所述目标顶点值,包括:根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;
若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
7.根据权利要求6所述的方法,其特征在于,
还包括:若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;
从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
8.根据权利要求6或7所述的方法,其特征在于,
还包括:若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;
从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
9.根据权利要求8所述的方法,其特征在于,在将所述第三缓存页面存储的顶点值删除之前,还包括:
若所述第三缓存页面具有已更改标识,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
10.一种基于图计算的大数据处理装置,其特征在于,所述装置存储有基于大数据构造的图计算模型,所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;所述边存储在所述大数据处理装置的第一磁盘文件中,所述顶点对应的顶点值存储在所述大数据处理装置的堆向量中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述大数据处理装置包括:
第一读取单元,用于从所述第一磁盘文件获取所述图计算模型的边;
第二读取单元,用于从所述堆向量中读取所述图计算模型的顶点值;
处理单元,用于运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
11.根据权利要求10所述的装置,其特征在于,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;
所述第二读取单元,具体用于从所述堆向量的缓存中读取所述顶点值中的目标顶点值;
所述处理单元,具体用于采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
12.根据权利要求11所述的装置,其特征在于,还包括:
存储单元,用于将所述顶点值存储至所述第二磁盘文件。
13.根据权利要求12所述的装置,其特征在于,所述存储单元包括:
顶点数目确定单元,用于根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;
页面数目确定单元,根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;
标识设置单元,用于根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;
顶点值存储单元,用于将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
14.根据权利要求13所述的装置,其特征在于,
所述第二读取单元包括:
位置确定单元,用于根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;
获取单元,用于根据所述目标位置得到所述目标顶点值。
15.根据权利要求14所述的装置,其特征在于,
所述获取单元,具体用于根据所述堆向量的缓存中的缓存页面与所述第二磁盘文件中的文件页面之间的映射关系,确定所述缓存中是否存在与所述目标文件页面对应的缓存页面;若所述缓存中存在与所述目标文件页面对应的第一缓存页面,则从所述第一缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
16.根据权利要求15所述的装置,其特征在于,
所述获取单元,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中包括空闲的缓存页面,则建立所述第二磁盘文件中的所述目标文件页面与空闲的第二缓存页面之间的映射关系,并将所述目标文件页面中存储的顶点值读入所述第二缓存页面;从所述第二缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
17.根据权利要求15或16所述的装置,其特征在于,
所述获取单元,还用于若所述堆向量的所述缓存中不存在与所述目标文件页面对应的缓存页面,且所述缓存中不包括空闲的缓存页面,则从缓存中获取第三缓存页面,将所述第三缓存页面存储的顶点值删除;并建立所述第二磁盘文件中的所述目标文件页面与所述第三缓存页面之间的映射关系,将所述目标文件页面中存储的顶点值读入所述第三缓存页面;从所述第三缓存页面中与所述目标位置对应的位置,获取所述目标顶点值。
18.根据权利要求17所述的装置,其特征在于,
所述处理单元,还用于在所述第三缓存页面具有已更改标识时,所述已更改标识用于表示所述第三缓存页面中存储的顶点值已被更新,则将所述第三缓存页面中存储的所述顶点值写入所述第二磁盘文件中对应的文件页面。
19.一种基于图计算的大数据处理方法,其特征在于,所述方法应用于大数据处理系统,所述大数据处理系统包括多个计算节点及可供所述多个计算节点访问的存储节点;所述存储节点上存储有基于大数据构造的图计算模型,其中所述图计算模型包括:多个顶点以及用于表示顶点之间关系的至少一个边;
所述边存储在所述存储节点的第一磁盘文件中,所述顶点对应的顶点值存储在所述存储节点的堆向量中,其中,所述堆向量是具有向量数据结构的数据库堆文件,并且所述图计算模型的顶点值中待执行读或写操作的目标顶点值存储于所述堆向量的缓存中;所述方法包括:
所述多个计算节点中的第一节点从所述第一磁盘文件获取所述图计算模型的边;
所述第一节点从所述堆向量中读取所述图计算模型的顶点值;
所述第一节点运行数据处理算法对所述边和顶点值进行处理,以得到更新的顶点值,并将所述更新的顶点值存储至所述堆向量。
20.根据权利要求19所述的方法,其特征在于,所述堆向量包括所述缓存以及第二磁盘文件;所述图计算模型的顶点值具体存储于所述第二磁盘文件中;
所述从堆向量中读取所述图计算模型的顶点值,包括:从所述堆向量的缓存中读取所述顶点值中的目标顶点值;
所述将所述更新的顶点值存储至所述堆向量,包括:采用所述更新的顶点值替换所述缓存中的所述目标顶点值,以使得所述堆向量根据所述缓存中存储的所述更新的顶点值更新所述第二磁盘文件中对应的顶点值。
21.根据权利要求20所述的方法,其特征在于,在所述从堆向量中读取所述图计算模型的顶点值之前,还包括:将所述顶点值存储至所述第二磁盘文件。
22.根据权利要求21所述的方法,其特征在于,所述将所述顶点值存储至所述第二磁盘文件,包括:
根据顶点值的类型以及所述第二磁盘文件中单个页面的空间,确定单页面顶点值数目,所述单页面顶点值数目用于表示单个所述页面最多存储的顶点值数目;
根据待存储的所述顶点值的总数目以及所述单页面顶点值数目,得到存储所述顶点值所需的文件页面数;
根据所述文件页面数,分配用于存储所述顶点值的连续的所述文件页面,并将用于表示所述文件页面是否被分配的标识设置为已分配,所述标识位于所述第二磁盘文件中;
将所述顶点值存储至所述第二磁盘文件中的所述文件页面。
23.根据权利要求22所述的方法,其特征在于,所述从所述堆向量的缓存中读取所述顶点值中的目标顶点值,包括:
根据用于标识所述目标顶点值的顶点值索引、所述单页面顶点值数目以及分配的所述文件页面中的首页面,确定所述目标顶点值所在的目标文件页面、以及所述目标顶点值在所述目标文件页面中的目标位置;
根据所述目标位置得到所述目标顶点值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228184.7A CN105224528B (zh) | 2014-05-27 | 2014-05-27 | 基于图计算的大数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410228184.7A CN105224528B (zh) | 2014-05-27 | 2014-05-27 | 基于图计算的大数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224528A true CN105224528A (zh) | 2016-01-06 |
CN105224528B CN105224528B (zh) | 2019-12-17 |
Family
ID=54993506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410228184.7A Active CN105224528B (zh) | 2014-05-27 | 2014-05-27 | 基于图计算的大数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224528B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991195A (zh) * | 2017-04-28 | 2017-07-28 | 南京大学 | 一种分布式的子图枚举方法 |
WO2018006625A1 (zh) * | 2016-07-06 | 2018-01-11 | 华为技术有限公司 | 一种图数据计算的方法、主机以及图计算系统 |
CN107957977A (zh) * | 2017-12-15 | 2018-04-24 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN107992738A (zh) * | 2017-11-16 | 2018-05-04 | 北京奇艺世纪科技有限公司 | 一种账号登录异常检测方法、装置及电子设备 |
CN108132838A (zh) * | 2016-11-30 | 2018-06-08 | 华为技术有限公司 | 一种图数据处理的方法、装置及系统 |
CN109189994A (zh) * | 2018-06-27 | 2019-01-11 | 北京中科睿芯科技有限公司 | 一种面向图计算应用的cam结构存储系统 |
CN109213592A (zh) * | 2017-07-03 | 2019-01-15 | 北京大学 | 一种基于自动选择副本因子模型的图计算方法 |
CN109240600A (zh) * | 2018-07-24 | 2019-01-18 | 华中科技大学 | 一种基于混合更新策略的磁盘图处理方法 |
CN109254725A (zh) * | 2018-07-26 | 2019-01-22 | 华中科技大学 | 一种基于子图构建的磁盘图处理方法及系统 |
CN109344294A (zh) * | 2018-08-14 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 特征生成方法、装置、电子设备及计算机可读存储介质 |
CN111309976A (zh) * | 2020-02-24 | 2020-06-19 | 北京工业大学 | 一种面向收敛型图应用的GraphX数据缓存方法 |
WO2023066198A1 (zh) * | 2021-10-20 | 2023-04-27 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
-
2014
- 2014-05-27 CN CN201410228184.7A patent/CN105224528B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
Non-Patent Citations (3)
Title |
---|
Y.LOW等: ""GraphLab:A distributed framework for machine learning in the cloud"", 《ARXIV PREPRINT ARXIV》 * |
YAN J等: ""GRE:A Graph Runtime Engine for Large-Scale Distributed Graph-Parallel Applications"", 《ARXIV PREPRINT ARXIV》 * |
于戈等: ""云计算环境下的大规模图数据处理技术"", 《计算机学报》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018006625A1 (zh) * | 2016-07-06 | 2018-01-11 | 华为技术有限公司 | 一种图数据计算的方法、主机以及图计算系统 |
US11256749B2 (en) | 2016-11-30 | 2022-02-22 | Huawei Technologies Co., Ltd. | Graph data processing method and apparatus, and system |
CN108132838A (zh) * | 2016-11-30 | 2018-06-08 | 华为技术有限公司 | 一种图数据处理的方法、装置及系统 |
CN106991195A (zh) * | 2017-04-28 | 2017-07-28 | 南京大学 | 一种分布式的子图枚举方法 |
CN106991195B (zh) * | 2017-04-28 | 2020-08-11 | 南京大学 | 一种分布式的子图枚举方法 |
CN109213592B (zh) * | 2017-07-03 | 2023-07-18 | 北京大学 | 一种基于自动选择副本因子模型的图计算方法 |
CN109213592A (zh) * | 2017-07-03 | 2019-01-15 | 北京大学 | 一种基于自动选择副本因子模型的图计算方法 |
CN107992738B (zh) * | 2017-11-16 | 2020-11-27 | 北京奇艺世纪科技有限公司 | 一种账号登录异常检测方法、装置及电子设备 |
CN107992738A (zh) * | 2017-11-16 | 2018-05-04 | 北京奇艺世纪科技有限公司 | 一种账号登录异常检测方法、装置及电子设备 |
CN107957977A (zh) * | 2017-12-15 | 2018-04-24 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN109189994A (zh) * | 2018-06-27 | 2019-01-11 | 北京中科睿芯科技有限公司 | 一种面向图计算应用的cam结构存储系统 |
CN109189994B (zh) * | 2018-06-27 | 2021-11-09 | 北京中科睿芯科技集团有限公司 | 一种面向图计算应用的cam结构存储系统 |
CN109240600A (zh) * | 2018-07-24 | 2019-01-18 | 华中科技大学 | 一种基于混合更新策略的磁盘图处理方法 |
CN109240600B (zh) * | 2018-07-24 | 2020-05-19 | 华中科技大学 | 一种基于混合更新策略的磁盘图处理方法 |
CN109254725A (zh) * | 2018-07-26 | 2019-01-22 | 华中科技大学 | 一种基于子图构建的磁盘图处理方法及系统 |
CN109254725B (zh) * | 2018-07-26 | 2020-05-19 | 华中科技大学 | 一种基于子图构建的磁盘图处理方法及系统 |
CN109344294A (zh) * | 2018-08-14 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 特征生成方法、装置、电子设备及计算机可读存储介质 |
CN111309976A (zh) * | 2020-02-24 | 2020-06-19 | 北京工业大学 | 一种面向收敛型图应用的GraphX数据缓存方法 |
WO2023066198A1 (zh) * | 2021-10-20 | 2023-04-27 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理 |
Also Published As
Publication number | Publication date |
---|---|
CN105224528B (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224528A (zh) | 基于图计算的大数据处理方法和装置 | |
US10284623B2 (en) | Optimized browser rendering service | |
CN103164408B (zh) | 基于垂直搜索引擎的信息存储、查询方法及其装置 | |
CN102651008B (zh) | 在关系数据库中组织数据记录的方法和设备 | |
CN102339315B (zh) | 一种广告数据的索引更新方法和系统 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN103631937B (zh) | 构建列存储索引的方法、装置及系统 | |
CN103514199A (zh) | Poi数据处理方法及其装置、poi检索方法及其装置 | |
CN106716409A (zh) | 基于查询需求从行存储数据库自适应地构建和更新列存储数据库的方法和系统 | |
CN107077480A (zh) | 基于查询需求自适应地从当前时间的行存储数据库中构建列存储数据库的方法和系统 | |
CN109086133B (zh) | 在内存中维护数据的方法和系统 | |
US10409692B1 (en) | Garbage collection: timestamp entries and remove reference counts | |
US9336254B2 (en) | Database performance estimation device and database estimation method | |
CN107710201A (zh) | 存储数据和从位向量搜索索引取回数据 | |
CN110673789B (zh) | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN107851108A (zh) | 使用位向量搜索索引的匹配文档 | |
CN108475266A (zh) | 用来移除匹配文档的匹配修复 | |
CN104519103A (zh) | 网络数据的同步处理方法、服务器及相关系统 | |
CA3154763A1 (en) | Data operation method, device and system | |
Wang et al. | A distance matrix based algorithm for solving the traveling salesman problem | |
CN106970937B (zh) | 一种基于本地缓存快速建立索引的方法及系统 | |
CN102024051B (zh) | 分布式内存数据库数据更新方法 | |
CN104765782A (zh) | 一种索引排序更新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |