国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      處理圖數(shù)據(jù)的方法和裝置與流程

      文檔序號(hào):11155139閱讀:503來源:國知局
      處理圖數(shù)據(jù)的方法和裝置與制造工藝

      本發(fā)明實(shí)施例涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種處理圖數(shù)據(jù)的方法和裝置。



      背景技術(shù):

      圖是一種抽象的數(shù)據(jù)結(jié)構(gòu),能夠描述豐富的信息以及信息之間的依賴關(guān)系。現(xiàn)有技術(shù)中存在很多基于圖數(shù)據(jù)的算法,如最短路徑算法、圖模擬算法、網(wǎng)頁排名算法以及廣度優(yōu)先搜索等算法。圖數(shù)據(jù)及其相關(guān)算法的應(yīng)用無處不在,如社交網(wǎng)絡(luò)分析、語義Web分析、生物信息科學(xué)和交通導(dǎo)航等。

      隨著這些應(yīng)用的迅速發(fā)展,它們涉及的圖數(shù)據(jù)的規(guī)模也變得越來越大,動(dòng)輒有上億的頂點(diǎn)和數(shù)十億條邊。如何高效地存儲(chǔ)和處理大規(guī)模圖數(shù)據(jù)也越來越受到學(xué)術(shù)界和工業(yè)界的關(guān)注。

      現(xiàn)有技術(shù)主要采用映射化簡(jiǎn)(MapReduce)系統(tǒng)存儲(chǔ)和處理圖數(shù)據(jù)。具體地,MapReduce系統(tǒng)一般使用分布式文件系統(tǒng)(Distributed File System,DFS)存儲(chǔ)圖數(shù)據(jù),當(dāng)需要處理該圖數(shù)據(jù)時(shí),一般由MapReduce系統(tǒng)的主控節(jié)點(diǎn)調(diào)度整個(gè)系統(tǒng)的計(jì)算節(jié)點(diǎn)(Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn))對(duì)圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè)(MapReduce job),得到圖數(shù)據(jù)的處理結(jié)果。

      現(xiàn)有技術(shù)中,MapReduce系統(tǒng)對(duì)圖數(shù)據(jù)進(jìn)行處理時(shí),在Map階段只是針對(duì)輸入文件進(jìn)行逐條數(shù)據(jù)的計(jì)算,在處理圖數(shù)據(jù)的過程中表現(xiàn)為以單個(gè)頂點(diǎn)為計(jì)算對(duì)象,其中每個(gè)頂點(diǎn)包含自身和出邊的信息,每輪MapReduce作業(yè)過程中,消息被限制為只能沿出邊進(jìn)行單步傳遞,以進(jìn)行下一輪MapReduce作業(yè),當(dāng)圖數(shù)據(jù)的規(guī)模很大時(shí),需要進(jìn)行多輪MapReduce作業(yè),導(dǎo)致圖數(shù)據(jù)的處理效率低下。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明實(shí)施例提供了一種處理圖數(shù)據(jù)的方法和裝置,以提高圖數(shù)據(jù)的處理效率。

      第一方面,本發(fā)明實(shí)施例提供了一種處理圖數(shù)據(jù)的方法,該方法包括:確定待處理的圖數(shù)據(jù),該圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖;調(diào)度映射化簡(jiǎn)MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果,其中,該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)用于處理該多個(gè)子圖中的一個(gè)子圖內(nèi)的具有相互連接關(guān)系的頂點(diǎn)。

      結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,該方法還包括:該多個(gè)子圖包括m個(gè)子圖,該圖數(shù)據(jù)存儲(chǔ)在分布式文件系統(tǒng)DFS中,該DFS包括與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第一文件,以及與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第二文件,其中,該m個(gè)第一文件分別用于存儲(chǔ)該m個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該m個(gè)第二文件分別用于存儲(chǔ)該m個(gè)子圖中的被處理過的頂點(diǎn)對(duì)應(yīng)的消息數(shù)據(jù),該調(diào)度MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),包括:為該多輪MapReduce作業(yè)中的每輪MapReduce作業(yè)分配待處理的子圖;根據(jù)該待處理的子圖,從該m個(gè)第一文件和該m個(gè)第二文件中選取該每輪MapReduce作業(yè)的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括該待處理的子圖對(duì)應(yīng)的子圖數(shù)據(jù),以及該每輪MapReduce作業(yè)的上一輪MapReduce作業(yè)處理得到的消息數(shù)據(jù);根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè)。

      結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,該方法還包括:該根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè),包括:根據(jù)該輸入數(shù)據(jù),為該每輪MapReduce作業(yè)的Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)分配計(jì)算任務(wù);控制該每輪MapReduce作業(yè)中的Reduce計(jì)算節(jié)點(diǎn)將處理得到的消息數(shù)據(jù)存入該m個(gè)第二文件中。

      結(jié)合第一方面、第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種實(shí)現(xiàn)方式中,該方法還包括:根據(jù)公式gr=(nid*m)/N,將該圖劃分成該多個(gè)子圖,其中,gr取值相同的頂點(diǎn)被劃分到同一子圖,nid為該圖中的頂點(diǎn)的編號(hào),m為該子圖的個(gè)數(shù),N為該圖中的頂點(diǎn)的個(gè)數(shù)。

      結(jié)合第一方面、第一方面的第一種至第三種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第一方面的第四種實(shí)現(xiàn)方式中,該方法還包括:該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)按照廣度優(yōu)先搜索BFS算法處理該具有相互連接關(guān)系的頂點(diǎn)。

      第二方面,本發(fā)明實(shí)施例提供了一種處理圖數(shù)據(jù)的裝置,該裝置包括: 確定模塊,用于確定待處理的圖數(shù)據(jù),該圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖;調(diào)度模塊,用于調(diào)度映射化簡(jiǎn)MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果,其中,該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)用于處理該多個(gè)子圖中的一個(gè)子圖內(nèi)的具有相互連接關(guān)系的頂點(diǎn)。

      結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,該多個(gè)子圖包括m個(gè)子圖,該圖數(shù)據(jù)存儲(chǔ)在分布式文件系統(tǒng)DFS中,該DFS包括與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第一文件,以及與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第二文件,其中,該m個(gè)第一文件分別用于存儲(chǔ)該m個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該m個(gè)第二文件分別用于存儲(chǔ)該m個(gè)子圖中的被處理過的頂點(diǎn)對(duì)應(yīng)的消息數(shù)據(jù),該調(diào)度模塊具體用于:為該多輪MapReduce作業(yè)中的每輪MapReduce作業(yè)分配待處理的子圖;根據(jù)該待處理的子圖,從該m個(gè)第一文件中和該m個(gè)第二文件中選取該每輪MapReduce作業(yè)的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括該待處理的子圖對(duì)應(yīng)的子圖數(shù)據(jù),以及該每輪MapReduce作業(yè)的上一輪MapReduce作業(yè)處理得到的消息數(shù)據(jù);根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè)。

      結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,該調(diào)度模塊具體用于:根據(jù)該輸入數(shù)據(jù),為該每輪MapReduce作業(yè)的Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)分配計(jì)算任務(wù);根據(jù)控制該每輪MapReduce作業(yè)中的Reduce計(jì)算節(jié)點(diǎn)將處理得到的消息數(shù)據(jù)存入該m第二個(gè)文件中。

      結(jié)合第二方面、第二方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,該裝置還包括:劃分模塊,用于根據(jù)公式gr=(nid*m)/N,將該圖劃分成該多個(gè)子圖,其中,gr取值相同的頂點(diǎn)被劃分到同一子圖,nid為該圖中的頂點(diǎn)的編號(hào),m為該子圖的個(gè)數(shù),N為該圖中的頂點(diǎn)的個(gè)數(shù)。

      結(jié)合第二方面、第二方面的第一種至第三種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第二方面的第四種實(shí)現(xiàn)方式中,該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)按照廣度優(yōu)先搜索BFS算法處理該具有相互連接關(guān)系的頂點(diǎn)。

      本發(fā)明實(shí)施例中,首先將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,然 后每輪MapReduce作業(yè)中,每個(gè)Map計(jì)算節(jié)點(diǎn)每次處理多個(gè)子圖中的一個(gè)子圖內(nèi)部的具有連接關(guān)系的頂點(diǎn),使得每輪MapReduce作業(yè)盡可能處理更多的頂點(diǎn),從而能夠減少了MapReduce作業(yè)的輪數(shù),提高圖數(shù)據(jù)的處理效率。

      附圖說明

      為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1是根據(jù)本發(fā)明實(shí)施例的一種處理圖數(shù)據(jù)的方法的映射化簡(jiǎn)系統(tǒng)的示意性框圖。

      圖2是根據(jù)本發(fā)明實(shí)施例的一種處理圖數(shù)據(jù)的方法的示意性流程圖。

      圖3是根據(jù)本發(fā)明另一實(shí)施例的映射化簡(jiǎn)作業(yè)流程圖。

      圖4是根據(jù)本發(fā)明另一實(shí)施例的圖劃分的示意圖。

      圖5是根據(jù)本發(fā)明另一實(shí)施例的處理圖數(shù)據(jù)的方法的示意性流程圖。

      圖6是根據(jù)本發(fā)明另一實(shí)施例的處理圖數(shù)據(jù)的方法的示意性流程圖。

      圖7是根據(jù)本發(fā)明又一實(shí)施例的處理圖數(shù)據(jù)的裝置的示意性框圖。

      圖8是根據(jù)本發(fā)明又一實(shí)施例的處理圖數(shù)據(jù)的裝置的示意性框圖。

      具體實(shí)施方式

      下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。

      圖1示出了可以應(yīng)用本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法的一種MapReduce系統(tǒng)的示意性框圖。如圖1所示,該系統(tǒng)可以包括DFS,Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)。處理圖數(shù)據(jù)的實(shí)現(xiàn)過程一般需要采用某種遍歷方式遍歷圖數(shù)據(jù),因此處理一個(gè)完整的圖數(shù)據(jù)通常需要多輪MapReduce作業(yè)(job)。其中,Map計(jì)算節(jié)點(diǎn)包括至少一個(gè)Map計(jì)算節(jié)點(diǎn),對(duì)應(yīng)Map階段;Reduce計(jì)算節(jié)點(diǎn)包括至少一個(gè)Reduce計(jì)算節(jié)點(diǎn),對(duì)應(yīng)Reduce階段。 在Map階段,Map計(jì)算節(jié)點(diǎn)對(duì)輸入的數(shù)據(jù)進(jìn)行處理,獲得中間計(jì)算結(jié)果或消息數(shù)據(jù)。在Reduce階段,Reduce計(jì)算節(jié)點(diǎn)對(duì)輸入的數(shù)據(jù)進(jìn)行化簡(jiǎn)操作,得到化簡(jiǎn)后的消息數(shù)據(jù),并保存在DFS中。其中,Map階段到Reduce階段之間可以經(jīng)過一個(gè)混洗(Shuffle)階段,在Shuffle過程中將中間計(jì)算結(jié)果從磁盤中取出,在進(jìn)行合并以及排序操作后,傳輸給Reduce計(jì)算節(jié)點(diǎn)作為Reduce階段的輸入數(shù)據(jù)。

      應(yīng)理解,如圖1所示,本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法可以由主控設(shè)備執(zhí)行。主控設(shè)備負(fù)責(zé)圖數(shù)據(jù)處理過程中所有的工作設(shè)備的調(diào)度和計(jì)算任務(wù)的分配,例如,主控設(shè)備可以調(diào)度Map計(jì)算節(jié)點(diǎn)、Reduce計(jì)算節(jié)點(diǎn),并控制Map計(jì)算節(jié)點(diǎn)、Reduce計(jì)算節(jié)點(diǎn)的任務(wù)分配,或者控制Map計(jì)算節(jié)點(diǎn)從DFS中讀取需要的數(shù)據(jù),或者控制Reduce計(jì)算節(jié)點(diǎn)把處理過的消息數(shù)據(jù)存入DFS之中。

      應(yīng)理解,本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法和裝置可以應(yīng)用于最短路徑算法、圖模擬算法、強(qiáng)模擬算法、網(wǎng)頁排名算法或廣度優(yōu)先搜索算法(Breadth First Search,簡(jiǎn)稱為“BFS”)等圖算法中,且并不限于此,還可以應(yīng)用于其它圖算法。

      應(yīng)理解,本發(fā)明實(shí)施例中的分布式文件系統(tǒng)DFS,可以是Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,簡(jiǎn)稱為“HDFS”),可以是網(wǎng)絡(luò)文件系統(tǒng)(Network File System,簡(jiǎn)稱為“NFS”),可以是谷歌文件系統(tǒng)(Google File System,簡(jiǎn)稱為“GFS”),也可以是其它任何分布式文件系統(tǒng),本發(fā)明并不限于此。

      圖2根據(jù)示出了本發(fā)明實(shí)施例的一種處理圖數(shù)據(jù)的方法200的示意性流程圖。如圖2所示,該方法200包括:

      S210,確定待處理的圖數(shù)據(jù),該圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖;

      S220,調(diào)度映射化簡(jiǎn)MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果,其中,該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)用于處理該多個(gè)子圖中的一個(gè)子圖內(nèi)的具有相互連接關(guān)系的頂點(diǎn)。

      可選地,該待處理的圖數(shù)據(jù)可以位于DFS中,上述確定待處理的圖數(shù)據(jù)可以包括確定待處理的圖數(shù)據(jù)在DFS系統(tǒng)中的存儲(chǔ)位置,以便于控制MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn)從該存儲(chǔ)位置獲取MapReduce作業(yè)需要 的數(shù)據(jù)。

      應(yīng)理解,圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分為多個(gè)子圖,每個(gè)子圖可以對(duì)應(yīng)一個(gè)子圖數(shù)據(jù),圖數(shù)據(jù)可以包括該多個(gè)子圖中每個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù)。其中,每個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù)中可以包含子圖內(nèi)的頂點(diǎn)的信息以及子圖內(nèi)的頂點(diǎn)的連接關(guān)系的信息,其中,該子圖內(nèi)的頂點(diǎn)的連接關(guān)系的信息可以包括該子圖內(nèi)的頂點(diǎn)之間的連接關(guān)系的信息,也可以包括該子圖內(nèi)的頂點(diǎn)到其它子圖內(nèi)的頂點(diǎn)的連接關(guān)系的信息。

      應(yīng)理解,在確定待處理的圖數(shù)據(jù)之后,可以調(diào)度MapReduce中的計(jì)算節(jié)點(diǎn),對(duì)待處理的圖數(shù)據(jù)進(jìn)行MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果。對(duì)該圖數(shù)據(jù)的MapReduce作業(yè)可以包括多輪MapReduce作業(yè)。其中,每輪MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)處理一個(gè)子圖內(nèi)的具有相互連接關(guān)系的頂點(diǎn),或者,每個(gè)Map計(jì)算節(jié)點(diǎn)處理一個(gè)子圖內(nèi)的具有相互連接關(guān)系的一組頂點(diǎn)或多組頂點(diǎn)。換句話說,每個(gè)Map計(jì)算節(jié)點(diǎn)的輸入數(shù)據(jù)可以包括一個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該每個(gè)Map計(jì)算節(jié)點(diǎn)可用于處理一個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù)。可以這樣理解,在每輪MapReduce作業(yè)過程中,可以利用每個(gè)子圖內(nèi)部頂點(diǎn)之間的連接關(guān)系,把存在連接關(guān)系的頂點(diǎn)放在同一個(gè)Map計(jì)算節(jié)點(diǎn)中進(jìn)行處理,現(xiàn)有技術(shù)中,每輪MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)處理是孤立的頂點(diǎn),在處理頂點(diǎn)時(shí)并沒有考慮或利用頂點(diǎn)之間的連接關(guān)系,是一種以頂點(diǎn)為中心的處理方式,而本發(fā)明實(shí)施例中,每輪MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)利用了一個(gè)子圖內(nèi)部頂點(diǎn)之間的連接關(guān)系,把子圖數(shù)據(jù)中有連接關(guān)系的頂點(diǎn)當(dāng)作一個(gè)計(jì)算對(duì)象進(jìn)行處理,是一種以子圖為中心的處理方式。

      例如,當(dāng)其中一個(gè)Map計(jì)算節(jié)點(diǎn)在處理子圖內(nèi)的頂點(diǎn)時(shí),如果與該處理的頂點(diǎn)存在連接關(guān)系的頂點(diǎn)也屬于該子圖時(shí),則可以在同一輪MapReduce作業(yè)中處理與該頂點(diǎn)存在連接關(guān)系的頂點(diǎn)。從而可以在一輪MapReduce作業(yè)過程中處理更多的頂點(diǎn),進(jìn)而減少圖數(shù)據(jù),尤其是大規(guī)模圖數(shù)據(jù)處理過程中的MapReduce作業(yè)的輪數(shù)。在現(xiàn)有技術(shù)中,由于采取了以頂點(diǎn)為計(jì)算對(duì)象的MapReduce作業(yè)方式,處理頂點(diǎn)產(chǎn)生的消息只能沿出邊進(jìn)行單邊傳遞,而本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法中,采取了以子圖為計(jì)算對(duì)象的方法,消息數(shù)據(jù)在同一子圖內(nèi)部的頂點(diǎn)之間可以進(jìn)行多步傳遞,所以在一輪MapReduce作業(yè)過程中,可以同時(shí)處理同一 子圖內(nèi)部存在連接關(guān)系的頂點(diǎn),從而減少處理圖數(shù)據(jù)所需的處理的MapReduce作業(yè)輪數(shù)。由于采取了以子圖為中心的計(jì)算模型,在圖數(shù)據(jù)處理過程中利用子圖數(shù)據(jù)內(nèi)頂點(diǎn)之間的連接關(guān)系,將計(jì)算粒度擴(kuò)展為整個(gè)子圖,減少了MapReduce作業(yè)的輪數(shù),從而提高圖數(shù)據(jù)處理的計(jì)算速度和計(jì)算效率,減少資源和時(shí)間的開銷。

      可選地,作為一個(gè)實(shí)施例,可以將子圖的頂點(diǎn)分為內(nèi)部頂點(diǎn)和邊界頂點(diǎn)兩類。其中,內(nèi)部頂點(diǎn)表示與該內(nèi)部頂點(diǎn)相連的所有頂點(diǎn)都屬于同一子圖。邊界頂點(diǎn)表示與該邊界頂點(diǎn)相連的至少一個(gè)頂點(diǎn)不屬于該邊界頂點(diǎn)所在的子圖??蛇x地,可以定義圖數(shù)據(jù)為圖G=(V,E),其中,V和E分別表示頂點(diǎn)集合和邊集合,邊集合中的邊用于表示頂點(diǎn)之間的連接關(guān)系??梢远x子圖數(shù)據(jù)為(G1[V1],...Gk[Vk]),表示圖數(shù)據(jù)G按頂點(diǎn)劃分得到的k個(gè)子圖,其中V1∪V2∪...∪Vk=V,且

      另外,可以定義在子圖Gi[Vi](i∈[1,k])中,若ν∈Vi滿足條件{μ|(ν,μ)∈E∧μ∈Vi},則ν為內(nèi)部頂點(diǎn),若ν不滿足上述條件,則ν為邊界頂點(diǎn)。子圖之間通過邊界頂點(diǎn)進(jìn)行通信,在每輪MapReduce作業(yè)過程中產(chǎn)生的中間結(jié)果以及消息數(shù)據(jù)在內(nèi)部頂點(diǎn)之間完成多步傳遞以實(shí)現(xiàn)多步計(jì)算,然后沿邊界頂點(diǎn)傳輸給其它相關(guān)聯(lián)的子圖,以便于進(jìn)行下一輪MapReduce作業(yè)的計(jì)算。

      在本發(fā)明實(shí)施例中,通過將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,在MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)以子圖為計(jì)算對(duì)象,每次處理一個(gè)子圖內(nèi)的具有連接關(guān)系的頂點(diǎn),充分利用了子圖內(nèi)頂點(diǎn)的連接關(guān)系,使得每輪MapReduce作業(yè)盡可能處理更多的頂點(diǎn),從而減少了處理圖數(shù)據(jù)所需的MapReduce作業(yè)的輪數(shù),提高了圖數(shù)據(jù)的處理效率。

      如圖1所示,Map階段到Reduce階段之間可以經(jīng)過一個(gè)混洗(Shuffle)階段,在Shuffle過程中將中間計(jì)算結(jié)果從磁盤中取出,在進(jìn)行合并以及排序操作后,傳輸給Reduce計(jì)算節(jié)點(diǎn)作為Reduce階段的輸入數(shù)據(jù)。圖數(shù)據(jù)在圖算法實(shí)現(xiàn)過程中屬于不變的數(shù)據(jù),也即圖數(shù)據(jù)在每輪MapReduce作業(yè)過程中都保持不變,通常情況下圖數(shù)據(jù)的數(shù)據(jù)量相對(duì)較大,并且在每輪MapReduce作業(yè)過程中都會(huì)使用到。而消息數(shù)據(jù)屬于變化的數(shù)據(jù),通常情況下消息數(shù)據(jù)的數(shù)據(jù)量都比較小。但是現(xiàn)有技術(shù)中在進(jìn)行MapReduce作業(yè)時(shí)并沒有區(qū)分圖數(shù)據(jù)和消息數(shù)據(jù),所以圖數(shù)據(jù)需要在每輪MapReduce作業(yè)的 過程中進(jìn)行重復(fù)的處理并進(jìn)行Shuffle。這種對(duì)于圖數(shù)據(jù)的重復(fù)讀寫以及網(wǎng)絡(luò)傳輸,造成了很大的開銷,極大地影響了圖數(shù)據(jù)的處理效率。

      可選地,作為一個(gè)實(shí)施例,該多個(gè)子圖可以包括m個(gè)子圖,該圖數(shù)據(jù)存儲(chǔ)在分布式文件系統(tǒng)DFS中,該DFS包括與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第一文件,以及與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第二文件,其中,該m個(gè)第一文件分別用于存儲(chǔ)該m個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該m個(gè)第二文件分別用于存儲(chǔ)該m個(gè)子圖中的被處理過的頂點(diǎn)對(duì)應(yīng)的消息數(shù)據(jù)。

      可選地,在S220中,調(diào)度MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),包括:為該多輪MapReduce作業(yè)中的每輪MapReduce作業(yè)分配待處理的子圖;根據(jù)該待處理的子圖,從該m個(gè)第一文件和該m個(gè)第二文件中選取該每輪MapReduce作業(yè)的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括該待處理的子圖對(duì)應(yīng)的子圖數(shù)據(jù),以及該每輪MapReduce作業(yè)的上一輪MapReduce作業(yè)處理得到的消息數(shù)據(jù);根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè)。

      在本發(fā)明實(shí)施例中,因?yàn)椴扇×藢?duì)圖數(shù)據(jù)和消息數(shù)據(jù)分開處理的方式,把在整個(gè)MapReduce作業(yè)過程中始終保持不變的圖數(shù)據(jù)抽離出來,單獨(dú)保存在DFS中,并且每輪MapReduce作業(yè)產(chǎn)生的消息數(shù)據(jù)也被保存在DFS中與圖數(shù)據(jù)對(duì)應(yīng)的位置。在每輪MapReduce作業(yè)的開始,從DFS中讀取需要的圖數(shù)據(jù)和消息數(shù)據(jù)作為本輪MapReduce的輸入數(shù)據(jù)。在每輪MapReduce作業(yè)過程中,Map計(jì)算節(jié)點(diǎn)在處理完子圖數(shù)據(jù)后,無需向其它計(jì)算節(jié)點(diǎn)傳輸圖數(shù)據(jù),所以在Shuffle過程中也不需要傳輸圖數(shù)據(jù),從而能夠減少圖數(shù)據(jù)在計(jì)算過程中帶來的I/O開銷以及在Shuffle過程中的通信開銷,進(jìn)而加快了圖數(shù)據(jù)的處理速度。

      例如,圖3示出了本發(fā)明另一實(shí)施例的映射化簡(jiǎn)作業(yè)流程圖,如圖3所示,可選地,圖數(shù)據(jù)被劃分成指定數(shù)量的子圖數(shù)據(jù)之后被保存在DFS中。而消息數(shù)據(jù)可以是每輪MapReduce作業(yè)的結(jié)果,消息數(shù)據(jù)和子圖數(shù)據(jù)一一對(duì)應(yīng)。消息數(shù)據(jù)在經(jīng)過Reduce計(jì)算節(jié)點(diǎn)處理之后也可以被保存在DFS之中。在每輪MapReduce作業(yè)開始時(shí),Map節(jié)點(diǎn)從DFS中讀取需要的消息數(shù)據(jù)和圖數(shù)據(jù),并將消息數(shù)據(jù)和圖數(shù)據(jù)進(jìn)行合并,作為本輪MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)的輸入數(shù)據(jù)。

      具體地,消息數(shù)據(jù)又稱為消息,可以是每輪MapReduce作業(yè)處理的結(jié) 果。子圖和消息數(shù)據(jù)具有一一對(duì)應(yīng)的關(guān)系。消息數(shù)據(jù)可以和子圖數(shù)據(jù)合并在一起,作為每輪MapReduce作業(yè)的輸入數(shù)據(jù)。例如,在DFS中,可以將放置m個(gè)子圖數(shù)據(jù)的文件命名為Gi(i∈[1,m]),將放置與m個(gè)子圖對(duì)應(yīng)的消息數(shù)據(jù)的文件命名為Mi(i∈[1,m]),該Gi個(gè)文件與該Mi個(gè)文件一一對(duì)應(yīng)??梢园凑誅FS的文件命名規(guī)則,把對(duì)應(yīng)的Gi和Mi命名為相同的文件名。當(dāng)MapReduce作業(yè)中的計(jì)算節(jié)點(diǎn)需要讀取輸入數(shù)據(jù)時(shí),可以重載MapReduce的CombineFileInputFormat類,邏輯上將相同文件名的Gi和Mi合并成一個(gè)文件,作為Map計(jì)算節(jié)點(diǎn)的輸入。

      可選地,根據(jù)該輸入數(shù)據(jù),進(jìn)行每輪MapReduce作業(yè),包括:根據(jù)該輸入數(shù)據(jù),為每輪MapReduce作業(yè)的Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)分配計(jì)算任務(wù);控制該每輪MapReduce作業(yè)中的Reduce計(jì)算節(jié)點(diǎn)將處理得到的消息數(shù)據(jù)存入該m個(gè)第二文件中。

      可選地,在每輪MapReduce作業(yè)中,當(dāng)Reduce計(jì)算節(jié)點(diǎn)獲取本輪MapReduce的消息數(shù)據(jù)后,主控設(shè)備控制Reduce計(jì)算節(jié)點(diǎn)把消息數(shù)據(jù)存儲(chǔ)在與m個(gè)子圖一一對(duì)應(yīng)的相應(yīng)的m個(gè)第二文件中,以便于下輪MapReduce作業(yè)開始時(shí),從該m個(gè)第二文件中讀取需要的輸入數(shù)據(jù)。從而使圖數(shù)據(jù)和消息數(shù)據(jù)能夠分開進(jìn)行處理,減少了圖數(shù)據(jù)在計(jì)算過程中帶來的I/O開銷以及在Shuffle過程中的通信開銷,從而加快了圖數(shù)據(jù)的處理速度。

      上文結(jié)合圖1至圖3描述了處理圖數(shù)據(jù)的方法的具體實(shí)施方式。下文將結(jié)合圖4至圖5,以BFS為例,說明本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法的其中一種具體實(shí)現(xiàn)方案。

      如圖4所示,首先待處理的圖G被劃分成三個(gè)子圖G1、G2、G3。其中V1=[1,2],V2=[3,4],V3=[5,6],其中,每個(gè)子圖中虛線標(biāo)識(shí)的頂點(diǎn)用于表示不屬于該子圖但與該子圖有邊相連的頂點(diǎn)。其中,以頂點(diǎn)3為源點(diǎn),計(jì)算的中間結(jié)果以消息的形式沿邊傳遞給相鄰頂點(diǎn),直到遍歷到所有的可達(dá)頂點(diǎn)結(jié)束計(jì)算。由圖4可知,在圖G中,頂點(diǎn)3為源點(diǎn),即起始的頂點(diǎn),頂點(diǎn)3的出邊消息對(duì)應(yīng)頂點(diǎn)1和頂點(diǎn)4,頂點(diǎn)1的出邊消息對(duì)應(yīng)頂點(diǎn)2和頂點(diǎn)5,頂點(diǎn)4的出邊消息對(duì)應(yīng)頂點(diǎn)1和頂點(diǎn)5,頂點(diǎn)2的出邊消息對(duì)應(yīng)頂點(diǎn)6,頂點(diǎn)5的出邊消息對(duì)應(yīng)頂點(diǎn)2和頂點(diǎn)6。具體地,圖5示出了本發(fā)明實(shí)施例處理圖G的MapReduce作業(yè)過程,其中虛線標(biāo)識(shí)的頂點(diǎn)代表下輪MapReduce作業(yè)的起始的頂點(diǎn),灰色標(biāo)識(shí)的頂點(diǎn)代表已 經(jīng)處理完的頂點(diǎn)。如圖5所示,在第一輪MapReduce作業(yè)過程中,Map計(jì)算節(jié)點(diǎn)以子圖G2為計(jì)算對(duì)象,由于頂點(diǎn)3和頂點(diǎn)4有連接關(guān)系,且頂點(diǎn)4與頂點(diǎn)3處于同一子圖,所以處理完頂點(diǎn)3產(chǎn)生的數(shù)據(jù)會(huì)傳遞給頂點(diǎn)4,可以在同一輪MapReduce作業(yè)過程中處理G2中的頂點(diǎn)3和頂點(diǎn)4,以獲得第一輪MapReduce作業(yè)的消息數(shù)據(jù)。同時(shí),因?yàn)轫旤c(diǎn)4和子圖G1中的頂點(diǎn)1以及子圖G3中頂點(diǎn)5都有連接關(guān)系,所以將在本輪MapReduce作業(yè)得到的頂點(diǎn)4的消息數(shù)據(jù)傳給頂點(diǎn)1和頂點(diǎn)5,以便于進(jìn)行下一輪MapReduce作業(yè)。在第二輪MapReduce作業(yè)過程中,因?yàn)樽訄DG1中的頂點(diǎn)2和頂點(diǎn)1有連接關(guān)系,子圖G3中的頂點(diǎn)5跟頂點(diǎn)6有連接關(guān)系,所以Map計(jì)算節(jié)點(diǎn)分別以子圖G1和子圖G3為計(jì)算對(duì)象,處理子圖G1中的頂點(diǎn)1和頂點(diǎn)2以及子圖G3中的頂點(diǎn)5和頂點(diǎn)6,以獲得第二輪MapReduce作業(yè)的消息數(shù)據(jù)。經(jīng)過兩輪MapReduce作業(yè)可以處理完圖G中的所有頂點(diǎn)。

      在現(xiàn)有技術(shù)中并沒有劃分子圖,而是采取以頂點(diǎn)為計(jì)算對(duì)象的圖數(shù)據(jù)處理方式。圖6示出了現(xiàn)有技術(shù)中處理圖G的MapReduce作業(yè)過程,其中虛線標(biāo)識(shí)的頂點(diǎn)代表下輪MapReduce作業(yè)的起始的頂點(diǎn),灰色標(biāo)識(shí)的頂點(diǎn)代表已經(jīng)處理完的頂點(diǎn)。如圖6所示,當(dāng)以頂點(diǎn)為計(jì)算對(duì)象時(shí),對(duì)于圖G,在第一輪MapReduce作業(yè)中,首先處理頂點(diǎn)3,獲得頂點(diǎn)3的消息數(shù)據(jù)后,將頂點(diǎn)3的消息數(shù)據(jù)傳給頂點(diǎn)1和頂點(diǎn)4;在第二輪MapReduce作業(yè)中,處理頂點(diǎn)1和頂點(diǎn)4,并將頂點(diǎn)1的消息數(shù)據(jù)傳遞給頂點(diǎn)2和頂點(diǎn)5,將頂點(diǎn)4的消息數(shù)據(jù)傳給頂點(diǎn)1和頂點(diǎn)5;在第三輪MapReduce作業(yè)中,處理頂點(diǎn)2和頂點(diǎn)5,并將頂點(diǎn)2的消息數(shù)據(jù)傳遞給頂點(diǎn)6,將頂點(diǎn)5的消息數(shù)據(jù)傳送給頂點(diǎn)2和頂點(diǎn)6;在第四輪MapReduce作業(yè)中,處理頂點(diǎn)6,以獲得本輪MapReduce作業(yè)的消息數(shù)據(jù)。經(jīng)過四輪MapReduce作業(yè)處理完圖G中所有的頂點(diǎn)。

      由此具體實(shí)施例可見,本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法與現(xiàn)有技術(shù)相比較,MapReduce作業(yè)輪數(shù)明顯減少,從而提高了圖數(shù)據(jù)的處理效率。

      可選地,在MapReduce編程框架下,為了實(shí)現(xiàn)以子圖為計(jì)算對(duì)象的計(jì)算模型,可以在Map階段重寫Mapper類的的setup()、Map()、clean()三個(gè)函數(shù)。setup()函數(shù)的作用是Map開始之前做一些相關(guān)工作的初始化,而clean()函數(shù)則是在Map計(jì)算完成之后進(jìn)行收尾工作,并且setup()和 clean()函數(shù)在Map階段可以只執(zhí)行一次。因此,首先,使用setup()函數(shù)初始化一個(gè)HashMap結(jié)構(gòu)用于保存整個(gè)子圖;之后,Map()函數(shù)逐條讀取頂點(diǎn)數(shù)據(jù)并映射到HashMap結(jié)構(gòu)中;最后,在clean()函數(shù)中可以按需要對(duì)已保存在HashMap中的整個(gè)子圖進(jìn)行自定義計(jì)算。以BFS為例,Map階段實(shí)現(xiàn)本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法的關(guān)鍵偽代碼可以如下所示。

      應(yīng)理解,本發(fā)明實(shí)施例提供的處理圖數(shù)據(jù)的方法,圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分為多個(gè)子圖時(shí),在MapReduce作業(yè)實(shí)現(xiàn)過程中可以采用hash的方法劃分子圖。但是MapReduce分布式計(jì)算框架在設(shè)計(jì)過程中并沒有考慮圖數(shù)據(jù)內(nèi)部的關(guān)聯(lián)關(guān)系,所以采用hash的方法劃分子圖時(shí)并沒有考慮子圖內(nèi)部的頂點(diǎn)的連接關(guān)系。如果在保證負(fù)載均衡的前提下,將有邊相連的頂點(diǎn)盡可能的分到同一子圖,同時(shí)盡量減少跨子圖的邊的數(shù)量,則在一輪MapReduce作業(yè)過程中可以同時(shí)處理同一子圖內(nèi)更多的頂點(diǎn),從而可以減少處理圖數(shù)據(jù)所需的MapReduce作業(yè)的輪數(shù),提高圖數(shù)據(jù)的處理效率。換句話說,在劃分子圖時(shí)可以充分考慮到圖數(shù)據(jù)的局部性特征,根據(jù)圖數(shù)據(jù)在實(shí)際應(yīng)用中的自身特點(diǎn),來劃分子圖。例如,交通網(wǎng)絡(luò)對(duì)應(yīng)的圖中,相鄰頂點(diǎn)的編號(hào)相差很小。因此,可以按照頂點(diǎn)的編號(hào)順序劃分子圖,如1~1000,1001~2000…并分別保存在同一子圖對(duì)應(yīng)的子圖數(shù)據(jù)中。

      可選地,可以根據(jù)公式gr=(nid*m)/N,將圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,其中,gr取值相同的頂點(diǎn)被劃分到同一子圖中,nid為圖中的頂點(diǎn)的編號(hào),m為子圖的個(gè)數(shù),N為圖中的頂點(diǎn)的個(gè)數(shù)。

      例如,若需要將包含N個(gè)頂點(diǎn)的圖劃分成m個(gè)子圖,可以按照公式gr=(nid*m)/N來劃分,其在MapReduce系統(tǒng)中實(shí)現(xiàn)的關(guān)鍵偽代碼可以如 下所示。

      例如,對(duì)于交通網(wǎng)絡(luò)圖,還可以根據(jù)GIS位置信息進(jìn)行劃分,如按照實(shí)際需要將一個(gè)市或者省的交通網(wǎng)絡(luò)作為一個(gè)子圖。實(shí)現(xiàn)時(shí)Map函數(shù)中g(shù)r值的計(jì)算需要解析GIS數(shù)據(jù),提取位置信息。其在MapReduce系統(tǒng)中實(shí)現(xiàn)的關(guān)鍵偽代碼可以如下所示。

      此外,對(duì)于社交網(wǎng)絡(luò)也可以使用相應(yīng)的劃分子圖的方法。用戶在注冊(cè)社交網(wǎng)站提供的公開信息,如所在城市、工作單位或?qū)W校等都可以作為劃分子圖的依據(jù)。在通過MapReduce系統(tǒng)架構(gòu)實(shí)現(xiàn)時(shí)將Map函數(shù)中的gr按需賦值即可。

      在本發(fā)明實(shí)施例中,通過分析實(shí)際應(yīng)用中涉及的圖數(shù)據(jù)的特點(diǎn),在考慮到負(fù)載均衡的前提下,將有邊相連的頂點(diǎn)盡可能劃分到同一子圖內(nèi),同時(shí)削弱子圖之間的耦合性,可以進(jìn)一步地減少處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高圖數(shù)據(jù)的處理速度和計(jì)算效率。

      在本發(fā)明實(shí)施例中,一方面,通過將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,在MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)以子圖為計(jì)算對(duì)象,每次處理一個(gè)子圖內(nèi)的具有連接關(guān)系的頂點(diǎn),充分利用了子圖內(nèi)頂點(diǎn)的連接關(guān)系,使得每輪MapReduce作業(yè)盡可能處理更多的頂點(diǎn),從而減少了處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高了圖數(shù)據(jù)的處理效率。另一方面,因?yàn)椴扇×藢?duì)圖數(shù)據(jù)和消息數(shù)據(jù)分開處理的方式,把在整個(gè)MapReduce作業(yè)過程中始終保持不變的圖數(shù)據(jù)抽離出來,單獨(dú)保存在DFS中,并且每輪MapReduce作業(yè)產(chǎn)生的消息數(shù)據(jù)也被保存在DFS中與圖數(shù)據(jù)對(duì)應(yīng)的位置。在每輪MapReduce作業(yè)的開始,從DFS中讀取需要的圖數(shù)據(jù)和消息數(shù)據(jù)作為本輪MapReduce的輸入數(shù)據(jù)。在每輪MapReduce作業(yè)過程中,Map計(jì)算節(jié)點(diǎn)在處理完子圖數(shù)據(jù)后,無需向其它計(jì)算節(jié)點(diǎn)傳輸圖數(shù)據(jù),所以在Shuffle過程中也不需要傳輸圖數(shù)據(jù),從而能夠減少圖數(shù)據(jù)在計(jì)算過程中帶來的I/O開銷以及在Shuffle過程中的通信開銷,進(jìn)而加快了圖數(shù)據(jù)的處理速度。又一方面,本發(fā)明實(shí)施例采取的劃分子圖的方法,通過分析實(shí)際應(yīng)用中涉及的圖數(shù)據(jù)的特點(diǎn),在考慮到負(fù)載均衡的前提下,將有邊相連的頂點(diǎn)盡可能劃分到同一子圖內(nèi),同時(shí)削弱子圖之間的耦合性,可以進(jìn)一步地減少處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高圖數(shù)據(jù)的處理速度和計(jì)算效率。

      上文結(jié)合圖1至圖6詳細(xì)闡述了本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的方法的具體實(shí)施例,下文將結(jié)合圖7和圖8,詳細(xì)描述本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的裝置。

      圖7示出了本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的裝置700的示意圖,應(yīng)理解,根據(jù)本發(fā)明實(shí)施例的的裝置700可對(duì)應(yīng)于本發(fā)明方法實(shí)施例中的主控設(shè)備,并且裝置700中的各個(gè)模塊的下述和其它操作和/或功能分別為了實(shí)現(xiàn)圖2至圖6中的各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。該裝置700包括:

      確定模塊710,用于確定待處理的圖數(shù)據(jù),該圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成 多個(gè)子圖;

      調(diào)度模塊720,用于調(diào)度映射化簡(jiǎn)MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果,其中,該MapReduce作業(yè)中的每個(gè)Map計(jì)算節(jié)點(diǎn)用于處理該多個(gè)子圖中的一個(gè)子圖內(nèi)的具有相互連接關(guān)系的頂點(diǎn)。

      在本發(fā)明實(shí)施例中,通過將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,在MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)以子圖為計(jì)算對(duì)象,每次處理一個(gè)子圖內(nèi)的具有連接關(guān)系的頂點(diǎn),充分利用了子圖內(nèi)頂點(diǎn)的連接關(guān)系,使得每輪MapReduce作業(yè)過程盡可能處理更多的頂點(diǎn),從而減少了處理圖數(shù)據(jù)所需的MapReduce作業(yè)的輪數(shù),提高了圖數(shù)據(jù)的處理效率。

      在本發(fā)明實(shí)施例中,裝置700的確定模塊710確定的待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖,可選地,在本發(fā)明實(shí)施例中,該多個(gè)子圖包括m個(gè)子圖,該圖數(shù)據(jù)存儲(chǔ)在分布式文件系統(tǒng)DFS中,該DFS包括與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第一文件,以及與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第二文件,其中,該m個(gè)第一文件分別用于存儲(chǔ)該m個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該m個(gè)第二文件分別用于存儲(chǔ)該m個(gè)子圖中的被處理過的頂點(diǎn)對(duì)應(yīng)的消息數(shù)據(jù)。

      可選地,本發(fā)明實(shí)施例的裝置700的調(diào)度模塊720具體用于:為該多輪MapReduce作業(yè)中的每輪MapReduce作業(yè)分配待處理的子圖;根據(jù)該待處理的子圖,從該m個(gè)第一文件中和該m個(gè)第二文件中選取該每輪MapReduce作業(yè)的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括該待處理的子圖對(duì)應(yīng)的子圖數(shù)據(jù),以及該每輪MapReduce作業(yè)的上一輪MapReduce作業(yè)處理得到的消息數(shù)據(jù);根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè)。

      在本發(fā)明實(shí)施例中,因?yàn)椴扇×藢?duì)圖數(shù)據(jù)和消息數(shù)據(jù)分開處理的方式,把在整個(gè)MapReduce作業(yè)過程中始終保持不變的圖數(shù)據(jù)抽離出來,單獨(dú)保存在DFS中,并且每輪MapReduce作業(yè)產(chǎn)生的消息數(shù)據(jù)也被保存在DFS中與圖數(shù)據(jù)對(duì)應(yīng)的位置。在每輪MapReduce作業(yè)的開始,從DFS中讀取需要的圖數(shù)據(jù)和消息數(shù)據(jù)作為本輪MapReduce的輸入數(shù)據(jù)。在每輪MapReduce作業(yè)過程中,Map計(jì)算節(jié)點(diǎn)在處理完子圖數(shù)據(jù)后,無需向其它計(jì)算節(jié)點(diǎn)傳輸圖數(shù)據(jù),所以在Shuffle過程中也不需要傳輸圖數(shù)據(jù),從而能夠減少圖數(shù)據(jù)在計(jì)算過程中帶來的I/O開銷以及在Shuffle過程中的通信開銷,進(jìn)而加快了圖數(shù)據(jù)的處理速度。

      可選地,該調(diào)度模塊720具體用于:根據(jù)該輸入數(shù)據(jù),為該每輪MapReduce作業(yè)的Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)分配計(jì)算任務(wù);控制該每輪MapReduce作業(yè)中的Reduce計(jì)算節(jié)點(diǎn)將處理得到的消息數(shù)據(jù)存入該m第二個(gè)文件中。

      可選地,本發(fā)明實(shí)施例的裝置700還包括:劃分模塊730,用于根據(jù)公式gr=(nid*m)/N,將該圖劃分成該多個(gè)子圖,其中,gr取值相同的頂點(diǎn)被劃分到同一子圖,nid為該圖中的頂點(diǎn)的編號(hào),m為該子圖的個(gè)數(shù),N為該圖中的頂點(diǎn)的個(gè)數(shù)。

      在本發(fā)明實(shí)施例中,通過分析實(shí)際應(yīng)用中涉及的圖數(shù)據(jù)的特點(diǎn),在考慮到負(fù)載均衡的前提下,將有邊相連的頂點(diǎn)盡可能劃分到同一子圖內(nèi),同時(shí)削弱子圖之間的耦合性,可以進(jìn)一步地減少處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高圖數(shù)據(jù)的處理效率。

      圖8示出了本發(fā)明另一實(shí)施例的處理圖數(shù)據(jù)的裝置800,如圖8所示,該裝置800包括:處理器810,存儲(chǔ)器820,總線系統(tǒng)830。其中,該裝置800與MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn)通過該總線系統(tǒng)830相連,該處理器810和該存儲(chǔ)器820通過該總線系統(tǒng)830相連,該存儲(chǔ)器820用于存儲(chǔ)指令,該處理器810用于執(zhí)行該存儲(chǔ)器820存儲(chǔ)的指令,以便于處理器810控制該MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn)進(jìn)行的MapReduce作業(yè)。

      該處理器810用于:確定待處理的圖數(shù)據(jù),該圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖;調(diào)度MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),以得到該圖數(shù)據(jù)的處理結(jié)果;其中,該MapReduce作業(yè)中的至少一個(gè)Map計(jì)算節(jié)點(diǎn)中的每個(gè)Map計(jì)算節(jié)點(diǎn)用于處理該多個(gè)子圖中的一個(gè)子圖內(nèi)的頂點(diǎn),該頂點(diǎn)之間具有相互連接關(guān)系。

      在本發(fā)明實(shí)施例中,通過將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,在MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)以子圖為計(jì)算對(duì)象,每次處理一個(gè)子圖內(nèi)的具有連接關(guān)系的頂點(diǎn),充分利用了子圖內(nèi)頂點(diǎn)的連接關(guān)系,使得每輪MapReduce作業(yè)過程盡可能處理更多的頂點(diǎn),從而減少了處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高了圖數(shù)據(jù)的處理效率。

      應(yīng)理解,在本發(fā)明實(shí)施例中,該處理器810可以是中央處理單元(Central Processing Unit,簡(jiǎn)稱為“CPU”),該處理器810還可以是其他通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA) 或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。

      該存儲(chǔ)器820可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器810提供指令和數(shù)據(jù)。存儲(chǔ)器820的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器。例如,存儲(chǔ)器820還可以存儲(chǔ)設(shè)備類型的信息。

      該總線系統(tǒng)830除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號(hào)總線等。該總線系統(tǒng)830還可以包括內(nèi)部總線、系統(tǒng)總線和外部總線。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)830。

      在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器810中的硬件的集成邏輯電路或者軟件形式的指令完成。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器820,處理器810讀取存儲(chǔ)器820中的信息,結(jié)合其硬件完成上述方法的步驟。為避免重復(fù),這里不再詳細(xì)描述。

      在本發(fā)明實(shí)施例中,該處理器810處理的圖數(shù)據(jù)對(duì)應(yīng)的圖被劃分成多個(gè)子圖,可選地,該多個(gè)子圖為m個(gè)子圖,與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第一文件和與該m個(gè)子圖一一對(duì)應(yīng)的m個(gè)第二文件被存儲(chǔ)在分布式文件系統(tǒng)DFS中,其中,該第一文件中的每個(gè)文件用于存儲(chǔ)該m個(gè)子圖中每個(gè)子圖對(duì)應(yīng)的子圖數(shù)據(jù),該第二文件中的每個(gè)文件用于存儲(chǔ)該每個(gè)子圖對(duì)應(yīng)的消息數(shù)據(jù)。

      可選地,該處理器810調(diào)度MapReduce系統(tǒng)中的計(jì)算節(jié)點(diǎn),對(duì)該圖數(shù)據(jù)進(jìn)行多輪MapReduce作業(yè),具體包括:

      為該多輪MapReduce作業(yè)中的每輪MapReduce作業(yè)分配待處理的子圖;

      根據(jù)該待處理的子圖,從該m個(gè)第一文件中和該m個(gè)第二文件中選取該每輪MapReduce作業(yè)的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括該待處理的子圖的子圖數(shù)據(jù),以及該每輪MapReduce作業(yè)的上一輪MapReduce作業(yè)處理得到的消息數(shù)據(jù);

      根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè)。

      在本發(fā)明實(shí)施例中,因?yàn)椴扇×藢?duì)圖數(shù)據(jù)和消息數(shù)據(jù)分開處理的方式,把在整個(gè)MapReduce作業(yè)過程中始終保持不變的圖數(shù)據(jù)抽離出來,單獨(dú)保 存在DFS中,并且每輪MapReduce作業(yè)產(chǎn)生的消息數(shù)據(jù)也被保存在DFS中與圖數(shù)據(jù)對(duì)應(yīng)的位置。在每輪MapReduce作業(yè)的開始,從DFS中讀取需要的圖數(shù)據(jù)和消息數(shù)據(jù)作為本輪MapReduce的輸入數(shù)據(jù)。在每輪MapReduce作業(yè)過程中,Map計(jì)算節(jié)點(diǎn)在處理完子圖數(shù)據(jù)后,無需向其它計(jì)算節(jié)點(diǎn)傳輸圖數(shù)據(jù),所以在Shuffle過程中也不需要傳輸圖數(shù)據(jù),從而能夠減少圖數(shù)據(jù)在計(jì)算過程中帶來的I/O開銷以及在Shuffle過程中的通信開銷,進(jìn)而加快了圖數(shù)據(jù)的處理速度。

      可選地,在本發(fā)明另一實(shí)施例中,該處理器810根據(jù)該輸入數(shù)據(jù),進(jìn)行該每輪MapReduce作業(yè),具體可以包括:

      根據(jù)該輸入數(shù)據(jù),為該每輪MapReduce作業(yè)的Map計(jì)算節(jié)點(diǎn)和Reduce計(jì)算節(jié)點(diǎn)分配計(jì)算任務(wù);

      控制該每輪MapReduce作業(yè)中的Reduce計(jì)算節(jié)點(diǎn)將處理得到的消息數(shù)據(jù)存入該m第二個(gè)文件中。

      可選地,在本發(fā)明另一實(shí)施例中,該處理器810還用于:根據(jù)公式gr=(nid*m)/N,將該圖劃分成該多個(gè)子圖,其中,gr取值相同的頂點(diǎn)被劃分到同一子圖,nid為該圖中的頂點(diǎn)的編號(hào),m為該子圖的個(gè)數(shù),N為該圖中的頂點(diǎn)的個(gè)數(shù)。

      因此,在本發(fā)明實(shí)施例中,通過將待處理的圖數(shù)據(jù)對(duì)應(yīng)的圖劃分成多個(gè)子圖,在MapReduce作業(yè)中的Map計(jì)算節(jié)點(diǎn)以子圖為計(jì)算對(duì)象,每次處理一個(gè)子圖內(nèi)的具有連接關(guān)系的頂點(diǎn),充分利用了子圖內(nèi)頂點(diǎn)的連接關(guān)系,使得每輪MapReduce作業(yè)過程盡可能處理更多的頂點(diǎn),從而減少了處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高了圖數(shù)據(jù)的處理效率。

      應(yīng)理解,根據(jù)本發(fā)明實(shí)施例的傳輸信息控制信息的裝置800可對(duì)應(yīng)于本發(fā)明方法實(shí)施例中的主控設(shè)備,并且裝置800中的各個(gè)模塊的上述和其它操作和/或功能分別為了實(shí)現(xiàn)圖2至圖6中的各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。

      本發(fā)明實(shí)施例的處理圖數(shù)據(jù)的裝置采取的劃分子圖的方法,通過分析實(shí)際應(yīng)用中涉及的圖數(shù)據(jù)的特點(diǎn),在考慮到負(fù)載均衡的前提下,將有邊相連的頂點(diǎn)盡可能劃分到同一子圖內(nèi),同時(shí)削弱子圖之間的耦合性,可以進(jìn)一步地減少處理圖數(shù)據(jù)所需的MapReduce作業(yè)輪數(shù),提高圖數(shù)據(jù)的處理效率。

      另外,本文中術(shù)語“系統(tǒng)”和“網(wǎng)絡(luò)”在本文中常被可互換使用。本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:?jiǎn)为?dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。

      應(yīng)理解,在本發(fā)明實(shí)施例中,“與A相應(yīng)的B”表示B與A相關(guān)聯(lián),根據(jù)A可以確定B。但還應(yīng)理解,根據(jù)A確定B并不意味著僅僅根據(jù)A確定B,還可以根據(jù)A和/或其它信息確定B。

      本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

      所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

      在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,該單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。

      該作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本發(fā)明實(shí)施例方案的目的。

      另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以是兩個(gè)或兩個(gè)以上單元集成在一個(gè) 單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

      該集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例該方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

      以上某一實(shí)施例中的技術(shù)特征和描述,為了使申請(qǐng)文件簡(jiǎn)潔清楚,可以理解適用于其他實(shí)施例,在其他實(shí)施例不再一一贅述。

      以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1