功能示意圖。參考圖2所示,該圖均衡器包括:
[0121]接收單元201,用于接收圖轉(zhuǎn)換器發(fā)送的大頂點表。
[0122]其中,所述大頂點表記錄有原始圖文件中的大頂點與其對應的邊數(shù)。
[0123]需要說明的是,本發(fā)明是在圖計算預處理時就考慮所述各頂點之間的關系,各頂點之間的關系主要由邊表示,并且各頂點之間的關系主要由圖中包含邊數(shù)較多頂點決定,所以本發(fā)明中將邊數(shù)較多的大頂點作為主要處理對象,對大頂點進行均衡處理。
[0124]需要說明的是,所述大頂點統(tǒng)計表中記錄有所述大頂點與所述大頂點對應的邊數(shù),但所述大頂點統(tǒng)計表不僅限于記錄所述大頂點及所述大頂點對應的邊數(shù),還可以記錄大頂點的鄰接頂點等信息。
[0125]發(fā)送單元202,用于向主控節(jié)點發(fā)送資源請求消息。
[0126]具體的,所述發(fā)送單元202在接收到所述圖轉(zhuǎn)換器發(fā)送的所述大頂點表之后,立即向所述主控節(jié)點發(fā)送資源請求消息,以使得所述主控節(jié)點為所述圖計算分配計算節(jié)點,并在分配的計算節(jié)點上為進行預處理的圖數(shù)據(jù)分配存儲空間。
[0127]所述接收單元201,還用于接收所述主控節(jié)點發(fā)送的資源響應消息。
[0128]其中,所述資源響應消息攜帶對所述原始圖文件進行計算的所有計算節(jié)點的信肩、O
[0129]具體的,所述發(fā)送單元202將所述資源請求消息發(fā)送至所述主控節(jié)點,主控節(jié)點為圖計算分配計算節(jié)點與所述計算節(jié)點上的存儲空間,并將所述計算節(jié)點的信息添加至資源響應消息中發(fā)送至所述圖均衡器,所述接收單元201接收所述主控節(jié)點發(fā)送的資源響應消息。
[0130]進一步的,所述原始圖文件進行計算的所有計算節(jié)點的信息可以通過列表的形式表示。此時所述資源響應消息包括:執(zhí)行節(jié)點列表。所述執(zhí)行節(jié)點列表用于記錄對原始圖文件進行計算的所有計算節(jié)點的信息。
[0131]需要說明的是,所述計算節(jié)點的信息包括所述計算節(jié)點的名字、所述計算節(jié)點的物理地址、以及所述計算節(jié)點的端口號等信息。
[0132]所述發(fā)送單元202,還用于向元數(shù)據(jù)服務器發(fā)送存儲空間請求消息。
[0133]其中,所述存儲空間請求消息攜帶所述計算節(jié)點的信息。
[0134]具體的,所述發(fā)送單元202向元數(shù)據(jù)服務器發(fā)送攜帶所述計算節(jié)點信息的存儲空間請求消息,以使得所述元數(shù)據(jù)服務器接收到所述存儲空間請求消息后,根據(jù)所述存儲空間請求消息在各個計算節(jié)點上分配相應的實際存儲資源。
[0135]所述接收單元201,還用于接收所述元數(shù)據(jù)服務器發(fā)送的所述存儲空間響應消息。
[0136]其中,所述存儲空間響應消息攜帶存儲空間信息。
[0137]需要說明的是,所述存儲空間信息可以包括存儲空間個數(shù),以及所述存儲空間地址。
[0138]具體的,所述元數(shù)據(jù)服務器根據(jù)所述存儲空間請求消息在各計算節(jié)點上分配相應的存儲空間后,需要將分配的存儲空間的具體信息發(fā)送至所述圖均衡器,所述接收單元201接收所述元數(shù)據(jù)服務器發(fā)送的存儲空間響應消息。
[0139]處理單元203,用于根據(jù)所述大頂點表中各大頂點的邊數(shù)以及所述存儲空間信息,生成大頂點分配表。
[0140]其中,所述大頂點分配表記錄有大頂點與存儲空間之間的映射關系。
[0141]需要說明的是,所述存儲空間位于計算節(jié)點上,每一個計算節(jié)點上分配有一個存儲空間。
[0142]具體的,所述處理單元203,具體用于確定第一存儲空間。
[0143]其中,所述第一存儲空間是未分配大頂點的存儲空間中存儲空間最大的存儲空間。
[0144]所述處理單元203,具體用于確定是否存在未確定存儲空間的大頂點。
[0145]所述處理單元203,具體用于在確定存在未確定存儲空間的大頂點的情況下,確定是否存在第一大頂點。
[0146]其中,所述第一大頂點是未確定存儲空間的大頂點中邊數(shù)不大于所述第一存儲空間的剩余存儲空間的任一大頂點。所述第一存儲空間的剩余存儲空間是所述第一存儲空間的大小減去已分配至所述第一存儲空間的大頂點的邊數(shù)得到的值。
[0147]需要說明的是,所述存儲空間的大小是所述圖均衡器根據(jù)存儲空間能夠存儲頂點的個數(shù)。所述存儲空間能夠存儲的頂點的個數(shù)與所述存儲空間的物理空間與每一頂點需要占用的存儲空間確定出的。
[0148]示例性的,若一個存儲空間為1024bit (比特),且每一頂點需要占用的存儲空間為8bit,那么該存儲空間能夠存儲的頂點的個數(shù)為128個,也就是說,該存儲空間的大小為128。
[0149]所述處理單元203,具體用于在不存在所述第一大頂點的情況下,將所述第一存儲空間確定為已分配大頂點的存儲空間,并繼續(xù)執(zhí)行所述圖均衡器確定第一存儲空間。
[0150]所述處理單元203,具體用于在存在所述第一大頂點的情況下,將所述第一大頂點與所述第一空間的映射關系存儲至所述大頂點分配表,將所述第一大頂點確定為已確定存儲空間的大頂點,并繼續(xù)執(zhí)行確定是否存在未確定存儲空間的大頂點,直至確定不存在未確定存儲空間的大頂點為止。
[0151]所述發(fā)送單元202,還用于將所述處理單元203生成的所述大頂點分配表發(fā)送至所述圖轉(zhuǎn)換器。
[0152]本發(fā)明實施例提供了一種圖均衡器,圖均衡器接收所述圖轉(zhuǎn)換器發(fā)送的大頂點表,并向主控節(jié)點發(fā)送資源請求消息,然后接收所述主控節(jié)點發(fā)送的資源響應消息,并向元數(shù)據(jù)服務器發(fā)送存儲空間請求消息,接著接收所述元數(shù)據(jù)服務器發(fā)送的所述存儲空間響應消息,最后根據(jù)所述大頂點表中各大頂點的邊數(shù)以及所述存儲空間信息,生成大頂點分配表,并將所述大頂點分配表發(fā)送至所述圖轉(zhuǎn)換器。這樣,由于生成大頂點分配表時考慮了各頂點之間的關系,將相關度較大的頂點盡量都分配至同一存儲空間,從而使得在圖計算開始運行時,減少了各計算節(jié)點之間的信息交互,進而降低了網(wǎng)絡消耗。
[0153]如圖3所示,其為本發(fā)明實施例所提供的一種元數(shù)據(jù)服務器的功能示意圖。參考圖3所示,該元數(shù)據(jù)服務器包括:
[0154]接收單元301,用于接收圖均衡器發(fā)送的存儲空間請求消息。
[0155]其中,所述存儲空間請求消息攜帶計算節(jié)點的信息。
[0156]需要說明的是,在同步并行系統(tǒng)中,對數(shù)據(jù)進行讀取或者存儲都需要經(jīng)過元數(shù)據(jù)服務器。
[0157]需要說明的是,所述存儲空間請求消息是所述元數(shù)據(jù)服務器根據(jù)主控節(jié)點分配的存儲空間的信息在所述計算節(jié)點上分配實際的存儲空間。
[0158]處理單元302,用于根據(jù)所述存儲空間請求消息,在各計算節(jié)點上分配存儲空間。
[0159]發(fā)送單元303,用于將存儲空間響應消息發(fā)送至所述圖均衡器。
[0160]其中,所述存儲空間響應消息攜帶存儲空間信息。
[0161]需要說明的是,所述存儲空間信息可以包括存儲空間個數(shù)、存儲的物理空間大小,以及所述存儲空間地址。
[0162]本發(fā)明實施例提供了一種元數(shù)據(jù)服務器,元數(shù)據(jù)服務器接收圖均衡器發(fā)送的存儲空間請求消息,并根據(jù)所述存儲空間請求消息,在各計算節(jié)點上分配存儲空間,最后將存儲空間響應消息發(fā)送至圖均衡器,以使得圖均衡器根據(jù)分配的存儲空間生成大頂點分配表,然后圖均衡器根據(jù)所述大頂點分配表按照相關度較大的頂點分配至同一存儲空間。這樣,由于在將圖中各頂點進行分配時,將相關度較大的頂點盡量都分配至同一存儲空間,從而使得在圖計算開始運行時,減少了各計算節(jié)點之間的信息交互,進而降低了網(wǎng)絡消耗。
[0163]如圖4所示,其為本發(fā)明實施例所提供的一種主控節(jié)點的功能示意圖。參考圖4所示,該主控節(jié)點包括:
[0164]獲取單元401,用于獲取圖處理請求消息。
[0165]其中,所述圖處理請求消息攜帶原始圖文件地址。
[0166]具體的,所述獲取單元401接收從客戶端發(fā)送的圖處理請求消息。
[0167]進一步的,當系統(tǒng)設置為可以由用戶設定大頂點統(tǒng)計閾值時,獲取單元401會獲取用戶設定的大頂點統(tǒng)計閾值,然后將所述大頂點統(tǒng)計閾值發(fā)送至所述圖轉(zhuǎn)換器。此時,所述圖處理請求消息還可以攜帶大頂點統(tǒng)計閾值。
[0168]處理單元402,用于根據(jù)所述獲取單元401獲取的所述圖處理請求消息,分配計算節(jié)點。
[0169]具體的,在接收到所述圖處理請求消息后,會根據(jù)系統(tǒng)中各計算節(jié)點資源的資源占用情況,判斷圖處理時需要的資源,并根據(jù)確定出的所述圖處理請求資源為圖計算分配計算節(jié)點。
[0170]發(fā)送單元403,用于將所述原始圖文件地址發(fā)送至圖轉(zhuǎn)換器。
[0171]進一步的,所述圖處理請求消息還可以攜帶大頂點統(tǒng)計閾值。所述發(fā)送單元403,具體用于將所述原始圖文件地址以及所述大頂點統(tǒng)計閾值發(fā)送至所述圖轉(zhuǎn)換器。
[0172]需要說明的是,所述大頂點統(tǒng)計閾值不一定必須與所述原始圖文件地址一起發(fā)送至所述圖轉(zhuǎn)換器,還可以與所述原始圖文件地址分別發(fā)送至所述圖轉(zhuǎn)換器。
[0173]接收單元404,用于接收圖均衡器發(fā)送的資源請求消息。
[0174]具體的,所述接收單元404接收從所述圖均衡器發(fā)送的資源請求消息,然后為圖計算分配計算節(jié)點。
[0175]所述發(fā)送單元403,還用于向所述圖均衡器發(fā)送資源響應消息。
[0176]其中,所述資源響應消息攜帶對所述原始圖文件進行計算的所有計算節(jié)點的信肩、O
[0177]需要說明的是,所述對所述原始圖文件進行計算的所有計算節(jié)點是所述主控節(jié)點根據(jù)系統(tǒng)的設置情況與系統(tǒng)中各個計算節(jié)點的處理能力為圖計算處理分配的節(jié)點。
[0178]進一步的,所述原始圖文件進行計算的所有計算節(jié)點的信息可以通過列表的形式表示。此時所述資源響應消息包括:執(zhí)行節(jié)點列表。所述執(zhí)行節(jié)點列表用于記錄對原始圖文件進行計算的所有計算節(jié)點的信息。
[0179]需要說明的是,所述計算節(jié)點的信息包括所述計算節(jié)點的名字、所述計算節(jié)點的物理地址、以及所述計算節(jié)點的端口號等信息。
[0180]所述發(fā)送單元403,還用于向所述圖轉(zhuǎn)換器發(fā)送圖轉(zhuǎn)換標志位。
[0181]其中,所述圖轉(zhuǎn)換標志位用于確定是否對所述原始圖文件進行轉(zhuǎn)換。
[0182]本發(fā)明實施例提供了一種主控節(jié)點,首先主控節(jié)點獲取圖處理請求消息,并根據(jù)所述圖處理請求消息,分配計算節(jié)點,將所述原始圖文件地址發(fā)送至圖轉(zhuǎn)換器,以使得所述圖轉(zhuǎn)換器能夠讀取原始圖文件,并最終將相關度圖中相關度較大的頂點分配至同一計算節(jié)點,接著接收圖均衡器發(fā)送的資源請求消息并返回相應的資源響應消息。這樣,由于在將圖中各頂點進行分配時,將相關度較大的頂點盡量都分配至同一存儲空間,從而使得在圖計算開始運行時,減少了各計算節(jié)點之間的信息交互,進而降低了網(wǎng)絡消耗。
[0183]本發(fā)明實施例提供了一種圖計算預處理的方法,如圖5所示,包括:
[0184]501、圖轉(zhuǎn)換器接收主控節(jié)點發(fā)送的原始圖文件地址,并獲取大頂點統(tǒng)計閾值。
[0185]需要說明的是,本發(fā)明實施例中將要進行預處理的圖文件叫做原始圖文件。所述原始圖文件地址是原始圖文件所存儲的地址。
[0186]需要說明的是,所述主控節(jié)點知道系統(tǒng)中各設備運行情況以及數(shù)據(jù)的存儲情況。所述圖轉(zhuǎn)換器只是對原始圖文件進行轉(zhuǎn)換處理。
[0187]需要說明的是,所述大頂點統(tǒng)計閾值用來判斷一個頂點是否為大頂點。若一個頂點的邊數(shù)大于或者等于所述大頂點統(tǒng)計閾值時,則將該頂點確定為大頂點;若一個頂點的邊數(shù)小于所述大頂點統(tǒng)計閾值時,則確定該頂點不是大頂點。
[0188]需要說明的是,若兩個頂點之間有邊將兩頂點連接,則說明這頂點互為鄰接頂點,所以頂點的邊數(shù)與頂點的鄰接頂點數(shù)目相等。判斷一個頂點的邊數(shù),也就是判斷該頂點的鄰接頂點數(shù)目。
[0189]具體的,根據(jù)系統(tǒng)設置的不同,所述圖轉(zhuǎn)換器獲取大頂點統(tǒng)計閾值的方法有兩種。
[0190]第一種方法,所述圖轉(zhuǎn)換器從本地獲取預先設定的大頂點統(tǒng)計閾值。
[0191]需要說明的是,此種情況下,所述大頂點統(tǒng)計閾值可能是在系統(tǒng)建立時存儲至所述圖轉(zhuǎn)換器中,也可能是在生成所述圖轉(zhuǎn)換器時記錄于所述圖轉(zhuǎn)換器中。
[0192]第二種方法,所述圖轉(zhuǎn)換器接收所述主控節(jié)點發(fā)送的大頂點統(tǒng)計閾值。
[0193]需要說明的是,當系統(tǒng)設置為可以由用戶設定大頂點統(tǒng)計閾值時,主控節(jié)點會獲取用戶設定的大頂點統(tǒng)計閾值,然后將所述大頂點統(tǒng)計閾值發(fā)送至所述圖轉(zhuǎn)換器。
[0194]需要說明的是,此種情況下,主控節(jié)點可以將所述原始圖文件地址與所述大頂點統(tǒng)計閾值封裝在同一個信息中發(fā)送給所述圖轉(zhuǎn)換器,也可以將所述原始圖文件地址與所述大頂點統(tǒng)計閾值分別發(fā)送至所述圖轉(zhuǎn)換器。對于所述原始圖文件地址與所述大頂點統(tǒng)計閾值之間的發(fā)送關系,本發(fā)明在此不做限制。
[0195]需要說明的是,本發(fā)明是在圖計算預處理時就考慮所述各頂點之間的關系,各頂點之間的關系主要由邊表示,并且各頂點之間的關系主要由圖中包含邊數(shù)較多頂點決定,所以本發(fā)明中根據(jù)大頂點統(tǒng)計閾值將邊數(shù)較多的大頂點作為主要處理對象,對大頂點進行均衡處理。
[0196]502、所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址讀取原始圖文件,并根據(jù)所述大頂點統(tǒng)計閾值,在所述原始圖文件中確定出大頂點,并將所述大頂點與所述大頂點的邊數(shù)記錄到大頂點表中。
[0197]需要說明的是,所述大頂點統(tǒng)計表中記錄有所述大頂點與所述大頂點對應的邊數(shù),但所述大頂點統(tǒng)計表不僅限于記錄所述大頂點及所述大頂點對應的邊數(shù),還可以記錄大頂點的鄰接頂點等信息。
[0198]具體的,所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址讀取原始圖文件,并根據(jù)所述大頂點統(tǒng)計閾值,在所述原始圖文件中確定出大頂點包括:所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址,依次讀取所述原始圖文件中每一頂點,并將邊數(shù)大于或者等于所述大頂點統(tǒng)計閾值的頂點確定為大頂點。
[0199]具體的,所述圖轉(zhuǎn)換器將所述大頂點與所述大頂點的邊數(shù)記錄到大頂點表中包括:所述圖轉(zhuǎn)換器將所述大頂點的名字及名字對應的大頂點的邊數(shù)對應記錄到所述大頂點表中。
[0200]需要說明的是,在實際處理過程中,由于圖文件中每一個頂點的名字很長,雖然名字的長短程度計算復雜度沒有影響,但是會使得在進行圖文件處理時占用較大的內(nèi)存,所以為了降低內(nèi)存消耗,可以在進行處理之前將圖中各頂點的名字用唯一標識該頂點的頂點ID表示。
[0201]進一步的,所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址讀取原始圖文件,并根據(jù)所述大頂點統(tǒng)計閾值,在所述原始圖文件中確定出大頂點,并將所述大頂點與所述大頂點的邊數(shù)記錄到大頂點表中,可以包括以下步驟:
[0202]S1、所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址,依次讀取所述原始圖文件中每一頂點,為每一頂點分配頂點ID,并將邊數(shù)大于或者等于所述大頂點統(tǒng)計閾值的頂點確定為大頂點。
[0203]S2、所述圖轉(zhuǎn)換器將所述原始圖文件中的每一頂點和與其對應的頂點ID,生成圖名字字典。
[0204]其中,所述圖名字字典用于記錄所述原始圖文件中各頂點與頂點ID間的映射關系O
[0205]S3、所述圖轉(zhuǎn)換器根據(jù)所述圖名字字典及確定出的大頂點,將大頂點的頂點ID與所述大頂點的邊數(shù)記錄到大頂點表中。
[0206]需要說明的是,在很多情況下,一個圖文件可能會經(jīng)過多次反復調(diào)用,所以在第一次調(diào)用該圖文件時,可以將該圖的圖名字字典進行存儲,在以后的反復調(diào)用過程中,可以不對該圖重復進行圖轉(zhuǎn)換,而是直接調(diào)用已生成的圖名字字典。
[0207]進一步的,在上述情況下,在所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址,依次讀取所述原始圖文件中每一頂點,為每一頂點分配頂點ID之前,還包括:所述圖轉(zhuǎn)換器接收所述主控節(jié)點發(fā)送的圖轉(zhuǎn)換標志位,并根據(jù)所述圖轉(zhuǎn)換標志位確定是否對所述原始圖文件進行轉(zhuǎn)換。
[0208]此時,所述圖轉(zhuǎn)換器根據(jù)所述原始圖文件地址,依次讀取所述原始圖文件中每一頂點,為每一頂點分配頂點ID包括:在所述圖轉(zhuǎn)換器確定對所述原始圖文件進行轉(zhuǎn)換的情況下,根據(jù)所述原始圖文件地址,依次讀取所述原始圖文件中每一頂點,為每一頂點分配頂點ID。
[0209]需要說明的是,所述圖名字字典可以設置一個標記位,將確定為大頂點的頂點的標記位設定為大頂點標識,將與大頂點鄰接的頂點的標記位設置為與其鄰接的大頂點的頂點ID,將不是大頂點且不與大頂點鄰接的頂點的標記位設置為普通頂點標記。
[0210]需要說明的是,若一個非大頂點的鄰接頂點中有多個大頂點,則按照預設規(guī)則,可以將原始圖文件中記錄的該頂點的鄰接大頂點中的第一個掃描到的大頂點的頂點ID記錄到該頂點的標記位中,也可以將該頂點的所有鄰接大頂點中邊數(shù)最少的大頂點的頂點ID記錄到該頂點的標記位中,也可以是將該頂點的標記位設置為該頂點的鄰接大頂點中邊數(shù)最少的大頂點的頂點ID,還可以是其他設置該頂點的標記位的方法,本發(fā)明對此不作限制。
[0211]503、所述圖轉(zhuǎn)換器將所述大頂點表發(fā)送至圖均衡器。
[0212]需要說明的是,所述圖轉(zhuǎn)換器將所述大頂點表發(fā)送至所述圖均衡器以使得所述圖均衡器給所述大頂點表中的各個大頂點確定相應的存儲空間。
[0213]504、所述圖轉(zhuǎn)換器接收所述圖均衡器發(fā)送的大頂點分配表。
[0214]其中,所述大頂點分配表用于記錄大頂點與存儲空間之間映射關系。
[0215]需要說明的是,所述存儲空間位于計算節(jié)點上,每一個計算節(jié)點上分配有一個存儲空間。
[0216]具體的,所述圖均衡器為所述大頂點表中的所有大頂點確定好存儲空間后,將大頂點與存儲空間之間的對應關系記錄至大頂點分配表,并將所述大頂點分配表發(fā)送至所述圖轉(zhuǎn)換器,所述圖轉(zhuǎn)換器接收所述大頂點分配表。
[0217]505、所述圖轉(zhuǎn)換器按照預設規(guī)則并根據(jù)所述大頂點分配表,將各頂點分配至對應的存儲空間,以使得所述存儲空間所在的計算節(jié)點對原始圖文件進行計算。
[0218]其中,所述預設規(guī)則包括將第一頂點分配至與其相鄰的大頂點對應的存儲空間。所述第一頂點是所述原始圖文件中不是大頂點,且與大頂點相鄰的頂點。
[0219]具體的,所述圖轉(zhuǎn)換器按照預設規(guī)則并根據(jù)所述大頂點分配表,將各頂點分配至對應的存儲空間,包括以下步驟:
[0220]Tl、所述圖轉(zhuǎn)換器依次讀取所述原始圖文件中的各頂點,并確定所述頂點是否為大頂點。
[0221]需要說明的是,所述原始圖文件確定所述頂點是否為大頂點的方法,可以是在讀取一個頂點后,將所述頂點的名字與大頂點表或者大頂點分配表中記錄的大頂點名字依次作比較,當所述大頂點表或者所述大頂點分配表中記錄有該頂點的名字,則將該頂點確定為大頂點,也可以是將該頂點的邊數(shù)與所述大頂點統(tǒng)計閾值比較,在該頂點的邊數(shù)大于或者等于所述大頂點統(tǒng)計閾值的情況下,將該頂點確定為大頂點,還可以是其他可以用來確定大頂點的方法,對所述圖轉(zhuǎn)換器在此確定大頂點的具體方法,本發(fā)明不做限制。
[0222]T2、在所述頂點是大頂點的情況下,所述圖轉(zhuǎn)換器根據(jù)大頂點分配表,將所述頂點分配至與其對應的存儲空間。
[0223]具體的,在所述頂點是大頂點的情況下,所述圖轉(zhuǎn)換器根據(jù)所述大頂點分配表中記錄的所述頂點和存儲空間的映射信息,將所述頂點存儲至與其映射的存儲空間。
[0224]T3、在所述頂點不是大頂點的情況下,所述圖轉(zhuǎn)換