一种基于MapReduce的大规模图数据关键词搜索算法

文档序号:6637460阅读:180来源:国知局
一种基于MapReduce的大规模图数据关键词搜索算法
【专利摘要】本发明公开一种基于MapReduce的大规模图数据关键词搜索算法,基于分布式编程框架MapReduce来处理大规模图数据的关键词搜索,在大规模图数据关键词搜索问题中具有良好的适用性,从根本上解决了基于内存的贯序算法的局限性,在社交网络分析、图数据管理、和图数据挖掘等相关【技术领域】具有广泛的应用前景。
【专利说明】一种基于MapReduce的大规模图数据关键词搜索算法

【技术领域】
[0001]本发明涉及一种基于MapReduce的大规模图数据关键词搜索算法。

【背景技术】
[0002]近年来,大规模图数据的关键词搜索问题已经在学术界和工业界都引起了广泛的关注。目前,该问题被已经被认为是图数据库领域最基本的问题之一,并且学术界对这一问题的研宄取得了很好的进展。
[0003]在学术界,被广泛使用的关键词搜索语义主要有三种:连通树语义(connectedtree semantics [2]、不同根语义(distinct root semantics) [3],以及不同核语义(distinct core semantics) [4]。在上述三种语义中,连通树语义(the connected treesemantics)会产生大量的子图;不同根语义(the distinct root semantics)会产生一个包含查询关键词集的极大子图;不同核语义(the distinct core semantics)是前面两者的折中,其产生的结果子图大小适中,更能反映用户对图数据关键词检索的需求,这一语义也是目前公认较好的关键词搜索语义。
[0004]所述的不同核语义能够很好地解决图数据中的关键词搜索问题。然而,基于这一语义,现有的关键词搜索算法主要都是基于内存的序贯算法,显然不适用于处理大规模图数据。也即,现有的算法必须要求整个图数据存储在内存中,而且现有的算法都不能较好地并行处理图数据的关键词搜索问题,因而不适用于处理大规模图数据的关键词搜索。然而,在很多实际应用中,图数据的规模日趋庞大。例如:在Facebook的社交图谱数据中,如果用节点代表每个用户,边代表用户间的朋友关系。那么,在这个图数据中将有超过8亿个节点和超过520亿条边。对于基于内存的序贯算法来说,这将是一个灾难。


【发明内容】

[0005]本发明提供一种基于MapReduce的大规模图数据关键词搜索算法,该算法首次提出了基于分布式编程框架MapReduce来处理大规模图数据的关键词搜索,解决了所述的【背景技术】无法适用大规模图数据的问题。
[0006]本发明通过以下技术手段实现:
[0007]一种基于MapReduce的大规模图数据关键词搜索算法,包含以下步骤:
[0008]S1、关键词节点扩展:使用两个MapReduce任务迭代进行关键词扩展;所述MapReduce I合并文件dfile和文件sfile中的数据;所述的MapReduce 2对MapReducel产生的节点所有可能的扩展方式,保留其中路径距离小于Rmax并且路径最短的点对;
[0009]S2、中心节点扩展:使用I个MapReduce任务产生包含所有关键词的星型集合stars ;
[0010]S3、社区生成阶段:使用I个MapReduce任务生成包含所有查询关键词的社区。
[0011]其中,所述的文件kfile存储每个节点所包含的关键词,每个节点V e V(G)都以
V— key (V)的形式存储在键值对中。
[0012]其中,所述的文件sfile存储图的结构,其中,每条边(U,V) e E(G)都以u — (V, we (U,V))的形式存储在键值对中,表示从节点u到节点V有一条权值为we (u, v)的边。
[0013]其中,还包含临时文件dfile来存储所有关键词/中心节点对的最短路径,存储形式为u — (V, ki; dist (u, V))键值对,表示节点u可以在经过dist(u, v)的距离到达包含关键词h的节点V。
[0014]其中,MapReduce I在关键词节点扩展的Map阶段,为dfiIe中所有的点对u— (V, k” dist (U,V))创建键值对并标记为关键词对(keyword-pair);为sfile中所有的边u — (V, we (U,V))统一创建u — (V, Φ,we (v, u))格式的键值对并标记为结构点对
[0015](structure-pair) ;MapReduce I在关键词节点扩展的Reduce阶段,具有相同key的关键词对和结构点对被分配到同一分组;对每一关键词对u — (V, ki; dist (u, V))和每一结构点对 u — (V, Φ, we (V, U)),产生一个 V' — (v, ki; we (vr,u)+dist (u, v))键值对并输出到临时文件temp中。
[0016]其中,MapReduce 2在关键词节点扩展的Map阶段,为文件dfiIe中的点对u — (V, k” dist (U,V))创建格式为(U,V, kj) — dist (u, v)的键值对;扫描 MapReduceI产生的临时文件temp,为temp中的点对u — (v, ki; dist(u, v))创建格式为(u, v, kj) — dist (u, V)的键值对;MapReduce 2在关键词节点扩展的Reduce阶段,创建一个空的dfile2文件,对于有相同key (u, v, kj的键值对,保留其中路径dist (U,V)最短的,然后,仓Il建格式为u — (v, ki; dist(u, v))的键值对并输入到文件dfile2中;idfile2和文件dfile相同的时候,迭代停止。
[0017]其中,所述中心节点扩展的Map阶段,为dfile文件中的每个点对
V— (u, k” dist (V, U))创建一个格式相同的键值对;所述中心节点扩展的Reduce阶段,通过grouping函数把具有相同中心节点v且距离在Rmax内的关键词节点分配到同一组,并输出到cfile文件。
[0018]最后,社区生成阶段的Map阶段,把中心节点阶段输出cfile作为Mapper函数输入并创建(UdU2,...,U1) — V键值对;在社区生成阶段的Reduce阶段,使用grouping函数把具有相同核...,U1)的星型结构集分配到同一组,并对所有的中心节点集(V1, V2,...)求笛卡尔积来产生所有可能社区,所述的(UpU2,..* , U1)表示社区的核,(V1, V2,...)表示社区的中心节点。
[0019]以上基于分布式编程框架MapReduce来处理大规模图数据的关键词搜索,在大规模图数据关键词搜索问题中具有良好的适用性,从根本上解决了基于内存的贯序算法的局限性,在社交网络分析、图数据管理、和图数据挖掘等相关【技术领域】具有广泛的应用前景。

【专利附图】

【附图说明】
[0020]图1为问题定义示意图;
[0021]图2为Mapreduce第一阶段示意图;
[0022]图3为Mapreduce第二阶段示意图;
[0023]图4为Mapreduce第三阶段示意图;
[0024]图5为本发明算法流程不意图;
[0025]图6为关键词扩展示例;
[0026]图7为中心节点扩展示例;
[0027]图8为社区生成示例。

【具体实施方式】
[0028]以下将结合附图对本发明的具体实现过程进行详细说明。
[0029]为了更好的说明本发明,先对【背景技术】提到的问题进行定义如下:
[0030]给定一个如图1所示的图G和一个关键词集合q= Ik^k2, - ,kj,找出图G中包含所有关键词的连通子图,即找出包含关键词集q = { “Jim”,” Thomas”}的连通子图:
[0031]以下说明书中,图G= (V,E)表示带权值的有向图,其中,V表示G中的节点集,E表示G中节点间的边集。
[0032]key (V)表示节点V包含的关键词集。
[0033]we (v, u)表示边(U,v) e E 的权值。
[0034]dist (U,V)表示在图G中从节点u到节点V最短路径的总距离;
[0035]V(G),E(G)分别表示给定图G中的节点集和边集。
[0036]Rmax表示社区中关键词节点和中心节点之间的最大距离。
[0037]社区Ci (V,E)是图G的一个多中心诱导子图,其中V表示3个节点子集的集合,V=VcU VkU Vp? Vk表示关键词节点集,其中每一关键词节点V ke Vk至少包含一个关键词并且查询条件中的一个关键词必须在Vk中至少出现一次;V。表示中心节点集,其中对于任一 ? V。,至少存在一条路径从V。到vk,vke Vk且dist(v。,vk)〈Rmax ;Vp表示从中心节点Vce V。到关键词节点V ke V k的距离dist (V。,vk)小于Rmax的最短路径上的节点。因此,图中的一个节点可能在社区中充当上述三类节点中的一种或多种角色。E表示连接V中节点对的最短路径的边集。社区Ci由关键词节点集V k唯一确定,关键词集V k称作为社区的核,用core (Ci)表示。
[0038]为了更好理解本发明,先对该算法的一个简易并行算法版本进行介绍。所述的简易并行算法版本包括以下三个阶段:
[0039]1、关键词节点扩展阶段:如图2所示,针对每一个包含查询关键词的节点,使用并行的最短路径计算算法反向扩展所有的距离该关键词节点为Rmax的所有邻接节点,得到一系列关键词节点-中心节点对;
[0040]2、中心节点扩展阶段:如图3所示,针对阶段I产生的关键词节点/邻接节点对,使用并行的集合交集算法求出中心节点;并按中心节点对关键词-中心节点对进行分组;产生包含所有查询关键词节点的星型结构节点集Star ;
[0041]3、社区生成阶段:如图4所示,产生包含所有查询关键字的社区。
[0042]本发明在上述并行关键词搜索算法基础上,应用分布式编程框架MapReduce,使算法适用于大规模图数据的关键词检索,实现过程如图5所示,包含三个阶段,分别是关键词扩展阶段、中心节点扩展阶段和社区生成阶段,以下分别详细介绍这三个阶段。
[0043]首先,关键词扩展阶段:使用两个MapReduce任务迭代进行关键词扩展。
[0044]假设如图1所示的图G存储在分布式分布式文件系统中的两个文件kfile和sfile上。其中,kfile存储每个节点所包含的关键字,每个节点V e V(G)都以v —key (V)的形式存储在key/value键值对中,这里的key (V)表示节点V包含的关键词集合。sfile存储图的结构,其中,每条边(U,V) e E(G)都以u — (V, we (U,V))的形式存储在key/value键值对中,表示从节点u到节点V有一条权值为we (U,V)的边。
[0045]使用一个临时的dfile来存储所有keyword-node/center-node (关键词/中心节点)对的最短路径,存储形式为u — (V, ki, dist (u, v))键值对,表示节点u可以在经过dist (U,V)的距离到达包含关键词Ki的节点V。对于每个节点V和所有的节点u e V(G),迭代地更新它们之间的最短路径dist (U,V)直至收敛。对于所有节点关键词节点V,dist (v, v) = O,因此,首先通过添加所有的key/value键值对V — (v, ki; O)来初始化dfile,这里,V表示关键词节点,V包含关键词h,q ;其次,通过迭代来进一步横向扩展dfile中的节点。实现这些,需要使用2个MapReduce任务。
[0046]MapReduce 1.合并dfile和sfile中的数据。在Map阶段,为dfile中所有的点对u— (V, Iii, dist (U,V))创建key/value键值对并标记为关键词对(keyword-pair);为sfile 中所有的边u — (V, we (U,V))统一创建u— (ν, Φ,we (v, u))格式的 key/value键值对并标记为结构点对。在Reduce阶段,具有相同key的关键词对和结构点对会被分配到同一分组。对每一关键词点对u — (V, ki; dist (U,V))和每一结构点对u — (ν, Φ,we (v, u)),产生一个V' (v, ki; we (y',u)+dist (u, ν))键值对并输出到临时文件temp中。由于节点u和包含关键词Ici的节点u距离为dist (U,ν),并且节点V'到节点u之间有一条权值为we(v',u)的边,因此可以得出V'到ν的距离为we(v',u)+dist (u, ν)。
[0047]MapReduce 2.第一个MapReduce产生了节点所有可能的扩展方式,这意味着同一关键词节点由于入度大于I可能会被扩展多次。在第二个MapReduce阶段,对于在MapReduce I产生的临时文件temp和初始dfile文件中的每一关键词/中心点对(keyword-node/center-node),如果它被扩展多次,只保留其中路径距离小于Rmax并且路径最短的的点对。在Map阶段,首先为dfile中的点对u — (v, ki; dist(u, ν))创建格式为(u, v, kj) — dist (u, ν)的键值对(key/value)。其次,扫描MapReduce I产生的临时文件temp,为 temp 中的点对 u — (v, ki; dist(u, ν))创建格式为(u, v, — dist(u, v)的键值对(key/value)。在Reduce阶段,首先创建一个空的dfile2文件。对于有相同key (u, v,的键值对,保留其中路径dist (u, ν)最短的,然后,仓Il建格式为u — (v, ki; dist(u, ν))的键值对并输入到新的dfile2中。当新的dfile2和初始dfile相同的时候,迭代停止,dfile中即为所需的路径距离小于Rmax的关键词/中心点对(keyword-node/center-node)。
[0048]引理:关键词扩展阶段最多需max {hop (v, u) | v e V (G),u是关键词节点,dist (ν, u) ( Rmax}次迭代。这里hop (v, u)表示从节点ν到节点u的最短路径上的边的数目。
[0049]证明:为了证明上述引理,只需证明:对于任意中心节点/关键词节点对(V, U),dist (v, u) <Rmax,在经过最多hop (v, u)次迭代后,关键词扩展能够产生节点对ν — (u, ki; dist (ν, u)),ki表示节点u中包含的关键词。使用数学归纳法来证明。首先,对于hop (v, u) = 0,引理成立。因为对于所有关键词节点ν都有ν — (V, ki; 0)。假设hop (v, u)彡i时,引理成立。对于hop(V,u) = i+1,从ν到u有一条有i+1条边的最短路径。假设第一条边是(V,V ),因为最短路径的任意子段也是最短路径,因此从V到u必须要有一条边数为hop (ν, u) = i的最短路径。从假设可知,得到点对V' — (u, ki, dist(v' u)),需要i次迭代,在第i+1次迭代中,合并sfi Ie中的点对ν— (V ,we (v, vr ))可以得到点对ν (u, ki; we (v, vr ) +dist (vr u)),即 ν — (u, Iii, dist (ν, u)。因此,引理成立。
[0050]接着,中心节点扩展阶段:使用I个MapReduce任务产生包含所有关键词的星型集合 stars ο
[0051]在关键字节点扩展阶段得到了所有的点对ν — (u,ki; dist (v, u)),这里u包含关键词kp IiiG q并且dist (ν, u)〈Rmax。在中心节点扩展阶段,需要求得包含所有关键词并且具有相同中心点c的星型结构集合Star(c)。使用一个单独的MapReduce来实现该阶段。在Map阶段,为dfile文件中的每个点对ν — (u, k” dist (v, u))创建一个格式相同的键值对。在Reduce阶段,通过grouping函数把具有相同中心节点ν且距离在Rmax内的关键词节点分配到同一组。SPi(V)表示与中心节点ν距离在Rmax内包含关键词匕的关键词节点集,对每个(U1, U2,...,U1) GP1(V)XP2(V)...XP1 (V),通过 reduce 函数创建一个(+,U2,..., U1) — ν键值对并输出到cfile。这里(UpU2,...,U1)是包含关键词G^k2,..., kx)的关键词节点集合,ν表示能够在路径距离Rmax内达到所有U1, U2,...,%节点的中心节点。由此得到了多个包含社区核的星型结构体集合Star。
[0052]最后,社区生成阶段:使用I个MapReduce任务生成包含所有查询关键词的社区。
[0053]在中心节点扩展阶段已经产生了包含社区的核的节点集Star,社区生成阶段只需对具有相同核的星型结构集Star求笛卡尔积来产生所有可能社区。需要I个MapReduce来完成该阶段工作。在Map阶段,把中心节点阶段输出cfile作为Mapper函数输入并创建(U1, U2,...,U1) — ν键值对。在Reduce阶段,使用grouping函数把具有相同核(u1; U2,..., U1)的星型结构集分配到同一组,并对所有的中心节点集(V^v2,...)求笛卡尔积来产生所有可能社区,这里,(UpU2,...,U1)表示社区的核,(VpV2,...)表示社区的中心节点。在关键词节点扩展生成dfile阶段,path-nodes包含在中心节点/关键词节点对所对应的最短路径中。因此path-nodes也包含在中心节点扩展阶段的每个Star中和最后社区生成阶段的每个社区中。
[0054]以下进一步举例说明本算法的应用过程。
[0055]1、关键词扩展阶段
[0056]在这个阶段,对于每个关键词节点u和节点ν e V(G),需要计算他们之间的距离,并且使dist (ν, u) <Rmaxο对于基于内存的顺序算法来说,最有效的方法就是Dijkstra算法。在Dijkstra算法中,节点分为三类在每次迭代中,即最短路径已经计算过的标记节点,最短路径部分计算过的准备节点和最短路径尚未计算的未标记节点。在Dijkstra算法中,每次迭代只有最短路径的节点会被更新标记,因此在MapReduce框架中使用Dijkstra算法来计算节点间的距离效率非常低下,最坏情况下需要IV(G) I次迭代。该方法在大规模图数据的背景下显然不具有适用性。本发明算法思想如下:
[0057]给定图G,图1问题定义举例,查询关键词q = { “Jim”, ”Thomas,,}和Rmax = 5,图6给出了 2个MapReduce在第二次迭代中的情况。
[0058]其中匕和1^2表示查询关键词“Jim”和“Thomas”。在第一次迭代中,dfile保存关键词到中心节点距离为5并且两者之间只有一条边的关键词/中心点对。图6(a)所示为第一个MapReduce任务,在Map阶段,合并dfile中的所有点对和sfile中的所有反向点对,为了多次扩展dfile中的所有点对,将sfile中的点对反向。在Reduce阶段,有相同key p2的键值对被分配到同一组,P2— (P1, Φ , 4)来自 sfile, p2— (a 1; k1; I)和 p2— (a 2,k” 2)来自dfile,这表示ajP a 2都可以通过p 2节点和边(PpP2)扩展到P1节点。图6b所示为第二个MapReduce任务。在Map阶段,使用初始df i Ie和MapReduce I产生的临时文件temp作为Mapper函数的输入。在Reduce阶段,对于中心点/关键词点对(PpaLUpjlJ%有两条路径,路径长度分别为3和5。选择最短路径3并在新的dfile文件中创建一个P1^ (a 1; k” 3)键值对 ο
[0059]2、中心节点扩展阶段
[0060]图7所示为中心节点扩展阶段的处理过程。在Map阶段,使用关键词扩展阶段的输出dfile作为Map函数输入,并为所有中心节点/关键词节点创建相同格式的键值对。在Reduce阶段,中心节点P2可以到达包含关键词k丨的关键词节点a ^ a2和包含关键词k 2的关键词节点a3。由于{a” a2} X {a3} = {(a1; a3), (a2, a3) },因此,在Reducer函数中创建两个键值对,(a1; a3) — P2和(a2,a3) — p2,并把他们输入到cfile中供后续阶段使用。
[0061]3、社区生成阶段
[0062]图8所示为社区生成阶段的处理过程。在Map阶段,为中心节点扩展阶段输出创建4个Star键值对。在Reduce阶段,4个Star有2个核,(&1,a3)和(a2,a3)。因此,可以得到2个社区,拥有核(apaj、中心节点集(P^P2)的社区和拥有核(a2,a3)、中心节点(p2,P3)的社区。
[0063]对本发明进行简单变化所得的方案也在本发明的保护范围之内。
【权利要求】
1.一种基于MapReduce的大规模图数据关键词搜索算法,包含以下步骤: 51、关键词节点扩展:使用两MapReduce任务迭代进行关键词扩展;所述的MapReduceI合并文件dfile和文件sfile中的数据;所述的MapReduce 2对MapReducel产生的节点所有可能的扩展方式,保留其中最短路径距离小于Rmax的点对; 52、中心节点扩展:使用I个MapReduce任务产生包含所有关键词的星型集合stars; 53、社区生成阶段:使用I个MapReduce任务生成包含所有查询关键词的社区。
2.根据权利要求1所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:所述的文件kfile存储每个节点所包含的关键词,每个节点V e V(G)都以V — key (v)的形式存储在键值对中。
3.根据权利要求1所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:所述的文件sfile存储图的结构,其中,每条边(U,V) e E(G)都以u— (v, we (u, v))的形式存储在键值对中,表示从节点u到节点V有一条权值为we (U,V)的边。
4.根据权利要求1所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:还包含临时文件dfile来存储所有关键词/中心节点对的最短路径,存储形式为U- (V,I^dist (U,V))键值对,表示节点u可以在经过dist (U,V)的距离到达包含关键词h的节点V。
5.根据权利要求4所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:MapReduce I在关键词节点扩展的Map阶段,为dfile中所有的点对u — (V, ki; dist (u, V))创建键值对并标记为关键词对;为sf ile中所有的边u — (V, we (U,V))统一创建u — (V, Φ,we (V, u))格式的键值对并标记为结构点对;MapReduce I在关键词节点扩展的Reduce阶段,具有相同key的关键词对和结构点对被分配到同一分组;对每一关键词节点对u — (V, ki; dist (U,V))和每一结构点对u— (V, Φ,we (V, U)),产生一个 V' — (v, ki; we (vr,u)+dist (u, v))键值对对并输出到临时文件temp中。
6.根据权利要求4所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:MapReduce 2在关键词节点扩展的Map阶段,为文件dfiIe中的点对u — (V, k” dist (U,V))创建格式为(U,V, kj) — dist (u, v)的键值对;扫描 MapReduceI产生的临时文件temp,为temp中的点对u — (v, ki; dist(u, v))创建格式为(u, v, kj) — dist (u, V)的键值对;MapReduce 2在关键词节点扩展的Reduce阶段,创建一个空的dfile2文件,对于有相同key (u, v, kj的键值对,保留其中路径dist (U,V)最短的,然后,仓Il建格式为u — (v, ki; dist(u, v))的键值对并输入到文件dfile2中;idfile2和文件dfile相同的时候,迭代停止。
7.根据权利要求4所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:所述中心节点扩展的Map阶段,为dfile文件中的每个点对V — (u, ki; dist (v, u))创建一个格式相同的键值对;所述中心节点扩展的Reduce阶段,通过grouping函数把具有相同中心节点V且距离在Rmax内的关键词节点分配到同一组,并输出到cfile文件中。
8.根据权利要求4所述的基于MapReduce的大规模图数据关键词搜索算法,其特征在于:社区生成阶段的Map阶段,把中心节点阶段输出cfile作为Mapper函数输入并创建(U1, U2,...,%) — V键值对;在社区生成阶段的Reduce阶段,使用grouping函数把具有相同核(U^U2,...,U1)的星型结构集分配到同一组,并对所有的中心节点集(V^v2,...)求笛卡尔积来产生所有可能社区,所述的(UpU2,..* , U1)表示社区的核,(V1, V2,...)表示社区的中心节点。
【文档编号】G06F17/30GK104484368SQ201410736421
【公开日】2015年4月1日 申请日期:2014年12月5日 优先权日:2014年12月5日
【发明者】李荣华, 廖凯华, 毛睿, 秦璐, 蔡涛涛, 邱宇轩 申请人:深圳大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1