一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng),以提高數(shù)據計算效率并增強系統(tǒng)運行的可靠性。所述方法包括:從節(jié)點將圖結構數(shù)據讀取至內存;對內存中的圖結構數(shù)據進行預處理,得到圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片;將預處理所得至少一個數(shù)據片映射至從節(jié)點;從節(jié)點采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算。由于相鄰頂點的信息映射至同一從節(jié)點而不是不同從節(jié)點,如此,從節(jié)點采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算時,無需與其他從節(jié)點進行通信,由此減少了通信量,降低對集群內帶寬資源的需求,并且提高了集群系統(tǒng)及其節(jié)點的計算效率。
【專利說明】一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及分布式計算領域,具體涉及一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng)。
【背景技術】
[0002]圖(Graph)是一種由頂點的集合和頂點之間的關聯(lián)關系即邊的集合共同形成的數(shù)據結構。圖也可以稱之為網絡,實際應用中很多結構都可以轉化為圖的方式表達出來,例如,矩陣,其每一行每一列對應一個頂點,行與列的交叉處其值不為零時認為有邊存在,而邊的權重為該值的大??;再如,城市地圖,每一個城市(或居民地址)為一個頂點,不同城市(或居民地址)之間相連的路線稱之為邊。圖結構是一種抽象數(shù)據結構,是對象(頂點、節(jié)點)及其關系(邊)的模型。現(xiàn)實世界中,圖結構數(shù)據的分布十分普遍,例如,社交網絡中用戶之間的關系,蛋白質結構關聯(lián)關系,科技文獻體反映出的科學家之間的協(xié)作關系,以及因特網(Internet)中以超鏈接體現(xiàn)出的網頁之間的關系等等,這些都可以直接或間接地轉化圖結構這一類數(shù)據結構。以頂點和邊共同構成的集合組成的圖結構一般可以真實貼近的表達現(xiàn)實世界中的真實關聯(lián)關系。對圖結構數(shù)據的挖掘一般在識別對象關系模式、結構、檢測異常等等,并且,對圖結構數(shù)據的分析與挖掘是當前的一個熱點,高效率地處理大規(guī)模數(shù)據有著十分迫切的需求。當前的有效方法一般建立在大規(guī)模處理平臺之上,構建一個適應圖結構數(shù)據特性易擴展的平臺框架是一個可取的技術方向。
[0003]與圖結構數(shù)據相關的計算具有特別的性質,一般對圖的計算算法需要對頂點與邊直接執(zhí)行讀寫操作,這使得單個點的計算對全局數(shù)據的依賴。若采用傳統(tǒng)的方法直接計算,伴隨圖中頂點與邊的規(guī)模的增長,則運算耗時會達到不能忍耐的程度。雖然分布式系統(tǒng)的普及為大規(guī)模數(shù)據處理帶來了可能性,然而,若直接采用分布式計算方法設計算法,往往開發(fā)復雜度極高,使得調試、優(yōu)化非常困難。如何在分布式系統(tǒng)中高效率地處理大規(guī)模圖結構數(shù)據仍是業(yè)界的一個挑戰(zhàn)。
[0004]現(xiàn)有的一種針對圖結構數(shù)據處理的計算框架包括Giraph這一迭代的圖計算系統(tǒng)。Giraph基于Google于2010年發(fā)表的關于Pregel的論文的開源實現(xiàn),從計算模型而言,是基于批量同步并行(Bulk Synchronization Parallel, BSP)模型。BSP計算模型,是一種大規(guī)模同步并行化模型,它將計算抽象為節(jié)點與通信的交換網絡。BSP計算模型中的每一個任務分由多次迭代完成,每一次迭代為一個超級步(Superstep),其包括計算步與通信步。計算步完成算法計算任務,可由開發(fā)者自定義運算類型,而通信步完成不同進程之間的通信過程,發(fā)送方定義接收方、消息內容,并封裝消息發(fā)送給系統(tǒng),由系統(tǒng)送達消息。超級步內多個進程同時執(zhí)行,除第一個超級步外,其余超級步均先接受上一個超級步發(fā)送來的消息,然后執(zhí)行計算。
[0005]Giraph依賴于圖結構數(shù)據的有效劃分以降低通信(主要是收發(fā)消息)量并保持負載均衡,然而,圖結構數(shù)據的劃分是基于哈希函數(shù)的隨機劃分,因此會破壞計算的局部性。例如,Giraph需要頻繁交換其鄰接頂點的信息,而此時鄰接頂點劃分到不同機器上,因此導致通信量劇烈增加,嚴重降低計算效率。
【發(fā)明內容】
[0006]本發(fā)明實施例提供一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng),以提高數(shù)據計算效率并增強系統(tǒng)運行的可靠性。
[0007]本發(fā)明實施例提供一種大規(guī)模圖結構數(shù)據處理方法,所述方法包括:
[0008]從節(jié)點將圖結構數(shù)據讀取至內存;
[0009]對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片;
[0010]將所述預處理所得至少一個數(shù)據片映射至從節(jié)點;
[0011]所述從節(jié)點采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
[0012]本發(fā)明另一實施例提供一種大規(guī)模圖結構數(shù)據處理裝置,所述裝置包括:
[0013]數(shù)據讀取單元,用于將圖結構數(shù)據讀取至內存;
[0014]數(shù)據預處理單元,用于對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片;
[0015]映射單元,用于將所述預處理所得至少一個數(shù)據片映射至從節(jié)點;
[0016]算法執(zhí)行單元,用于采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
[0017]本發(fā)明另一實施例提供一種大規(guī)模圖結構數(shù)據處理系統(tǒng),所述系統(tǒng)包括至少兩個從節(jié)點和至少兩個主節(jié)點,所述至少兩個主節(jié)點管控各自控制域內的至少兩個從節(jié)點;
[0018]所述至少兩個從節(jié)點中的任意一個從節(jié)點用于將圖結構數(shù)據讀取至內存,對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片;
[0019]所述至少兩個主節(jié)點中的任意一個主節(jié)點用于將所述預處理所得至少一個數(shù)據片映射至從節(jié)點;
[0020]所述至少兩個從節(jié)點中的任意一個從節(jié)點用于采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
[0021]從上述本發(fā)明實施例可知,經過預處理后,圖結構數(shù)據中相鄰頂點處于同一數(shù)據片,而預處理后得到的每個這種數(shù)據片是映射至一個從節(jié)點。由于相鄰頂點的信息都盡其所能地映射至同一從節(jié)點而不是不同從節(jié)點,如此,對于映射至同一從節(jié)點的相鄰頂點,從節(jié)點采用迭代算法進行計算時,無需與其他從節(jié)點進行通信,由此減少了通信量(尤其是數(shù)據分片時設定的上限比較大時,即使仍然有部分相鄰頂點的信息不能映射至同一從節(jié)點,也能減少通信量),降低對集群內帶寬資源的需求,并且提高了集群系統(tǒng)及其節(jié)點的計算效率。
【專利附圖】
【附圖說明】
[0022]圖1是本發(fā)明實施例提供的大規(guī)模圖結構數(shù)據處理方法的基本流程示意圖;
[0023]圖2是本發(fā)明實施例提供的將圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片的分割示意圖;
[0024]圖3是本發(fā)明實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;[0025]圖4是本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;
[0026]圖5_a是本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;
[0027]圖5_b是本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;
[0028]圖6_a是本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;
[0029]圖6_b是本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置邏輯結構示意圖;
[0030]圖7是本發(fā)明實施例提供的大規(guī)模圖結構數(shù)據處理系統(tǒng)邏輯結構示意圖。
【具體實施方式】
[0031]本發(fā)明實施例提供一種大規(guī)模圖結構數(shù)據處理方法,包括:從節(jié)點將圖結構數(shù)據讀取至內存;對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片;將所述預處理所得至少一個數(shù)據片映射至從節(jié)點;所述從節(jié)點采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。本發(fā)明實施例還提供相應的一種大規(guī)模圖結構數(shù)據處理裝置和系統(tǒng)。以下分別進行詳細說明。
[0032]本發(fā)明實施例的大規(guī)模圖結構數(shù)據處理方法的基本流程可參考圖1,主要包括如下步驟SlOl至步驟S104:
[0033]S101,從節(jié)點將圖結構數(shù)據讀取至內存。
[0034]本發(fā)明實施例中,從節(jié)點是由主控(Master)計算節(jié)點和從屬(Slave)計算節(jié)點構成的分布式集群系統(tǒng)中的Slave計算節(jié)點,其中,所述的計算節(jié)點可以是計算機或者是具有計算功能的裝置。在本發(fā)明實施例中,圖結構數(shù)據可以存儲在硬盤或固態(tài)硬盤(SolidState Disk,SSD)等持久存儲介質上。為執(zhí)行定制算法,從節(jié)點需要將存儲在持久存儲介質上的圖結構數(shù)據讀取到內存(RAM)中。常用的數(shù)據存儲格式并不統(tǒng)一,但數(shù)據存儲格式并不影響對數(shù)據的操作。同時,可能有用戶自定義的操作,因此讀取過程可以由用戶自定義方式,也可以采用默認設置。具體地,首先打開指定文件,設定內存地址,將文件內容按行(或用戶自定義)的方式讀取到預設的位置,其中,從文件讀取到的內容需要解析成可計算的格式。在本發(fā)明實施例中,頂點、邊的存儲格式包括:頂點,頂點值,[邊,邊的值],其中,中括號表示其中的數(shù)據可出現(xiàn)零次到多次。以面向對象的方法構建頂點的存儲結構,則構建頂點類,其數(shù)據存儲為屬性值。
[0035]S102,對內存中的圖結構數(shù)據進行預處理,得到圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片。
[0036]現(xiàn)有技術中,圖結構數(shù)據中相鄰頂點可能劃分到不同計算節(jié)點上,由于相鄰頂點具有公用的邊,其中一個計算節(jié)點在執(zhí)行針對相鄰頂點中一個頂點的計算過程中,需要與執(zhí)行針對相鄰頂點中另一個頂點的另一計算節(jié)點進行頻繁通信,以交換相鄰頂點的信息,如此一來,導致分布式集群系統(tǒng)內通信量的劇增,嚴重降低計算效率。
[0037]為了解決上述現(xiàn)有技術存在的問題,本發(fā)明實施例提供的方法并不是直接將讀取到內存的圖結構數(shù)據直接執(zhí)行計算,而是進行預處理,包括:
[0038]S1021,根據圖結構數(shù)據的結構確定相鄰頂點。
[0039]根據圖結構數(shù)據的結構確定相鄰頂點是本領域的公知常識,此處不做贅述。
[0040]S1022,以圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,其中,分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。
[0041]廣度優(yōu)先遍歷屬于本領域公知常識,這里不做贅述,此處主要對如何將圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片進行說明,請參閱附圖2。對于附圖2示例的圖結構數(shù)據,在圖中隨機選擇一個頂點作為廣度優(yōu)先遍歷的初始頂點,如附圖2中的黑色頂點作為遍歷的初始頂點。從該初始頂點開始進行廣度優(yōu)先遍歷,直到所遍歷到的頂點數(shù)量達到一個預設值(該預設值可采用默認值,也可由用戶設定)為止。以頂點數(shù)量達到所述預設值時所遍歷的一個頂點以及之前遍歷的頂點(包括初始頂點)作為一個數(shù)據片,從原圖結構數(shù)據分割開來,分割該數(shù)據片的分割曲線如附圖2中的曲線所示。任取分割曲線另一側的一個頂點作為下次迭代的起點,重復以上分割方法,直至所有頂點均已分割到某一個數(shù)據片中為止。需要說明的是,對于有向圖,每個頂點僅保存以其為起始頂點的邊。進一步地,為保證分割后的數(shù)據片能夠具有計算時的良好的局部性,對每個數(shù)據片中的頂點單獨編號建立索引,如此,可以直接由頂點信息映射到對應的數(shù)據片,建立快捷查詢機制。
[0042]在上述預處理方法中,為保證分割的一致性即同一頂點不同時出現(xiàn)在不同的數(shù)據片中,針對大規(guī)模圖結構數(shù)據,可以讓多個Slave計算節(jié)點同時執(zhí)行數(shù)據預處理。圖結構數(shù)據依其鄰接性進行編號,然后依據編號將數(shù)據分配到不同的Slave計算節(jié)點上。采用前述預處理中的數(shù)據片分割方法,每個Slave計算節(jié)點進一步分割接收到的數(shù)據塊,以分割成可獨立處理的數(shù)據片。
[0043]由于經過預處理后圖結構數(shù)據中相鄰頂點處于同一數(shù)據片,因此,后續(xù)將一個數(shù)據片映射至同一從節(jié)點后,從節(jié)點采用迭代算法執(zhí)行針對相鄰頂點的其中一個頂點進行計算時,無需與其他從節(jié)點進行通信獲知該相鄰頂點中另一頂點的信息,由此減少了通信量。
[0044]S103,將預處理所得至少一個數(shù)據片映射至從節(jié)點。
[0045]在本發(fā)明實施例中,為了保證系統(tǒng)的魯棒性,可以將所述預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點,由該主節(jié)點決定選擇其中一個從節(jié)點作為執(zhí)行節(jié)點執(zhí)行計算任務。若該從節(jié)點在執(zhí)行計算過程中出現(xiàn)異?;蝈e誤,則可以選擇另一從節(jié)點繼續(xù)執(zhí)行計算,如此,保證了系統(tǒng)運行的穩(wěn)定。
[0046]S104,從節(jié)點采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算。
[0047]相應于步驟S103中將預處理所得至少一個數(shù)據片映射至從節(jié)點的一個實施例,即,將預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點,作為從節(jié)點采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算的一個實施例,可以是至少兩個從節(jié)點中任意一個從節(jié)點采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算
[0048]為了減少分布式集群系統(tǒng)內節(jié)點間通信量,降低通信延遲,在本發(fā)明實施例中,上述方法還包括:協(xié)調圖結構數(shù)據讀取、預處理、映射和數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞,具體是采用兩層級通信機制,即主節(jié)點處理主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的通信傳輸與同步,從節(jié)點處理主節(jié)點與從節(jié)點之間的通信傳輸與同步。
[0049]為了保證在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,不中斷系統(tǒng)的運行狀態(tài),在本發(fā)明實施例中,上述方法還包括:將對映射至從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至從節(jié)點中的持久存儲介質,在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)計算過程。
[0050]從上述本發(fā)明實施例提供的大規(guī)模圖結構數(shù)據處理方法可知,經過預處理后,圖結構數(shù)據中相鄰頂點處于同一數(shù)據片,而預處理后得到的每個這種數(shù)據片是映射至一個從節(jié)點。由于相鄰頂點的信息都盡其所能地映射至同一從節(jié)點而不是不同從節(jié)點,如此,對于映射至同一從節(jié)點的相鄰頂點,從節(jié)點采用迭代算法進行計算時,無需與其他從節(jié)點進行通信,由此減少了通信量(尤其是數(shù)據分片時設定的上限比較大時,即使仍然有部分相鄰頂點的信息不能映射至同一從節(jié)點,也能減少通信量),降低對集群內帶寬資源的需求,并且提高了集群系統(tǒng)及其節(jié)點的計算效率。
[0051]下面對用于執(zhí)行上述大規(guī)模圖結構數(shù)據處理方法的本發(fā)明實施例的大規(guī)模圖結構數(shù)據處理裝置進行說明,其基本邏輯結構參考附圖3。為了便于說明,附圖3示例的大規(guī)模圖結構數(shù)據處理裝置僅僅示出了與本發(fā)明實施例相關的部分。需要說明的是,附圖3示例的大規(guī)模圖結構數(shù)據處理裝置中的功能單元可以由分布式集群系統(tǒng)中主控(Master)計算節(jié)點(以下簡稱主節(jié)點)和\或從節(jié)點實現(xiàn),即大規(guī)模圖結構數(shù)據處理裝置中的功能單元既可以是主節(jié)點的功能單元,又可以是從節(jié)點的功能單元,還可以是的由主節(jié)點和從節(jié)點共同實現(xiàn)的功能單元。附圖3示例的大規(guī)模圖結構數(shù)據處理裝置主要包括數(shù)據讀取單元301、數(shù)據預處理單元302、映射單元303和算法執(zhí)行單元304,各單元詳細說明如下:
[0052]數(shù)據讀取單元301,用于將圖結構數(shù)據讀取至內存。
[0053]具體地,首先打開指定文件,設定內存地址,將文件內容按行(或用戶自定義)的方式讀取到預設的位置,其中,從文件讀取到的內容需要解析成可計算的格式。在本發(fā)明實施例中,頂點、邊的存儲格式包括:頂點,頂點值,[邊,邊的值],其中,中括號表示其中的數(shù)據可出現(xiàn)零次到多次。以面向對象的方法構建頂點的存儲結構,則構建頂點類,其數(shù)據存儲為屬性值。
[0054]數(shù)據預處理單元302,用于對內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片。
[0055]映射單元303,用于將預處理所得至少一個數(shù)據片映射至從節(jié)點。
[0056]算法執(zhí)行單元304,用于采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算。
[0057]用戶定制算法以繼承頂點基類并重寫計算方法來實現(xiàn)。具體地,算法支持以頂點為中心的計算,即計算算法均從頂點出發(fā),涉及到對頂點、邊的修改更新、增加與刪除。該計算算法應包含完整的迭代操作,即包括計算步與通信步。用戶需從頂點計算的思想出發(fā)設計算法,頂點設定有運算狀態(tài)與終止狀態(tài),當不再有計算狀態(tài)的頂點存在,也不再有新的通信產生時,系統(tǒng)終止算法運行。或用戶自定義終止的條件,并在計算算法函數(shù)中實現(xiàn)。用戶亦可以自定義樁(主)函數(shù),此時需用戶指定具體的讀寫操作方法。算法執(zhí)行單元304負責按照預定順序調用用戶自定義的算法,以默認樁函數(shù)的形式初始化系統(tǒng),并開始迭代,檢測到運行結束后,負責將計算結果寫回持久存儲介質。
[0058]需要說明的是,以上附圖3示例的大規(guī)模圖結構數(shù)據處理裝置的實施方式中,各功能單元的劃分僅是舉例說明,實際應用中可以根據需要,例如相應硬件的配置要求或者軟件的實現(xiàn)的便利考慮,而將上述功能分配由不同的功能單元完成,即將所述大規(guī)模圖結構數(shù)據處理裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。而且,實際應用中,本實施例中的相應的功能模塊可以是由相應的硬件實現(xiàn),也可以由相應的硬件執(zhí)行相應的軟件完成,例如,前述的數(shù)據預處理單元,可以是具有執(zhí)行前述對內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片的硬件,例如數(shù)據預處理器,也可以是能夠執(zhí)行相應計算機程序從而完成前述功能的一般處理器或者其他硬件設備;再如前述的映射單元,可以是具有執(zhí)行前述將所述預處理所得至少一個數(shù)據片映射至從節(jié)點功能的硬件,例如映射器,也可以是能夠執(zhí)行相應計算機程序從而完成前述功能的一般處理器或者其他硬件設備(本說明書提供的各個實施例都可應用上述描述原則)。
[0059]附圖3示例的數(shù)據預處理單元302可以包括相鄰頂點確定單元401和分割單元402,如附圖4所示本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置,其中:
[0060]相鄰頂點確定單元401,用于根據圖結構數(shù)據的結構確定相鄰頂點;
[0061]分割單元402,用于以圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,所述分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。以附圖2示例的圖結構數(shù)據為例,分割單元402具體執(zhí)行:在圖中隨機選擇一個頂點作為廣度優(yōu)先遍歷的初始頂點,如附圖2中的黑色頂點作為遍歷的初始頂點;從該初始頂點開始進行廣度優(yōu)先遍歷,直到所遍歷到的頂點數(shù)量達到一個預設值(該預設值可采用默認值,也可由用戶設定)為止;以頂點數(shù)量達到所述預設值時所遍歷的一個頂點以及之前遍歷的頂點(包括初始頂點)作為一個數(shù)據片,從原圖結構數(shù)據分割開來,分割該數(shù)據片的分割曲線如附圖2中的曲線所示;任取分割曲線另一側的一個頂點作為下次迭代的起點,重復以上分割方法,直至所有頂點均已分割到某一個數(shù)據片中為止。
[0062]附圖3示例的映射單元303具體用于將預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點,算法執(zhí)行單元304位于至少兩個從節(jié)點中任意一個從節(jié)點,具體用于采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算。
[0063]附圖3或附圖4示例的大規(guī)模圖結構數(shù)據處理裝置還可以包括通信控制單元501,如附圖5-a或附圖5-b所示本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置。通信控制單元501用于協(xié)調數(shù)據讀取單元301執(zhí)行圖結構數(shù)據讀取、數(shù)據預處理單元302執(zhí)行預處理、映射單元303執(zhí)行映射和算法執(zhí)行單元304執(zhí)行數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞。具體地,通信控制單元501協(xié)調分布式集群系統(tǒng)中節(jié)點(包括主節(jié)點和從節(jié)點)之間的消息傳遞,分為MasterSwitch與SlaveSwitch兩個部分,對應于兩級通信機制即主節(jié)點-主節(jié)點,從節(jié)點-從節(jié)點,其中,MasterSwitch運行在主節(jié)點上,SlaveSwitch運行在從節(jié)點上,每個節(jié)點僅運行一個Switch實例。主節(jié)點之間是可見的,每個主節(jié)點管理一個由從節(jié)點構成的域,該域內可存在若干個從節(jié)點。從節(jié)點之間不直接可見,須由主節(jié)點作為橋梁轉發(fā)或傳輸消息。MasterSwitch部分處理主節(jié)點-主節(jié)點以及主節(jié)點-從節(jié)點之間的通信傳輸與同步,由于主節(jié)點控制著整個系統(tǒng)的運行進度,掌握運行狀態(tài)。主節(jié)點管理數(shù)據片在從節(jié)點上的分布信息、從節(jié)點的計算狀態(tài)及數(shù)據片內迭代算法的運行進度等。SlaveSwitch部分處理主節(jié)點-從節(jié)點之間的通信傳輸與同步。從節(jié)點內部運算產生消息通信需求,根據消息的接收方地址來確定是否將該消息發(fā)送給從節(jié)點所屬的域。
[0064]附圖3或附圖4示例的大規(guī)模圖結構數(shù)據處理裝置還可以包括容錯恢復單元601,如附圖6-a或附圖6-b所示本發(fā)明另一實施例提供的大規(guī)模圖結構數(shù)據處理裝置。容錯恢復單元601用于將對映射至從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至從節(jié)點中的持久存儲介質,在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)計算過程。
[0065]請參閱附圖7,是本發(fā)明實施例提供的一種大規(guī)模圖結構數(shù)據處理系統(tǒng)結構示意圖,其可以是分布式集群系統(tǒng)。為了便于說明,僅僅示出了與本發(fā)明實施例相關的部分。與現(xiàn)有技術提供的大規(guī)模圖結構數(shù)據處理系統(tǒng)(例如,Giraph系統(tǒng))不同的是,附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)包括至少兩個從節(jié)點(即Slave計算節(jié)點)和至少兩個主節(jié)點(即Master計算節(jié)點),至少兩個主節(jié)點管控各自控制域內的至少兩個從節(jié)點,其中,主節(jié)點,主節(jié)點管理其定義的域,域內還有至少兩個從節(jié)點,一個從節(jié)點僅與管理其所屬域的主節(jié)點通信,具體地,主節(jié)點負責整個系統(tǒng)的運行狀態(tài)控制以及負責通信管理、計算迭代控制、異常錯誤恢復等,,從節(jié)點負責具體執(zhí)行數(shù)據存儲與定制算法計算,并且,為保證數(shù)據存儲的可靠性,經預處理后得到的數(shù)據片存儲2份以上,且每份均在同一個域內的不同從節(jié)點上,如此,當一個從節(jié)點損壞時,該域內另一個從節(jié)點仍可以繼續(xù)執(zhí)行該算法的迭代運算。每次算法迭代產生的通信、頂點的當前狀態(tài)值等中間結果周期性地存儲到持久介質。當運算至某一狀態(tài)某個從節(jié)點出錯時,則可從上一次保存的數(shù)據開始繼續(xù)運行而不需重啟計算程序。
[0066]附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)為用戶迭代算法提供統(tǒng)一的同步方式(類似于BSP模型),每一次迭代稱為一個超級步,包括計算步和通信步。首先由主節(jié)點(即Master計算節(jié)點)啟動迭代算法,然后從(Slave)機器完成一個計算任務中的計算步,由計算步產生的數(shù)據交換需求轉交通信步,以完成通信同步,通信步根據計算步定義的接收方、消息內容等,封裝消息并發(fā)送給通信控制單元,由通信控制單元完成消息的傳遞。一個超級步執(zhí)行數(shù)據中所有可計算頂點的計算,多個進程同時執(zhí)行,除第一個超級步外其余超級步,均在完成接收上一個超級步發(fā)送來的消息之后,才執(zhí)行本次計算步操作。由于通信僅在兩個相鄰的超級步之間發(fā)生,且計算步只在通信步完成后執(zhí)行,因此不需要加鎖控制同步,可以有效地避免傳統(tǒng)分布式處理中遇到的死鎖和數(shù)據競爭問題,為調試、優(yōu)化帶來極大便利。當數(shù)據中無可計算頂點也無消息傳遞且無計算狀態(tài)頂點時,或達到用戶自定義的迭代終止條件(例如次數(shù)上界等),則迭代算法終止。
[0067]附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)中,至少兩個從節(jié)點中的任意一個從節(jié)點用于將圖結構數(shù)據讀取至內存,對內存中的圖結構數(shù)據進行預處理,得到圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片,至少兩個主節(jié)點中的任意一個主節(jié)點用于將預處理所得至少一個數(shù)據片映射至從節(jié)點,至少兩個從節(jié)點中的任意一個從節(jié)點用于采用迭代算法對映射至從節(jié)點的數(shù)據片進行計算。這種處理方式的優(yōu)點在于:若該從節(jié)點在執(zhí)行計算過程中出現(xiàn)異?;蝈e誤,則可以選擇另一從節(jié)點繼續(xù)執(zhí)行計算,如此,保證了系統(tǒng)運行的穩(wěn)定。
[0068]在附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)中,至少兩個從節(jié)點中的任意一個從節(jié)點用于根據圖結構數(shù)據的結構確定相鄰頂點,以圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,其中,分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。以附圖2示例的圖結構數(shù)據為例,至少兩個從節(jié)點中的任意一個從節(jié)點在對圖結構數(shù)據進行分割,得到數(shù)據片時具體執(zhí)行:在圖中隨機選擇一個頂點作為廣度優(yōu)先遍歷的初始頂點,如附圖2中的黑色頂點作為遍歷的初始頂點;從該初始頂點開始進行廣度優(yōu)先遍歷,直到所遍歷到的頂點數(shù)量達到一個預設值(該預設值可采用默認值,也可由用戶設定)為止;以頂點數(shù)量達到所述預設值時所遍歷的一個頂點以及之前遍歷的頂點(包括初始頂點)作為一個數(shù)據片,從原圖結構數(shù)據分割開來,分割該數(shù)據片的分割曲線如附圖2中的曲線所示;任取分割曲線另一側的一個頂點作為下次迭代的起點,重復以上分割方法,直至所有頂點均已分割到某一個數(shù)據片中為止。在本實施例中,對圖結構數(shù)據所做的預處理,即,將圖結構數(shù)據分割成內部關聯(lián)較密切的數(shù)據片為處理單位,使從節(jié)點執(zhí)行的計算算法保持了良好的局部性特點,可顯著減少數(shù)據讀取延遲,減少通信量,降低對集群內帶寬資源的需求。
[0069]附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)中,至少兩個主節(jié)點中的任意一個主節(jié)點還用于協(xié)調圖結構數(shù)據讀取、預處理、映射和數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞。實際上,這種協(xié)調分為MasterSwitch與SlaveSwitch兩個部分執(zhí)行,對應于兩級通信機制即主節(jié)點_主節(jié)點,從節(jié)點_從節(jié)點,其中,MasterSwitch運行在主節(jié)點上,SlaveSwitch運行在從節(jié)點上,每個節(jié)點僅運行一個Switch實例。主節(jié)點之間是可見的,每個主節(jié)點管理一個由從節(jié)點構成的域,該域內可存在若干個從節(jié)點。從節(jié)點之間不直接可見,須由主節(jié)點作為橋梁轉發(fā)或傳輸消息。MasterSwitch部分處理主節(jié)點-主節(jié)點以及主節(jié)點_從節(jié)點之間的通信傳輸與同步,由于主節(jié)點控制著整個系統(tǒng)的運行進度,掌握運行狀態(tài)。主節(jié)點管理數(shù)據片在從節(jié)點上的分布信息、從節(jié)點的計算狀態(tài)及數(shù)據片內迭代算法的運行進度等。SlaveSwitch部分處理主節(jié)點-從節(jié)點之間的通信傳輸與同步。從節(jié)點內部運算產生消息通信需求,根據消息的接收方地址來確定是否將該消息發(fā)送給從節(jié)點所屬的域。上述兩級通信機制的優(yōu)點在于減少節(jié)點之間的通信量,降低延遲,可通過多個主節(jié)點并行運行,從而保證系統(tǒng)運行的可靠性與容錯恢復能力。
[0070]附圖7示例的大規(guī)模圖結構數(shù)據處理系統(tǒng)中,至少兩個從節(jié)點中任意一個從節(jié)點還用于將對映射至所述從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至從節(jié)點中的持久存儲介質,至少兩個主節(jié)點中的任意一個主節(jié)點還用于在執(zhí)行計算的從節(jié)點出現(xiàn)異常或錯誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)所述計算過程。
[0071]需要說明的是,上述裝置各模塊/單元之間的信息交互、執(zhí)行過程等內容,由于與本發(fā)明方法實施例基于同一構思,其帶來的技術效果與本發(fā)明方法實施例相同,具體內容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
[0072]本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,RandomAccess Memory)、磁盤或光盤等。
[0073]以上對本發(fā)明實施例所提供的一種大規(guī)模圖結構數(shù)據處理方法、裝置和系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
【權利要求】
1.一種大規(guī)模圖結構數(shù)據處理方法,其特征在于,所述方法包括: 從節(jié)點將圖結構數(shù)據讀取至內存; 對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片; 將所述預處理所得至少一個數(shù)據片映射至從節(jié)點; 所述從節(jié)點采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
2.根據權利要求1所述的方法,其特征在于,所述對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片,包括: 根據所述圖結構數(shù)據的結構確定所述相鄰頂點; 以所述圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,所述分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。
3.根據權利要求1所述的方法,其特征在于,所述將所述預處理所得至少一個數(shù)據片映射至從節(jié)點包括:將所述預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點; 所述所述從節(jié)點采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算包括:所述至少兩個從節(jié)點中任意一個從節(jié)點采用迭代算法對所述映射至從節(jié)點的數(shù)據片進行計算。
4.根據權利要求1至3任意一項所述的方法,其特征在于,所述方法還包括: 協(xié)調所述圖結構數(shù)據讀取、預處理、映射和數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞。
5.根據權利要求1至3任意一項所述的方法,其特征在于,所述方法還包括: 將對所述映射至所述從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至所述從節(jié)點中的持久存儲介質; 在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)所述計算過程。
6.一種大規(guī)模圖結構數(shù)據處理裝置,其特征在于,所述裝置包括: 數(shù)據讀取單元,用于將圖結構數(shù)據讀取至內存; 數(shù)據預處理單元,用于對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片; 映射單元,用于將所述預處理所得至少一個數(shù)據片映射至從節(jié)點; 算法執(zhí)行單元,用于采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
7.根據權利要求6所述的裝置,其特征在于,所述數(shù)據預處理單元包括: 相鄰頂點確定單元,用于根據所述圖結構數(shù)據的結構確定所述相鄰頂點; 分割單元,用于以所述圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,所述分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。
8.根據權利要求6所述的裝置,其特征在于,所述映射單元具體用于將所述預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點; 所述算法執(zhí)行單元位于所述至少兩個從節(jié)點中任意一個從節(jié)點,所述算法執(zhí)行單元具體用于采用迭代算法對所述映射至從節(jié)點的數(shù)據片進行計算。
9.根據權利要求6至8任意一項所述的裝置,其特征在于,所述裝置還包括: 通信控制單元,用于協(xié)調所述圖結構數(shù)據讀取、預處理、映射和數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞。
10.根據權利要求6至8任意一項所述的裝置,其特征在于,所述裝置還包括: 容錯恢復單元,用于將對所述映射至所述從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至所述從節(jié)點中的持久存儲介質,在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)所述計算過程。
11.一種大規(guī)模圖結構數(shù)據處理系統(tǒng),其特征在于,所述系統(tǒng)包括至少兩個從節(jié)點和至少兩個主節(jié)點,所述至少兩個主節(jié)點管控各自控制域內的至少兩個從節(jié)點; 所述至少兩個從節(jié)點中的任意一個從節(jié)點用于將圖結構數(shù)據讀取至內存,對所述內存中的圖結構數(shù)據進行預處理,得到所述圖結構數(shù)據中相鄰頂點處于同一數(shù)據片的至少一個數(shù)據片; 所述至少兩個主節(jié)點中的任意一個主節(jié)點用于將所述預處理所得至少一個數(shù)據片映射至從節(jié)點; 所述至少兩個從節(jié)點中的任意一個從節(jié)點用于采用迭代算法對所述映射至所述從節(jié)點的數(shù)據片進行計算。
12.根據權利要求11所述的系統(tǒng),其特征在于,所述至少兩個從節(jié)點中的任意一個從節(jié)點用于根據所述圖結構數(shù)據的結構確定所述相鄰頂點,以所述圖結構數(shù)據中任意一個頂點為初始頂點,采用廣度優(yōu)先遍歷,盡其所能地將所述圖結構數(shù)據中相鄰頂點分割至同一數(shù)據片,所述分割至同一數(shù)據片中的頂點數(shù)量以預設值為上限。
13.根據權利要求11所述的系統(tǒng),其特征在于,所述至少兩個主節(jié)點中的任意一個主節(jié)點用于將所述預處理所得至少一個數(shù)據片中同一數(shù)據片映射至由同一主節(jié)點管控的控制域內至少兩個從節(jié)點,所述至少兩個從節(jié)點中任意一個從節(jié)點采用迭代算法對所述映射至從節(jié)點的數(shù)據片進行計算。
14.根據權利要求11至13任意一項所述的系統(tǒng),其特征在于,所述至少兩個主節(jié)點中的任意一個主節(jié)點還用于協(xié)調所述圖結構數(shù)據讀取、預處理、映射和數(shù)據片計算過程中主節(jié)點與主節(jié)點之間以及主節(jié)點與從節(jié)點之間的消息傳遞。
15.根據權利要求11至13任意一項所述的系統(tǒng),其特征在于,所述至少兩個從節(jié)點中任意一個從節(jié)點還用于將對所述映射至所述從節(jié)點的數(shù)據片進行計算時所得中間結果存儲至所述從節(jié)點中的持久存儲介質,所述至少兩個主節(jié)點中的任意一個主節(jié)點還用于在執(zhí)行計算的從節(jié)點出現(xiàn)異?;蝈e誤時,將所述中間結果重新映射至由同一主節(jié)點管控的控制域內另一從節(jié)點,由所述另一從節(jié)點根據所述中間結果繼續(xù)所述計算過程。
【文檔編號】G06F12/02GK103631878SQ201310557066
【公開日】2014年3月12日 申請日期:2013年11月8日 優(yōu)先權日:2013年11月8日
【發(fā)明者】劉明君, 趙中英, 馮錚, 何一峰, 馮圣中 申請人:中國科學院深圳先進技術研究院