中,管理服務(wù)器向處理機(jī)發(fā) 布一個(gè)允許其訪問(wèn)的存儲(chǔ)目錄,一旦處理機(jī)成功訪問(wèn)分布式文件系統(tǒng),處理機(jī)就可以根據(jù) 這個(gè)目錄查找對(duì)應(yīng)的子地圖數(shù)據(jù)。具體的,本發(fā)明實(shí)施例中分布式文件系統(tǒng)可以有多種實(shí) 現(xiàn)方式,例如基于XFS、hadoop實(shí)現(xiàn)的文件系統(tǒng)等等。
[0048] 在本發(fā)明實(shí)施例中,地圖數(shù)據(jù)中包括所有的源節(jié)點(diǎn)以及每個(gè)源節(jié)點(diǎn)的邊所鏈接的 目標(biāo)節(jié)點(diǎn),還包括有每個(gè)節(jié)點(diǎn)的網(wǎng)頁(yè)數(shù)據(jù),其中,源節(jié)點(diǎn)又稱之為父節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)也稱之 為子節(jié)點(diǎn),源節(jié)點(diǎn)的出鏈指向該源節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)的入鏈指向該目 標(biāo)節(jié)點(diǎn)的邊被鏈接的源節(jié)點(diǎn)。源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)指相對(duì)于這兩個(gè)節(jié)點(diǎn)之間才有意義,例如, 一個(gè)源節(jié)點(diǎn)出鏈為一個(gè)目標(biāo)節(jié)點(diǎn),但是該目標(biāo)節(jié)點(diǎn)可能是下一個(gè)鏈接關(guān)系中的源節(jié)點(diǎn),其 中地圖數(shù)據(jù)中的節(jié)點(diǎn)之間的鏈接關(guān)系通常保存在錨文本系統(tǒng)中。請(qǐng)參閱如圖2-a所示,為 本發(fā)明實(shí)施例提供的一種源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的鏈接關(guān)系示意圖,其中,節(jié)點(diǎn)A的出鏈為節(jié) 點(diǎn)B,節(jié)點(diǎn)A的入鏈為節(jié)點(diǎn)C,節(jié)點(diǎn)B的出鏈為節(jié)點(diǎn)C,節(jié)點(diǎn)C的出鏈為節(jié)點(diǎn)D和節(jié)點(diǎn)F,節(jié)點(diǎn) E的出鏈為節(jié)點(diǎn)F。另外,請(qǐng)參閱如圖2-b所示,為本發(fā)明實(shí)施例提供的另一種源節(jié)點(diǎn)和目 標(biāo)節(jié)點(diǎn)的鏈接關(guān)系示意圖,節(jié)點(diǎn)G的出鏈為節(jié)點(diǎn)H,節(jié)點(diǎn)G的入鏈為節(jié)點(diǎn)I,節(jié)點(diǎn)H的出鏈為 節(jié)點(diǎn)I,節(jié)點(diǎn)I的出鏈為節(jié)點(diǎn)J和節(jié)點(diǎn)G,節(jié)點(diǎn)K的出鏈為節(jié)點(diǎn)I。如圖2-a和圖2-b所示為 地圖數(shù)據(jù),也稱之為鏈接地圖,每個(gè)節(jié)點(diǎn)表示一個(gè)網(wǎng)頁(yè),對(duì)于圖2-a,有出鏈的網(wǎng)頁(yè)A為父頁(yè) 面,有入鏈的網(wǎng)頁(yè)B為網(wǎng)頁(yè)A的子頁(yè)面,對(duì)于圖2-b,有出鏈的網(wǎng)頁(yè)H為父頁(yè)面,有入鏈的網(wǎng) 頁(yè)I為網(wǎng)頁(yè)H的子頁(yè)面。
[0049] 需要說(shuō)明的是,在本發(fā)明實(shí)施例中,地圖數(shù)據(jù)中還包括一種懸掛(dangling)節(jié)點(diǎn), 其中,dangling節(jié)點(diǎn)指的是只有入鏈沒有出鏈的目標(biāo)節(jié)點(diǎn),例如,如圖2-a所示,節(jié)點(diǎn)D和 節(jié)點(diǎn)F都是源節(jié)點(diǎn)C的目標(biāo)節(jié)點(diǎn),但是節(jié)點(diǎn)D和節(jié)點(diǎn)F都只有入鏈而沒有出鏈,同樣的,對(duì) 于圖2-b所示,節(jié)點(diǎn)J和節(jié)點(diǎn)K都是只有入鏈沒有出鏈的目標(biāo)節(jié)點(diǎn),故節(jié)點(diǎn)J和節(jié)點(diǎn)K也可 以稱之為dangling節(jié)點(diǎn)。其中一個(gè)節(jié)點(diǎn)是Dangling節(jié)點(diǎn)的情況很多,例如,有的網(wǎng)頁(yè)頁(yè)面 可能本身就沒有出鏈,這個(gè)網(wǎng)頁(yè)頁(yè)面就是dangling節(jié)點(diǎn),也有可能因?yàn)橄螺d調(diào)度以及其它 過(guò)濾策略原因使得一個(gè)網(wǎng)頁(yè)頁(yè)面未被下載或出鏈被過(guò)濾掉,這種情況下也會(huì)導(dǎo)致一個(gè)網(wǎng)頁(yè) 頁(yè)面為dangling節(jié)點(diǎn)。
[0050] 具體的,一個(gè)節(jié)點(diǎn)由一個(gè)網(wǎng)頁(yè)(doc)和其出鏈所指向的節(jié)點(diǎn)組成,節(jié)點(diǎn)ID就是doc id,出鏈格式為{linksnum, {子docid} *, {is_dangling} *}。具體的,is_dangling是一 個(gè)bitmap序列,可以和子docid的順序相同,表明對(duì)應(yīng)的子docid是否是dangling節(jié)點(diǎn)。
[0051] 前述實(shí)施例中對(duì)地圖數(shù)據(jù)進(jìn)行了詳細(xì)說(shuō)明,管理服務(wù)器根據(jù)每一個(gè)節(jié)點(diǎn)和該節(jié)點(diǎn) 的鏈接關(guān)系將地圖數(shù)據(jù)劃分為多個(gè)子地圖數(shù)據(jù),其中,每個(gè)子地圖數(shù)據(jù)包括一個(gè)源節(jié)點(diǎn)和 該源節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn),以圖2-a為例,節(jié)點(diǎn)C作為源節(jié)點(diǎn)時(shí),其目標(biāo)節(jié)點(diǎn)有三個(gè) 分別為:節(jié)點(diǎn)A、節(jié)點(diǎn)D和節(jié)點(diǎn)F,那么對(duì)于一個(gè)子地圖數(shù)據(jù)(即本發(fā)明實(shí)施例中描述的第一 子地圖數(shù)據(jù))來(lái)說(shuō),就包括源節(jié)點(diǎn)C(即本發(fā)明實(shí)施例中描述的第一節(jié)點(diǎn))的ID和該源節(jié)點(diǎn) C的邊所鏈接的目標(biāo)節(jié)點(diǎn)A的ID、目標(biāo)節(jié)點(diǎn)D的ID和目標(biāo)節(jié)點(diǎn)F的ID,并且第一子地圖數(shù) 據(jù)中還包括節(jié)點(diǎn)C、節(jié)點(diǎn)A、節(jié)點(diǎn)D和節(jié)點(diǎn)F的網(wǎng)頁(yè)數(shù)據(jù)。另外,根據(jù)前述對(duì)dangling節(jié)點(diǎn) 的說(shuō)明可知,在第一子地圖數(shù)據(jù)中節(jié)點(diǎn)D和節(jié)點(diǎn)F為dangling節(jié)點(diǎn),故在第一子地圖數(shù)據(jù) 中還攜帶指示節(jié)點(diǎn)D和節(jié)點(diǎn)屬于dangling節(jié)點(diǎn)的信息。
[0052] 在本發(fā)明實(shí)施例中,當(dāng)管理服務(wù)器生成多個(gè)子地圖數(shù)據(jù)后,管理服務(wù)器將生成的 多個(gè)子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng)中,每個(gè)處理機(jī)都獨(dú)立處理屬于各自處理機(jī)負(fù)責(zé)的 數(shù)據(jù)。接下來(lái)以鏈接分析的計(jì)算系統(tǒng)中其中一個(gè)處理機(jī)為例,對(duì)本發(fā)明實(shí)施例提供的鏈接 分析的計(jì)算方法進(jìn)行詳細(xì)說(shuō)明。其中為例說(shuō)明的處理機(jī)負(fù)責(zé)處理第一節(jié)點(diǎn)的數(shù)據(jù)。需要說(shuō) 明的是,在本發(fā)明實(shí)施例中,鏈接分析的計(jì)算系統(tǒng)中包括有多個(gè)處理機(jī),每個(gè)處理機(jī)負(fù)責(zé)處 理一個(gè)以上的子地圖數(shù)據(jù),通常一個(gè)處理機(jī)負(fù)責(zé)處理哪些地圖數(shù)據(jù)可以有多種實(shí)現(xiàn)方式, 例如管理服務(wù)器在將地圖數(shù)據(jù)切分為多個(gè)子地圖數(shù)據(jù)后,可以由管理服務(wù)器指定將哪幾個(gè) 子地圖數(shù)據(jù)劃分給哪個(gè)處理機(jī),例如一個(gè)管理服務(wù)器管理有1〇〇個(gè)處理機(jī),管理服務(wù)器共 劃分出500個(gè)子地圖數(shù)據(jù),則管理服務(wù)器可以將前5個(gè)子地圖數(shù)據(jù)劃分給第一個(gè)處理機(jī),然 后按照這樣的方式分別給每個(gè)處理機(jī)分配5個(gè)子地圖數(shù)據(jù)。又如,還可以根據(jù)子地圖數(shù)據(jù) 中包括的節(jié)點(diǎn)的ID進(jìn)行區(qū)分,例如管理服務(wù)器共劃分出500個(gè)子地圖數(shù)據(jù),其中每個(gè)子地 圖數(shù)據(jù)中都包括有源節(jié)點(diǎn)的ID,則可以根據(jù)節(jié)點(diǎn)的ID來(lái)決定一個(gè)子地圖數(shù)據(jù)應(yīng)該屬于哪 個(gè)處理機(jī)負(fù)責(zé),具體的,可以對(duì)節(jié)點(diǎn)的ID設(shè)置取模規(guī)則,假如500個(gè)子地圖數(shù)據(jù)中每個(gè)子地 圖數(shù)據(jù)包括的節(jié)點(diǎn)ID分別為1、2、3……、500,100處理機(jī)分別為處理機(jī)1、處理機(jī)2、處理機(jī) 3、……、100,則可以將節(jié)點(diǎn)ID為1、101、201、301、401的共5個(gè)子地圖數(shù)據(jù)劃分給處理機(jī) 1負(fù)責(zé)處理,同樣的,將節(jié)點(diǎn)ID為2、102、202、302、402的共5個(gè)子地圖數(shù)據(jù)劃分給處理機(jī)2 負(fù)責(zé)處理。按照這樣的劃分子地圖數(shù)據(jù)給處理機(jī)的方式,各個(gè)處理機(jī)就可以從分布式文件 系統(tǒng)中獲取到屬于各自處理機(jī)負(fù)責(zé)的子地圖數(shù)據(jù)。由于每個(gè)處理機(jī)從分布式文件系統(tǒng)中只 獲取屬于自己負(fù)責(zé)處理的子地圖數(shù)據(jù),而不需要將所有的子地圖數(shù)據(jù)都加載到處理機(jī)的內(nèi) 存中,故對(duì)于每個(gè)處理機(jī)來(lái)說(shuō)子地圖數(shù)據(jù)并不會(huì)占用過(guò)多的內(nèi)存,不會(huì)帶來(lái)計(jì)算成本隨著 地圖數(shù)據(jù)規(guī)模的增加而急劇的上升。
[0053] 需要說(shuō)明的是,在本發(fā)明實(shí)施例中,管理服務(wù)器將地圖數(shù)據(jù)切分為多個(gè)子地圖數(shù) 據(jù)之后,管理服務(wù)器將子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng)中,而每個(gè)處理機(jī)也是從分布式 文件系統(tǒng)中讀取屬于自己負(fù)責(zé)處理的子地圖數(shù)據(jù),可見管理服務(wù)器和處理機(jī)之間的信息交 換是通過(guò)分布式文件系統(tǒng)來(lái)進(jìn)行的,而需要管理及服務(wù)器和處理機(jī)之間直接進(jìn)行網(wǎng)絡(luò)交 換,故處理機(jī)就具有一定的獨(dú)立性,而不是完全依賴于管理服務(wù)器,這樣可以提高鏈接分析 的計(jì)算系統(tǒng)的可靠性,并且易于擴(kuò)展。
[0054] 102、處理機(jī)在第一superstep中對(duì)上述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)進(jìn) 行權(quán)值分發(fā),針對(duì)上述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)分別生成消息。
[0055] 其中,上述消息包括處理機(jī)在第一superst印中為第一子地圖數(shù)據(jù)中的每一個(gè)目 標(biāo)節(jié)點(diǎn)分發(fā)的權(quán)值。
[0056] 在本發(fā)明實(shí)施例中,處理機(jī)從分布式文件系統(tǒng)中獲取到屬于自己負(fù)責(zé)處理的第一 子地圖數(shù)據(jù)之后,處理機(jī)可以從第一子地圖數(shù)據(jù)中獲取到源節(jié)點(diǎn)(即第一節(jié)點(diǎn))的邊所鏈接 的目標(biāo)節(jié)點(diǎn)的ID,然后處理機(jī)在第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)進(jìn)行權(quán)值分發(fā),針對(duì) 每一個(gè)目標(biāo)節(jié)點(diǎn)分別生成消息(message),其中消息指的是處理機(jī)分別為每一個(gè)目標(biāo)節(jié)點(diǎn) 分發(fā)的權(quán)值。
[0057] 需要說(shuō)明的是,在本發(fā)明實(shí)施例中,管理服務(wù)器管理的有多個(gè)處理機(jī),每個(gè)處理機(jī) 對(duì)子地圖數(shù)據(jù)的處理過(guò)程是各自獨(dú)立進(jìn)行處理的,也就是說(shuō),多個(gè)處理機(jī)之間對(duì)各自的子 地圖數(shù)據(jù)的處理時(shí)并列進(jìn)行的,此處步驟102中只是以其中一個(gè)處理機(jī)對(duì)子地圖數(shù)據(jù)的處 理進(jìn)行了描述。
[0058] 另外,本發(fā)明實(shí)施例中處理機(jī)對(duì)第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)進(jìn)行權(quán)值分 發(fā)是以在第一superstep中的計(jì)算為例的,通常情況下,每個(gè)處理機(jī)對(duì)子地圖數(shù)據(jù)的處理 要進(jìn)行多輪的superstep計(jì)算,并且處理機(jī)在進(jìn)行當(dāng)前輪次的superstep計(jì)算時(shí)首先要 獲取到上一輪次的superstep的計(jì)算結(jié)果。其中步驟102中是以處理機(jī)進(jìn)行的當(dāng)前輪次 為第一superstep,則處理機(jī)在進(jìn)行下一輪次第二superstep計(jì)算時(shí)要首先獲取到該處理 機(jī)在第一superstep的計(jì)算結(jié)果。另外,本發(fā)明實(shí)施例中超級(jí)步的輪次信息由管理服務(wù)器 來(lái)設(shè)置,管理服務(wù)器會(huì)監(jiān)控所有的處理機(jī)對(duì)每一個(gè)超級(jí)步的計(jì)算執(zhí)行情況,例如,一個(gè)管理 服務(wù)器管理1〇〇個(gè)處理機(jī),管理服務(wù)器將超級(jí)步的輪次信息設(shè)定為第一superst印,則管 理服務(wù)器會(huì)監(jiān)測(cè)這100個(gè)處理機(jī)分別在第一superstep的計(jì)算執(zhí)行情況,當(dāng)100個(gè)處理機(jī) 都完成在第一superstep的計(jì)算后,管理服務(wù)器會(huì)將超級(jí)步的輪次信息從第一superstep 更新為第二superstep,并將更新后的超級(jí)步的輪次信息存儲(chǔ)到分布式文件系統(tǒng)中。各個(gè) 處理機(jī)定期監(jiān)測(cè)超級(jí)步的輪次信息是否更新,若有更新,各個(gè)處理機(jī)在第二superst印中 對(duì)第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)進(jìn)行權(quán)值分發(fā)。
[0059] 在本發(fā)明的一些實(shí)施例中,處理機(jī)針對(duì)第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)分別 生成消息指的是處理機(jī)為每一個(gè)目標(biāo)節(jié)點(diǎn)分別分發(fā)一個(gè)權(quán)值,并以生成的消息中攜帶為每 個(gè)目標(biāo)節(jié)點(diǎn)分發(fā)的權(quán)值。以圖2-a為例,節(jié)點(diǎn)C作為源節(jié)點(diǎn)時(shí),其目標(biāo)節(jié)點(diǎn)有三個(gè)分別為: 節(jié)點(diǎn)A、節(jié)點(diǎn)D和節(jié)點(diǎn)F,那么對(duì)于一個(gè)子地圖數(shù)據(jù)(即本發(fā)明實(shí)施例中描述的第一子地圖數(shù) 據(jù))來(lái)說(shuō),就包括源節(jié)點(diǎn)C(即本發(fā)明實(shí)施例中描述的第一節(jié)點(diǎn))的ID和該源節(jié)點(diǎn)C的邊所 鏈接的目標(biāo)節(jié)點(diǎn)A的ID、目標(biāo)節(jié)點(diǎn)D的ID和目標(biāo)節(jié)點(diǎn)F的ID,第一節(jié)點(diǎn)共有3個(gè)目標(biāo)節(jié)點(diǎn), 則處理機(jī)在第一superstep中分別為節(jié)點(diǎn)A、節(jié)點(diǎn)D和節(jié)點(diǎn)F分發(fā)一個(gè)權(quán)值。例如處理機(jī) 為節(jié)點(diǎn)A分發(fā)的權(quán)值為Valuel,處理機(jī)為節(jié)點(diǎn)D分發(fā)的權(quán)值為Value2,處理機(jī)為節(jié)點(diǎn)F分 發(fā)的權(quán)值為Value3,則處理機(jī)針對(duì)節(jié)點(diǎn)A生成的消息中攜帶有Valuel,處理機(jī)針對(duì)節(jié)點(diǎn)D 生成的消息中攜帶有Value2,處理機(jī)針對(duì)節(jié)點(diǎn)F生成的消息中攜帶有Value3。
[0060] 需要說(shuō)明的是,對(duì)于屬于dangling節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)來(lái)說(shuō),在本發(fā)明實(shí)施例中還可 以執(zhí)行如下方法:
[0061] 當(dāng)?shù)谝蛔拥貓D數(shù)據(jù)中還包括:第一節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn)中屬于dangling 節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)時(shí),在步驟102處理機(jī)在第一superstep中對(duì)第一子地圖數(shù)據(jù)中的每一個(gè) 目標(biāo)節(jié)點(diǎn)進(jìn)行權(quán)值分發(fā)之后,本發(fā)明實(shí)施例還可以包括如下步驟:
[0062]A1、處理機(jī)將對(duì)屬于dangling節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)分發(fā)的權(quán)值進(jìn)行合并,得到第一節(jié) 點(diǎn)在第一superstep中對(duì)應(yīng)的dangling分?jǐn)?shù);
[0063]A2、處理機(jī)將第一節(jié)點(diǎn)在第一superstep中對(duì)應(yīng)的dangling分?jǐn)?shù)存儲(chǔ)到分布式 文件系統(tǒng)中,以使管理服務(wù)器通過(guò)分布式文件系統(tǒng)獲取到