一種鏈接分析的計(jì)算方法和裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種鏈接分析的計(jì)算方法和裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,搜索引擎因其能夠在海量的網(wǎng)絡(luò)資源中為用戶找到 所需的信息而越來(lái)越受到重視。其中,基于鏈接分析的搜索引擎因其準(zhǔn)確率較高,日益受到 用戶的歡迎。
[0003] 目前,鏈接分析對(duì)整個(gè)網(wǎng)頁(yè)搜索起非常重要的作用。鏈接分析主要的功能是依據(jù) 網(wǎng)頁(yè)之間的鏈接關(guān)系,網(wǎng)頁(yè)的錨文本等信息,評(píng)價(jià)網(wǎng)頁(yè)的重要性(或稱權(quán)威性),通過(guò)對(duì)網(wǎng)頁(yè) 的評(píng)價(jià)會(huì)對(duì)網(wǎng)頁(yè)搜索最終結(jié)果的排序產(chǎn)生影響。
[0004] 現(xiàn)有技術(shù)中存在一種適用于大規(guī)模圖計(jì)算的鏈接分析計(jì)算方法,適用于大規(guī)模圖 計(jì)算的系統(tǒng)Pregel,主要用于PageRank和路徑計(jì)算,由于pregel目前的計(jì)算狀態(tài)都是常 駐內(nèi)存的,對(duì)于規(guī)模繼續(xù)增大的圖計(jì)算對(duì)內(nèi)存的要求越來(lái)越大,這種基于全內(nèi)存的計(jì)算系 統(tǒng)在內(nèi)存資源不夠或者數(shù)據(jù)量特別大的時(shí)候,并不適用,數(shù)據(jù)計(jì)算成本比較高。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供了一種鏈接分析的計(jì)算方法和裝置及系統(tǒng),用于減少對(duì)內(nèi)存的 占用,數(shù)據(jù)計(jì)算成本較低。
[0006] 為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
[0007] 第一方面,本發(fā)明實(shí)施例提供一種鏈接分析的計(jì)算方法,包括:
[0008] 處理機(jī)從分布式文件系統(tǒng)中獲取管理服務(wù)器預(yù)處理生成的第一子地圖數(shù)據(jù),所述 第一子地圖數(shù)據(jù)包括第一節(jié)點(diǎn)的身份識(shí)別碼ID和所述第一節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn)的 ID;
[0009] 所述處理機(jī)在第一超級(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)分別生成消息,所述消 息包括所述處理機(jī)在第一superstep中為所述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)分發(fā) 的權(quán)值;
[0010] 所述處理機(jī)將在所述第一superSt印中對(duì)所述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo) 節(jié)點(diǎn)分別生成的消息存儲(chǔ)到所述分布式文件系統(tǒng)中。
[0011] 第二方面,本發(fā)明實(shí)施例還提供另一種鏈接分析的計(jì)算方法,包括:
[0012] 管理服務(wù)器將地圖數(shù)據(jù)劃分為多個(gè)子地圖數(shù)據(jù),其中,每個(gè)子地圖數(shù)據(jù)包括一個(gè) 源節(jié)點(diǎn)的ID和所述源節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn)的ID;
[0013] 所述管理服務(wù)器將所述多個(gè)子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng);
[0014] 所述管理服務(wù)器監(jiān)測(cè)每個(gè)處理機(jī)是否已經(jīng)根據(jù)所述子地圖數(shù)據(jù)完成第一超級(jí)步 superstep的計(jì)算。
[0015] 第三方面,本發(fā)明實(shí)施例還提供一種處理機(jī),包括:
[0016] 子地圖獲取模塊,用于從分布式文件系統(tǒng)中獲取管理服務(wù)器預(yù)處理生成的第一子 地圖數(shù)據(jù),所述第一子地圖數(shù)據(jù)包括第一節(jié)點(diǎn)的身份識(shí)別碼ID和所述第一節(jié)點(diǎn)的邊所鏈 接的目標(biāo)節(jié)點(diǎn)的ID;
[0017] 權(quán)值分發(fā)模塊,用于在第一超級(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)分別生成消息, 所述消息包括所述處理機(jī)在第一superstep中為所述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié) 點(diǎn)分發(fā)的權(quán)值;
[0018] 消息存儲(chǔ)模塊,用于將在所述第一superstep中對(duì)所述第一子地圖數(shù)據(jù)中的每一 個(gè)目標(biāo)節(jié)點(diǎn)分別生成的消息存儲(chǔ)到所述分布式文件系統(tǒng)中。
[0019] 第四方面,本發(fā)明實(shí)施例還提供一種管理服務(wù)器,包括:
[0020] 地圖預(yù)處理模塊,用于將地圖數(shù)據(jù)劃分為多個(gè)子地圖數(shù)據(jù),其中,每個(gè)子地圖數(shù)據(jù) 包括一個(gè)源節(jié)點(diǎn)的ID和所述源節(jié)點(diǎn)的邊所鏈接的目標(biāo)節(jié)點(diǎn)的ID;
[0021] 子地圖存儲(chǔ)模塊,用于將所述多個(gè)子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng);
[0022] 計(jì)算監(jiān)測(cè)模塊,用于監(jiān)測(cè)每個(gè)處理機(jī)是否已經(jīng)根據(jù)所述子地圖數(shù)據(jù)完成第一超級(jí) 步superstep的計(jì)算。
[0023] 第五方面,本發(fā)明實(shí)施例還提供一種鏈接分析的計(jì)算系統(tǒng),包括:
[0024] 如前述第三方面所述的管理服務(wù)器、兩個(gè)以上的如前述第四方面所述的處理機(jī)和 分布式文件系統(tǒng),所述管理服務(wù)器和所述處理機(jī)分別與所述分布式文件系統(tǒng)之間具有通信 連接。
[0025] 從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
[0026] 在本發(fā)明實(shí)施例中,管理服務(wù)器首先對(duì)地圖數(shù)據(jù)進(jìn)行預(yù)處理,根據(jù)節(jié)點(diǎn)和該節(jié)點(diǎn) 的鏈接關(guān)系將地圖數(shù)據(jù)劃分為多個(gè)子地圖數(shù)據(jù),管理服務(wù)器將所有子地圖數(shù)據(jù)存儲(chǔ)到分布 式文件系統(tǒng)中,多個(gè)處理機(jī)根據(jù)各自所負(fù)責(zé)處理的節(jié)點(diǎn)分別從分布式文件系統(tǒng)中獲取到屬 于各個(gè)處理機(jī)負(fù)責(zé)處理的子地圖數(shù)據(jù),其中一處理機(jī)獲取到第一子地圖數(shù)據(jù)之后,上述處 理機(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)分別生成消息,然后上述處理機(jī)將在第一superstep中對(duì) 第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn)分別生成的消息存儲(chǔ)到分布式文件系統(tǒng)中,在處理機(jī) 進(jìn)行第一superst印的計(jì)算時(shí)管理服務(wù)器監(jiān)測(cè)處理機(jī)是否已經(jīng)根據(jù)子地圖數(shù)據(jù)完成第一 superstep的計(jì)算。由于本發(fā)明實(shí)施例中管理服務(wù)器可以將地圖數(shù)據(jù)切割為多個(gè)子地圖數(shù) 據(jù),而每個(gè)處理機(jī)只負(fù)責(zé)處理屬于自己的子地圖數(shù)據(jù)而無(wú)需加載所有的地圖數(shù)據(jù),所以當(dāng) 地圖數(shù)據(jù)很大時(shí),每個(gè)處理機(jī)只處理自己負(fù)責(zé)的子地圖數(shù)據(jù)并不會(huì)占用過(guò)多的內(nèi)存,不會(huì) 帶來(lái)計(jì)算成本的急劇上升,并且本發(fā)明實(shí)施例中處理機(jī)在每一次的superstep計(jì)算后都會(huì) 將對(duì)每個(gè)目標(biāo)節(jié)點(diǎn)分別生成的消息存儲(chǔ)到分布式文件系統(tǒng)中,故處理機(jī)生成的消息數(shù)據(jù)也 不會(huì)常駐內(nèi)存,對(duì)內(nèi)存需要有太高的要求。
【附圖說(shuō)明】
[0027] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于 本領(lǐng)域的技術(shù)人員來(lái)講,還可以根據(jù)這些附圖獲得其他的附圖。
[0028] 圖1為本發(fā)明實(shí)施例提供的一種鏈接分析的計(jì)算方法的流程方框示意圖;
[0029] 圖2_a為本發(fā)明實(shí)施例提供的一種源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的鏈接關(guān)系示意圖;
[0030] 圖2_b為本發(fā)明實(shí)施例提供的另一種源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的鏈接關(guān)系示意圖;
[0031] 圖3為本發(fā)明實(shí)施例提供的一種處理機(jī)將消息合并后存儲(chǔ)到文件分布式文件系 統(tǒng)的實(shí)現(xiàn)方式示意圖;
[0032] 圖4為本發(fā)明實(shí)施例提供的另一種鏈接分析的計(jì)算方法的流程方框示意圖;
[0033]圖5為本發(fā)明實(shí)施例提供的另一種鏈接分析的計(jì)算方法的計(jì)算流程示意圖;
[0034]圖6為本發(fā)明實(shí)施例提供的一種鏈接分析的計(jì)算系統(tǒng)的邏輯架構(gòu)示意圖;
[0035] 圖7為本發(fā)明實(shí)施例提供的一種消息格式示意圖;
[0036] 圖8為本發(fā)明實(shí)施例提供的一種處理機(jī)的組成結(jié)構(gòu)示意圖;
[0037] 圖9為本發(fā)明實(shí)施例提供的一種管理服務(wù)器的組成結(jié)構(gòu)示意圖;
[0038]圖10為本發(fā)明實(shí)施例提供的一種鏈接分析的計(jì)算系統(tǒng)的組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039] 本發(fā)明實(shí)施例提供了一種鏈接分析的計(jì)算方法和裝置及系統(tǒng),用于減少對(duì)內(nèi)存的 占用,數(shù)據(jù)計(jì)算成本較低。
[0040] 為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明 實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述 的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的 技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0041] 本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)"第一"、"第二"等是用于區(qū)別 類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的術(shù)語(yǔ)在適當(dāng)情 況下可以互換,這僅僅是描述本發(fā)明的實(shí)施例中對(duì)相同屬性的對(duì)象在描述時(shí)所采用的區(qū)分 方式。此外,術(shù)語(yǔ)"包括"和"具有"以及他們的任何變形,意圖在于覆蓋不排他的包含,以 便包含一系列單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒(méi)有清 楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它單元。
[0042] 以下分別進(jìn)行詳細(xì)說(shuō)明。
[0043] 本發(fā)明鏈接分析的計(jì)算方法的一個(gè)實(shí)施例,首先從處理機(jī)的角度來(lái)描述,可以包 括:處理機(jī)從分布式文件系統(tǒng)中獲取管理服務(wù)器預(yù)處理生成的第一子地圖數(shù)據(jù),其中,上述 第一子地圖數(shù)據(jù)包括第一節(jié)點(diǎn)的身份識(shí)別碼(ID,IDentity)和上述第一節(jié)點(diǎn)的邊所鏈接 的目標(biāo)節(jié)點(diǎn)的ID;上述處理機(jī)在第一超級(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)分別生成消 息;上述處理機(jī)將在上述第一superstep中對(duì)上述第一子地圖數(shù)據(jù)中的每一個(gè)目標(biāo)節(jié)點(diǎn) 分別生成的消息存儲(chǔ)到上述分布式文件系統(tǒng)中。
[0044] 請(qǐng)參閱圖1所示,本發(fā)明一個(gè)實(shí)施例提供的鏈接分析的計(jì)算方法,具體可以包括 如下步驟:
[0045] 101、處理機(jī)從分布式文件系統(tǒng)中獲取管理服務(wù)器預(yù)處理生成的第一子地圖數(shù)據(jù)。
[0046] 其中,上述第一子地圖數(shù)據(jù)包括第一節(jié)點(diǎn)的身份識(shí)別碼(ID,IDentity)和上述第 一節(jié)點(diǎn)的邊(edge)所鏈接的目標(biāo)節(jié)點(diǎn)的ID。
[0047] 在本發(fā)明實(shí)施例中,鏈接分析的計(jì)算系統(tǒng)中部署有一個(gè)管理服務(wù)器、多個(gè)的處理 機(jī)和分布式文件系統(tǒng),其中,管理服務(wù)器通常作為master,處理機(jī)作為worker,每個(gè)處理機(jī) 都獨(dú)立處理屬于各自處理機(jī)負(fù)責(zé)的數(shù)據(jù)。管理服務(wù)器首先對(duì)地圖數(shù)據(jù)進(jìn)行預(yù)處理,根據(jù)節(jié) 點(diǎn)和該節(jié)點(diǎn)的鏈接關(guān)系將地圖數(shù)據(jù)劃分為多個(gè)子地圖數(shù)據(jù),管理服務(wù)器將所有子地圖數(shù)據(jù) 存儲(chǔ)到分布式文件系統(tǒng)中。本發(fā)明實(shí)施例中,管理服務(wù)器預(yù)處理得到的多個(gè)子地圖數(shù)據(jù)并 不是常駐內(nèi)存中的,而是當(dāng)管理服務(wù)器生成多個(gè)子地圖數(shù)據(jù)后,管理服務(wù)器將生成的多個(gè) 子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng)中。其中,分布式文件系統(tǒng)是指文件系統(tǒng)管理的物理存 儲(chǔ)資源不一定直接連接在本地主機(jī)上,而是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與其它主機(jī)相連。分布式文件 系統(tǒng)可以基于客戶端/服務(wù)器模式來(lái)實(shí)現(xiàn),例如網(wǎng)絡(luò)架構(gòu)可能包括多個(gè)供多客戶端訪問(wèn)的 服務(wù)器,管理服務(wù)器可以將子地圖數(shù)據(jù)存儲(chǔ)到分布式文件系統(tǒng)