国产精品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>

      基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng)及其方法與流程

      文檔序號(hào):12466109閱讀:355來(lái)源:國(guó)知局
      本發(fā)明涉及分布式圖計(jì)算
      技術(shù)領(lǐng)域
      :,特指一種基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng)及其方法。
      背景技術(shù)
      ::大規(guī)模圖計(jì)算對(duì)從自然語(yǔ)言處理到社交網(wǎng)絡(luò)等廣泛的機(jī)器學(xué)習(xí)(machinelearning)和數(shù)據(jù)挖掘(datamining)應(yīng)用都是至關(guān)重要的。人們已經(jīng)對(duì)單機(jī)圖計(jì)算模型進(jìn)行了深入地研究,并且許多系統(tǒng),例如GridGraph,GraphQ,GraphChi和X-Stream都已經(jīng)達(dá)到了非常高的計(jì)算性能。目前,數(shù)據(jù)集規(guī)模的快速增長(zhǎng)給單機(jī)模型帶來(lái)了嚴(yán)峻的挑戰(zhàn),但同時(shí)它又促進(jìn)了圖并行系統(tǒng)的開(kāi)發(fā),例如Pregel,GraphLab,PowerGraph,GraphX和PowerLyra。GraphX(dGonzalez,JosephE.,etal.“Graphx:Graphprocessinginadistributeddataflowframework.”11thUSENIXSymposiumonOperatingSystemsDesignandImplementation(OSDI14).2014.)和PowerGraph是點(diǎn)分割系統(tǒng),通過(guò)分割頂點(diǎn)而不是子圖之間的邊來(lái)均勻地分配高維度點(diǎn)的邊,點(diǎn)分割系統(tǒng)會(huì)將所有與頂點(diǎn)相關(guān)的邊都放置到一起。Pregel(Malewicz,Grzegorz,etal.“Pregel:asystemforlarge-scalegraphprocessing.”P(pán)roceedingsofthe2010ACMSIGMODInternationalConferenceonManagementofdata.ACM,2010.)和GraphLab(Low,Yucheng,etal.“DistributedGraphLab:aframeworkformachinelearninganddatamininginthecloud.”P(pán)roceedingsoftheVLDBEndowment5.8(2012):716-727.)是邊分割系統(tǒng),它們是通過(guò)切斷子圖之間的邊來(lái)均勻地分配頂點(diǎn)。PowerLyra(Chen,Rong,etal.“Powerlyra:Differentiatedgraphcomputationandpartitioningonskewedgraphs.”P(pán)roceedingsoftheTenthEuropeanConferenceonComputerSystems.ACM,2015.)提出了混合分割的算法來(lái)分別處理低維度和高維度點(diǎn),它包含了邊分割和點(diǎn)分割系統(tǒng)的優(yōu)點(diǎn)。真實(shí)世界的自然圖,例如社交網(wǎng)絡(luò)和web等,都具有典型的傾斜冪率分布的特點(diǎn),也就是傾斜冪率分布處的高維度頂點(diǎn)只是圖中頂點(diǎn)的一個(gè)小的子集,但是它們會(huì)有大量的鄰居結(jié)點(diǎn)。這種特點(diǎn)使得自然圖在分布式環(huán)境下難以進(jìn)行表示和分區(qū)。邊分割系統(tǒng)是通過(guò)切斷子圖之間的邊來(lái)均勻地分配頂點(diǎn),但是對(duì)于高維度點(diǎn),它將會(huì)造成計(jì)算和通信時(shí)的負(fù)載不均衡。點(diǎn)分割系統(tǒng)通過(guò)分割頂點(diǎn)而不是子圖之間的邊來(lái)均勻地分配高維度點(diǎn)的邊,但是對(duì)于低維度點(diǎn),這將會(huì)導(dǎo)致高的通信開(kāi)銷。混合分割系統(tǒng)的黑白哲學(xué)可能會(huì)導(dǎo)致相當(dāng)數(shù)量的中維度點(diǎn)產(chǎn)生次優(yōu)選擇,由于很難確定精確的閾值,并且在無(wú)序的大規(guī)模圖中,提前計(jì)算出頂點(diǎn)的維度(用來(lái)決定使用什么樣的分割策略)是很耗時(shí)的過(guò)程,另外,差異化處理顯著增加了系統(tǒng)設(shè)計(jì)的難度。AdaptiveRadixTree(ART)是一種專門(mén)針對(duì)基于內(nèi)存數(shù)據(jù)庫(kù)的索引技術(shù)?;鶖?shù)樹(shù)與常見(jiàn)的搜索樹(shù)比較有如下特點(diǎn):(1)基數(shù)樹(shù)的高度(高度即表示搜索的復(fù)雜度)取決于鍵的長(zhǎng)度(占幾個(gè)bit)而不是取決于樹(shù)中元素的個(gè)數(shù);(2)基數(shù)樹(shù)不要Rebalance操作,所有的插入操作都是在相同的結(jié)構(gòu)上進(jìn)行;(3)鍵存儲(chǔ)都是有序的(字典有序);(4)葉節(jié)點(diǎn)的路徑就代表了葉子節(jié)點(diǎn)的鍵,鍵被隱含地存儲(chǔ)了,可以從路徑進(jìn)行構(gòu)建。技術(shù)實(shí)現(xiàn)要素:針對(duì)上述技術(shù)問(wèn)題,本發(fā)明提出一種圖計(jì)算效率更高、通信開(kāi)銷更低的基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng)及其方法,其主要面向有傾斜冪率分布的大規(guī)模圖數(shù)據(jù)的存儲(chǔ)和計(jì)算。本發(fā)明的具體技術(shù)方案是:一種基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)源單元、數(shù)據(jù)分區(qū)單元、數(shù)據(jù)存儲(chǔ)單元、以及圖計(jì)算單元;所述數(shù)據(jù)源單元設(shè)有數(shù)據(jù)采集模塊,所述數(shù)據(jù)采集模塊用于采集圖數(shù)據(jù);所述數(shù)據(jù)存儲(chǔ)單元包括有數(shù)據(jù)庫(kù)、文件系統(tǒng)、分布式文件系統(tǒng)和HBase;所述數(shù)據(jù)分區(qū)單元包括數(shù)據(jù)加載模塊和自適應(yīng)分區(qū)算法模塊。一種基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算方法,該方法包括所述一種基于ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng),具體操作步驟如下:1)利用所述數(shù)據(jù)采集模塊采集網(wǎng)絡(luò)應(yīng)用產(chǎn)生的圖數(shù)據(jù),并將采集得到的所述圖數(shù)據(jù)持久化到數(shù)據(jù)存儲(chǔ)單元中;2)進(jìn)行數(shù)據(jù)分區(qū),包括數(shù)據(jù)加載和采用自適應(yīng)分區(qū)算法進(jìn)行數(shù)據(jù)劃分,所述數(shù)據(jù)加載過(guò)程中根據(jù)分配的計(jì)算節(jié)點(diǎn)的數(shù)目,然后在每個(gè)節(jié)點(diǎn)都啟動(dòng)數(shù)據(jù)加載,并行地將數(shù)據(jù)讀入內(nèi)存中;在數(shù)據(jù)加載的同時(shí)會(huì)調(diào)用自適應(yīng)的分區(qū)算法對(duì)數(shù)據(jù)進(jìn)行shuffle,將數(shù)據(jù)按照對(duì)應(yīng)的分區(qū)算法重新映射到分配的物理服務(wù)器上;在進(jìn)行數(shù)據(jù)加載同時(shí)進(jìn)行數(shù)據(jù)分區(qū),數(shù)據(jù)加載完成,數(shù)據(jù)劃分也完成;其中,所述自適應(yīng)分區(qū)算法包含序號(hào)連續(xù)的SmartHash函數(shù)、全局的分區(qū)表和物理服務(wù)器容量值,所述全局分區(qū)表記錄所有的分區(qū)情況,根據(jù)全局分區(qū)表記錄情況與物理服務(wù)器容量值的比較,調(diào)用SmartHash函數(shù)進(jìn)行物理服務(wù)器號(hào)分配,然后按照分配的物理服務(wù)器號(hào),將邊數(shù)據(jù)發(fā)送到對(duì)應(yīng)的物理服務(wù)器;3)經(jīng)過(guò)數(shù)據(jù)分區(qū)操作之后,每個(gè)物理服務(wù)器都會(huì)分到原始圖數(shù)據(jù)集的一個(gè)子圖,子圖在每個(gè)分區(qū)上的存儲(chǔ)采用的就是基于ART-Index的鄰接表結(jié)構(gòu);根據(jù)MapReduce、BSP和GAS等不同的分布式圖計(jì)算框架進(jìn)行并行的圖計(jì)算,每臺(tái)物理服務(wù)器在進(jìn)行計(jì)算時(shí)都是用在本地緩存的子圖數(shù)據(jù),每輪迭代之后會(huì)在物理服務(wù)器間進(jìn)行一次消息同步操作,消息同步操作完之后進(jìn)行下一次迭代計(jì)算,直到計(jì)算結(jié)果收斂,或者計(jì)算次數(shù)達(dá)到用戶設(shè)置值為止;4)迭代計(jì)算結(jié)束后會(huì)將最終結(jié)果寫(xiě)回到數(shù)據(jù)存儲(chǔ)系統(tǒng)中進(jìn)行持久化。作為本發(fā)明技術(shù)方案的優(yōu)化,本發(fā)明采用ART-indexed鄰接表結(jié)構(gòu)對(duì)圖數(shù)據(jù)進(jìn)行存儲(chǔ)索引,具體包括:(1)采用鄰接表結(jié)構(gòu)來(lái)存儲(chǔ)單個(gè)物理服務(wù)器上的所有圖數(shù)據(jù);對(duì)所有源點(diǎn)的出度邊采用鄰接表存儲(chǔ),鄰接表中分別是該源點(diǎn)的目的頂點(diǎn)集合,鄰接表的存儲(chǔ)開(kāi)銷是O(En+Vn),其中En和Vn分別表示圖中邊和頂點(diǎn)數(shù)目;(2)使用自適應(yīng)基數(shù)樹(shù)來(lái)索引邊的源點(diǎn),所述自適應(yīng)基數(shù)樹(shù)保留了索引數(shù)據(jù)的順序,可以執(zhí)行區(qū)塊的查詢;并且當(dāng)刪除和增加新的節(jié)點(diǎn)時(shí)不需要重新平衡樹(shù)和重新哈希頂點(diǎn),圖在部分更新時(shí),使用共享的結(jié)構(gòu)的方式來(lái)實(shí)現(xiàn)增量的更新。作為本發(fā)明技術(shù)方案的優(yōu)化,所述自適應(yīng)分區(qū)算法模塊有一組獨(dú)立的哈希函數(shù)并且每一臺(tái)物理服務(wù)器有一個(gè)閾值η來(lái)限制它應(yīng)該被賦予的最大邊的個(gè)數(shù),并且每臺(tái)物理服務(wù)器維護(hù)了一個(gè)本地分區(qū)表用來(lái)記錄每個(gè)頂點(diǎn)以及這些點(diǎn)對(duì)應(yīng)的哈希函數(shù)序號(hào);在圖數(shù)據(jù)并行加載階段,對(duì)每條邊e,首先使用第一個(gè)哈希函數(shù)散列邊e的源頂點(diǎn)s,映射邊e到物理服務(wù)器m1,如果分配到物理服務(wù)器m1的邊的個(gè)數(shù)小于閾值η,那么將邊e分配到m1,并且邊e的處理過(guò)程完成;否則,使用第二個(gè)哈希函數(shù)來(lái)散列邊e的源頂點(diǎn)s,并且映射邊e到另外一個(gè)物理服務(wù)器m2,如果m2的邊的個(gè)數(shù)比η小,那么邊e會(huì)被映射到m2;否則通過(guò)對(duì)等推理,以頂點(diǎn)s為源點(diǎn)的邊有d條邊,通過(guò)用p個(gè)哈希函數(shù)將該d條邊分配到各個(gè)物理服務(wù)器,每臺(tái)物理服務(wù)器最多有頂點(diǎn)s的η條邊;對(duì)每個(gè)頂點(diǎn)s,記錄當(dāng)前使用的哈希函數(shù);在圖加載完成之后,所有的本地分區(qū)表將會(huì)被寫(xiě)入全局分區(qū)表中,每個(gè)頂點(diǎn)s和它們對(duì)應(yīng)的哈希函數(shù)的最大個(gè)數(shù)p以鍵值對(duì)(s,p)的格式存儲(chǔ)在全局分區(qū)表中。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:1、本發(fā)明利用ART對(duì)圖數(shù)據(jù)進(jìn)行索引,提升了索引效率,減小了內(nèi)存占用量。2、本發(fā)明實(shí)現(xiàn)了同時(shí)處理高維度和低維度點(diǎn),通過(guò)設(shè)計(jì)一個(gè)統(tǒng)一的哈希函數(shù)處理,在處理的過(guò)程中不需要去提前統(tǒng)計(jì)高維度和低維度的維度信息,從而大大減少了圖的預(yù)處理時(shí)間。3、通過(guò)對(duì)圖數(shù)據(jù)的高效分區(qū)和索引,提升了圖計(jì)算每次迭代時(shí)間,節(jié)省了計(jì)算資源。附圖說(shuō)明圖1本發(fā)明的自適應(yīng)分區(qū)方法的流程圖。圖2本發(fā)明的自適應(yīng)分區(qū)處理流程實(shí)例(η=3)。圖3基于ART-index的鄰接表存儲(chǔ)結(jié)構(gòu)。圖4基于結(jié)構(gòu)共享的存儲(chǔ)結(jié)構(gòu)。具體實(shí)施方式本發(fā)明提供一種ART樹(shù)分布式系統(tǒng)圖存儲(chǔ)計(jì)算系統(tǒng)的具體實(shí)施例,其為在Spark上實(shí)現(xiàn)了一個(gè)獨(dú)立的圖計(jì)算引擎GraphA,它提供了一個(gè)能自適應(yīng)的,統(tǒng)一的圖分區(qū)算法,它通過(guò)使用序號(hào)遞增的hash函數(shù)來(lái)達(dá)到以負(fù)載均衡的方式分割數(shù)據(jù)集的目的,并且在圖系統(tǒng)上引入了ART-index的鄰接表存儲(chǔ)算法,實(shí)現(xiàn)了高效的存儲(chǔ)。實(shí)驗(yàn)結(jié)果顯示,不論對(duì)于真實(shí)世界的自然圖和人工合成的圖,在存儲(chǔ)開(kāi)銷,圖加載和分區(qū)時(shí)間,及圖計(jì)算時(shí)間方面,GraphA都優(yōu)于目前已經(jīng)的一些圖計(jì)算系統(tǒng),比如GraphX。所述系統(tǒng)包括數(shù)據(jù)源單元、數(shù)據(jù)分區(qū)單元、數(shù)據(jù)存儲(chǔ)單元、以及圖計(jì)算單元;所述數(shù)據(jù)源單元設(shè)有數(shù)據(jù)采集模塊,所述數(shù)據(jù)采集模塊用于采集圖數(shù)據(jù);所述數(shù)據(jù)存儲(chǔ)單元包括有數(shù)據(jù)庫(kù)、文件系統(tǒng)、分布式文件系統(tǒng)和HBase;所述數(shù)據(jù)分區(qū)單元包括數(shù)據(jù)加載模塊和自適應(yīng)分區(qū)算法模塊。大規(guī)模圖數(shù)據(jù)集的分布有兩種情況,一種是傾斜的冪率圖,一種是正常圖。對(duì)于第一種情況縮水自適應(yīng)分區(qū)算法模塊會(huì)通過(guò)自適應(yīng)的方式,同時(shí)處理高維度和低緯度點(diǎn),讓通信開(kāi)銷達(dá)到最小,并且圖數(shù)據(jù)傳送到每個(gè)分區(qū)之后會(huì)使用本發(fā)明的存儲(chǔ)單元,減少存儲(chǔ)開(kāi)銷。對(duì)于正常圖,由于不存在高低維度點(diǎn)之分,所以通過(guò)分區(qū)算法模塊當(dāng)成一種維度點(diǎn)進(jìn)行分區(qū),同樣可以達(dá)到很好的分區(qū)效果。本發(fā)明系統(tǒng)的操作處理流程的整體邏輯執(zhí)行框架如圖1所示,算法框架主要包括四個(gè)主要部分,數(shù)據(jù)源、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分區(qū)和圖計(jì)算,具體流程步驟如下:具體流程步驟如下:(1)云計(jì)算主要的服務(wù)對(duì)象可能是搜索引擎、社交網(wǎng)絡(luò)、生物科學(xué)和自然科學(xué)等,所以大部分圖數(shù)據(jù)都是來(lái)自這些領(lǐng)域應(yīng)用,這些就是真實(shí)的數(shù)據(jù)源。(2)針對(duì)這些應(yīng)用需要有一個(gè)數(shù)據(jù)采集模塊,將應(yīng)用產(chǎn)生的圖數(shù)據(jù),包括網(wǎng)頁(yè)數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)和生物信息數(shù)據(jù)等等,進(jìn)行收集。(3)將收集的數(shù)據(jù)持久化到數(shù)據(jù)存儲(chǔ)系統(tǒng)中,數(shù)據(jù)存儲(chǔ)系統(tǒng)主要有數(shù)據(jù)庫(kù)、文件系統(tǒng)、分布式文件系統(tǒng)和HBase等,目前比較通用的做法是將數(shù)據(jù)保存到分布式文件系統(tǒng)中,如HDFS等。(4)進(jìn)行數(shù)據(jù)分區(qū)(數(shù)據(jù)分割),其中數(shù)據(jù)分區(qū)部分由兩部分組成,分別是數(shù)據(jù)加載和自適應(yīng)分區(qū)算法。所述數(shù)據(jù)加載過(guò)程會(huì)根據(jù)分配的計(jì)算節(jié)點(diǎn)的數(shù)目,然后在每個(gè)節(jié)點(diǎn)都啟動(dòng)數(shù)據(jù)加載,并行地將數(shù)據(jù)讀入內(nèi)存中。(5)在數(shù)據(jù)加載的同時(shí)會(huì)調(diào)用自適應(yīng)的分區(qū)算法對(duì)數(shù)據(jù)進(jìn)行shuffle,將數(shù)據(jù)按照對(duì)應(yīng)的分區(qū)算法重新映射到分配的物理服務(wù)器上。自適應(yīng)的分區(qū)算法是一種在線的劃分策略,一邊進(jìn)行數(shù)據(jù)加載,一邊進(jìn)行分區(qū),數(shù)據(jù)加載完成,數(shù)據(jù)劃分也完成,這種劃分策略的圖分割時(shí)間比較短。(6)自適應(yīng)分區(qū)算法主要包含序號(hào)連續(xù)的哈希函數(shù)族(SmartHash函數(shù))、全局的分區(qū)表和物理服務(wù)器容量值。全局分區(qū)表記錄所有的分區(qū)情況,根據(jù)全局分區(qū)表記錄情況與物理服務(wù)器容量值的比較,調(diào)用SmartHash函數(shù)進(jìn)行物理服務(wù)器號(hào)分配,然后按照分配的物理服務(wù)器號(hào),將邊數(shù)據(jù)發(fā)送到對(duì)應(yīng)的物理服務(wù)器。(7)經(jīng)過(guò)數(shù)據(jù)分區(qū)操作之后,每個(gè)物理服務(wù)器都會(huì)分到原始圖數(shù)據(jù)集的一個(gè)子圖,如圖1中的子圖1、子圖2和子圖3。這些子圖在每個(gè)分區(qū)上的存儲(chǔ)采用的就是基于ART-Index的鄰接表結(jié)構(gòu)。(8)然后根據(jù)MapReduce、BSP和GAS等不同的分布式圖計(jì)算框架進(jìn)行并行的圖計(jì)算,每臺(tái)物理服務(wù)器在進(jìn)行計(jì)算時(shí)都是用在本地緩存的子圖數(shù)據(jù),每輪迭代之后會(huì)在物理服務(wù)器間進(jìn)行一次消息同步操作,消息同步操作完之后進(jìn)行下一次迭代計(jì)算,直到計(jì)算結(jié)果收斂,或者計(jì)算次數(shù)達(dá)到用戶設(shè)置值為止。(9)迭代計(jì)算結(jié)束后會(huì)將最終結(jié)果寫(xiě)回到數(shù)據(jù)存儲(chǔ)系統(tǒng)中進(jìn)行持久化。本發(fā)明的自適應(yīng)分區(qū)算法模塊有一組獨(dú)立的哈希函數(shù)并且每一臺(tái)物理服務(wù)器有一個(gè)閾值η來(lái)限制它應(yīng)該被賦予的最大邊的個(gè)數(shù)。本具體實(shí)施例簡(jiǎn)單計(jì)算閾值為大規(guī)模圖邊的總數(shù)除以物理服務(wù)器的數(shù)目,然而其他的因素(例如物理服務(wù)器的經(jīng)驗(yàn)?zāi)芰?也可以在細(xì)粒度控制時(shí)考慮。在圖并行加載階段,對(duì)每條邊e,首先使用第一個(gè)哈希函數(shù)散列邊e的源頂點(diǎn)s,映射邊e到物理服務(wù)器m1,如果分配到物理服務(wù)器m1的邊的個(gè)數(shù)小于閾值η,那么將邊e分配到m1,并且邊e的處理過(guò)程完成;否則,重新使用第二個(gè)哈希函數(shù)來(lái)散列邊e的源頂點(diǎn)s,并且映射邊e到另外一個(gè)物理服務(wù)器m2,如果m2的邊的個(gè)數(shù)比η小,那么邊e會(huì)被映射到m2;否則通過(guò)對(duì)等推理,以頂點(diǎn)s為源點(diǎn)的邊有d條邊,通過(guò)用p個(gè)哈希函數(shù)將這些邊分配到各個(gè)物理服務(wù)器,每臺(tái)物理服務(wù)器最多有頂點(diǎn)s的η條邊;對(duì)每個(gè)頂點(diǎn)s,GraphA記錄了當(dāng)前用于散列邊e的源頂點(diǎn)s的哈希函數(shù),因此,它可以直接使用函數(shù)f而不是在散列頂點(diǎn)s的其它邊的時(shí)候從第一個(gè)函數(shù)開(kāi)始嘗試。因此,承載頂點(diǎn)邊的物理服務(wù)器數(shù)目正比于頂點(diǎn)的維度。GraphA需要記錄每個(gè)頂點(diǎn)使用的hash函數(shù)的個(gè)數(shù)來(lái)實(shí)現(xiàn)對(duì)這些頂點(diǎn)所有邊的并行訪問(wèn)。每臺(tái)物理服務(wù)器維護(hù)了一個(gè)本地分區(qū)表用來(lái)記錄每個(gè)頂點(diǎn)以及這些頂點(diǎn)對(duì)應(yīng)的hash函數(shù)序號(hào)。在圖加載完成之后,所有的本地分區(qū)表將會(huì)被寫(xiě)入全局鍵-值表,類似分布式哈希表(distributedhashtable,簡(jiǎn)稱DHT),每個(gè)頂點(diǎn)(v)和它們hash函數(shù)的最大個(gè)數(shù)(p)以鍵值對(duì)(v,p)的格式存儲(chǔ)在表中。因此,在頂點(diǎn)v的計(jì)算階段,前p個(gè)hash函數(shù)將會(huì)被用來(lái)并行定位頂點(diǎn)v的所有邊。圖2給出了GraphA自適應(yīng)分區(qū)過(guò)程的示例。圖2左側(cè)顯示出數(shù)據(jù)集(以有序邊的形式)和數(shù)據(jù)加載之前可用的分區(qū)。每臺(tái)物理服務(wù)器可容納的最大邊的個(gè)數(shù)η是3。圖2右側(cè)演示了邊分區(qū)的過(guò)程。第一個(gè)hash函數(shù)H1被用來(lái)將邊<2,5>和<2,4>分配給P7分區(qū),邊<1,2>,<1,11>和<1,9>被分配給P1分區(qū),邊<3,1>,<3,2>和<3,9>被分配給P3分區(qū)。由于P1分區(qū)的邊的個(gè)數(shù)達(dá)到了閾值(η=3),第二個(gè)函數(shù)被用來(lái)分配邊<1,12>,<1,3>和<1,5>到P5分區(qū)。以此類推,第3個(gè)函數(shù)被用來(lái)分配邊<1,7>到P8分區(qū)。圖2的右側(cè)也描繪出了全局鍵-值表,它顯示了所有源頂點(diǎn)和與之對(duì)應(yīng)的最大函數(shù)序號(hào)。基于ART-index的連接表存儲(chǔ)結(jié)構(gòu)如圖3所示。圖3左邊是GraphX的存儲(chǔ)結(jié)構(gòu),采用的是“鍵-鍵-值”的存儲(chǔ)方式,右邊對(duì)應(yīng)的是本發(fā)明GraphA的存儲(chǔ)方式。本發(fā)明使用鄰接表來(lái)實(shí)現(xiàn)在單機(jī)內(nèi)對(duì)邊信息的高效存儲(chǔ)。如圖3右側(cè)所示,對(duì)于8個(gè)源頂點(diǎn),每個(gè)頂點(diǎn)都有一個(gè)鏈表,鏈表的每個(gè)結(jié)點(diǎn)代表所在源頂點(diǎn)對(duì)應(yīng)的一個(gè)目標(biāo)頂點(diǎn)。鄰接表的存儲(chǔ)開(kāi)銷是O(En+Vn),其中En和Vn分別代表邊和頂點(diǎn)的數(shù)量。相反,鍵-鍵-值(GraphX采用的方法,原理如圖3左側(cè)所示)和鄰接矩陣(GraphLab,PowerGrap和PowerLyra采用的方法)的存儲(chǔ)開(kāi)銷分別是O(2En)和O(Vn2)。為了提升類似插入刪除等操作的效率,我們使用了ART來(lái)索引邊的源頂點(diǎn)。ART保留了它索引數(shù)據(jù)的順序來(lái)使GraphA的查詢操作更高效。當(dāng)有新的頂點(diǎn)加入的時(shí)候,它不需要重新平衡樹(shù)(rebalance),也不需要重新哈希(rehash)頂點(diǎn)。當(dāng)圖部分更新的時(shí)候,使用共享的結(jié)構(gòu)的方式來(lái)實(shí)現(xiàn)增量的更新例如從源頂點(diǎn)1的鏈表中刪除目標(biāo)頂點(diǎn)5,只有頂點(diǎn)1對(duì)應(yīng)的分支受到了影響。對(duì)增量操作,目前已經(jīng)存在的解決方案有如下幾種:(1)直接更新對(duì)應(yīng)的值,這種處理方式雖然效率很高,但如果一旦失敗會(huì)出現(xiàn)不一致的狀態(tài)無(wú)法解決;(2)原子的批量更新操作,這種方式最常見(jiàn)的是在數(shù)據(jù)庫(kù)更新操作中,雖然這種能夠保證數(shù)據(jù)最終的一致性,但必須在數(shù)據(jù)庫(kù)中保存一個(gè)較長(zhǎng)生命周期的snapshot;(3)全拷貝方式,在進(jìn)行更新之前先對(duì)原數(shù)據(jù)進(jìn)行一次深拷貝得到一個(gè)副本,然后再操作該副本,操作完成之后再返回該副本,這種方式對(duì)于小數(shù)據(jù)的更新效率非常低。為了滿足增量更新的要求,通過(guò)共享結(jié)構(gòu)不改變已存在的點(diǎn)的值,從而可以達(dá)到細(xì)粒度的寫(xiě)時(shí)拷貝的目的。圖4給出了結(jié)構(gòu)共享的存儲(chǔ)結(jié)構(gòu)的更新過(guò)程,灰色塊表示要更新的塊,通過(guò)重新構(gòu)建修改葉子節(jié)點(diǎn)的父節(jié)來(lái)實(shí)現(xiàn)增量更新。為了加速GraphA的刪除操作,本具體實(shí)施例設(shè)計(jì)了位向量,每位代表物理服務(wù)器中存儲(chǔ)的源頂點(diǎn)的狀態(tài)。如圖3右側(cè)所示,例如8位向量(MASK)代表8個(gè)頂點(diǎn)的狀態(tài)。當(dāng)一個(gè)頂點(diǎn)的所有邊(比如頂點(diǎn)1)都被刪除,只需要設(shè)置第一個(gè)比特位為0,不需要更新樹(shù)。本發(fā)明基于ART樹(shù)結(jié)構(gòu)實(shí)現(xiàn)了圖數(shù)據(jù)的分布式存儲(chǔ),進(jìn)而設(shè)計(jì)一種高效的分布式圖計(jì)算方法;通過(guò)使用序號(hào)遞增的hash函數(shù)來(lái)達(dá)到以負(fù)載均衡的方式分割數(shù)據(jù)集的目的;通過(guò)擴(kuò)展Spark中彈性分布式數(shù)據(jù)集的結(jié)構(gòu)并且設(shè)計(jì)了圖操作APIs實(shí)現(xiàn)了獨(dú)立的圖計(jì)算引擎GraphA;與邊分割系統(tǒng)、點(diǎn)分割系統(tǒng)以及混合分割系統(tǒng)相比,不論是對(duì)于真實(shí)世界的自然圖還是人工合成的圖,在存儲(chǔ)開(kāi)銷、圖加載分區(qū)時(shí)間和圖計(jì)算時(shí)間方面,本發(fā)明的圖計(jì)算效率更高,通信開(kāi)銷更低。本領(lǐng)域技術(shù)人員將清楚本發(fā)明的范圍不限制于以上討論的示例,有可能對(duì)其進(jìn)行若干改變和修改,而不脫離所附權(quán)利要求書(shū)限定的本發(fā)明的范圍。盡管己經(jīng)在附圖和說(shuō)明書(shū)中詳細(xì)圖示和描述了本發(fā)明,但這樣的說(shuō)明和描述僅是說(shuō)明或示意性的,而非限制性的。本發(fā)明并不限于所公開(kāi)的實(shí)施例。當(dāng)前第1頁(yè)1 2 3 當(dāng)前第1頁(yè)1 2 3 
      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1