云環(huán)境下分布式網(wǎng)絡(luò)信息采集方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于云計(jì)算與大數(shù)據(jù)領(lǐng)域,涉及在云環(huán)境下分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的模型的 設(shè)計(jì)。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)最基礎(chǔ)的功能即提供信息,目前,互聯(lián)網(wǎng)上的信息已是海量,搜索引擎則是 網(wǎng)民在汪洋中搜尋信息的工具,是互聯(lián)網(wǎng)上不可或缺的工具和基礎(chǔ)應(yīng)用之一。根據(jù)《CNNIC: 2014年第33次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示[1],截止2013年12月,我國(guó)搜索 引擎用戶規(guī)模達(dá)到4. 90億,與2012年底相比增長(zhǎng)3856萬(wàn)人,增長(zhǎng)率為8. 5 %,使用率為 79.3%。位列網(wǎng)絡(luò)應(yīng)用中即時(shí)通信、網(wǎng)絡(luò)新聞之后的第三位。在美國(guó),搜索引擎使用率已經(jīng) 達(dá)到了 91%,在中國(guó)這樣一個(gè)網(wǎng)民快速增長(zhǎng)和以年輕網(wǎng)民主導(dǎo)的國(guó)家,搜索引擎用戶會(huì)繼 續(xù)增長(zhǎng),對(duì)于擁有核心技術(shù)和海量用戶的搜索引擎行業(yè),發(fā)展前景令人看好。
[0003] 云計(jì)算的概念由IBM、Google等IT服務(wù)企業(yè)提出后一直在不斷推進(jìn)與深入,云計(jì) 算的基本特征是資源共享、按需分配、彈性調(diào)度和服務(wù)可擴(kuò)展,云計(jì)算所提供的強(qiáng)大計(jì)算能 力和存儲(chǔ)能力能夠支撐爬蟲(chóng)系統(tǒng)功能的實(shí)現(xiàn)。Hadoop是一個(gè)由Apache基金會(huì)所開(kāi)發(fā)的分 布式系統(tǒng)基礎(chǔ)架構(gòu),它實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng),簡(jiǎn)稱(chēng)HDFS,為海量的數(shù)據(jù)提供了存儲(chǔ)。 它還提供了一種基于M/R計(jì)算模型的開(kāi)發(fā)框架,通過(guò)實(shí)現(xiàn)這種框架,可以快速地開(kāi)發(fā)出高 效、可靠的分布式計(jì)算程序。
[0004] 傳統(tǒng)的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)從功能實(shí)現(xiàn)的方式上可以分為無(wú)中心調(diào)度節(jié)點(diǎn)的獨(dú) 立式架構(gòu)、擁有一個(gè)調(diào)度中心的動(dòng)態(tài)分配架構(gòu)以及將整個(gè)網(wǎng)絡(luò)分成不同的部分分別爬行的 靜態(tài)分配架構(gòu)。無(wú)中心調(diào)度節(jié)點(diǎn)的獨(dú)立式架構(gòu)中各個(gè)節(jié)點(diǎn)之間缺乏交流,造成重復(fù)爬行大 量的冗余頁(yè)面。靜態(tài)分配架構(gòu)中,URL的分配方式是按照爬行頁(yè)面的地域特征,指定爬行服 務(wù)器爬行的IP范圍,沒(méi)有考慮到不同地域上頁(yè)面的數(shù)量,造成不同的爬行服務(wù)器上任務(wù)分 配不均。擁有一個(gè)調(diào)度中心的動(dòng)態(tài)分配架構(gòu)可以使URL平均地分配到頁(yè)面抓取服務(wù)器上, 但是沒(méi)有考慮到不同服務(wù)器上性能的差別。
[0005] 面對(duì)海量的互聯(lián)網(wǎng)信息,分布式網(wǎng)絡(luò)爬蟲(chóng)需要做到快速、全面地對(duì)網(wǎng)絡(luò)信息進(jìn)行 抓取,同時(shí)盡可能地達(dá)到負(fù)載均衡,降低頁(yè)面重復(fù)率。本文提出一種云環(huán)境下的分布式網(wǎng)絡(luò) 爬蟲(chóng)系統(tǒng)的設(shè)計(jì)模型。
【發(fā)明內(nèi)容】
[0006] 技術(shù)問(wèn)題:本發(fā)明針對(duì)傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)面對(duì)互聯(lián)網(wǎng)海量頁(yè)面時(shí),頁(yè)面抓取速度慢、分 布式集群負(fù)載不均衡的問(wèn)題,采用頁(yè)面抓取與頁(yè)面處理相分離的系統(tǒng)設(shè)計(jì)方法,提高頁(yè)面 采集的速度,通過(guò)對(duì)頁(yè)面采集服務(wù)器頁(yè)面采集時(shí)間的橫向和縱向的比較,動(dòng)態(tài)地為頁(yè)面采 集服務(wù)器分配抓取任務(wù),盡可能地使頁(yè)面采集服務(wù)器達(dá)到負(fù)載均衡的狀態(tài)。
[0007] 技術(shù)方案:本發(fā)明的云環(huán)境下分布式網(wǎng)絡(luò)信息采集方法,含如下步驟:
[0008] 1)系統(tǒng)模型的組成:頁(yè)面信息采集子系統(tǒng)、頁(yè)面信息數(shù)據(jù)處理子系統(tǒng);
[0009] 2)頁(yè)面信息采集系統(tǒng)創(chuàng)建服務(wù)監(jiān)聽(tīng)端口,接收中心節(jié)點(diǎn)分配的URL集合,當(dāng)接收 到中心節(jié)點(diǎn)分配的URL集合后,觸發(fā)步驟3 ;
[0010] 3)頁(yè)面信息采集系統(tǒng)采用異步的方式,對(duì)URL集合中的每個(gè)頁(yè)面進(jìn)行抓取,抓取 完成后,將包含所有頁(yè)面信息的結(jié)果返回給中心節(jié)點(diǎn);
[0011] 4)中心節(jié)點(diǎn)將接收到的抓取的結(jié)果放到待處理頁(yè)面集合中,交由云計(jì)算平臺(tái)對(duì)頁(yè) 面信息進(jìn)行處理,并且將頁(yè)面服務(wù)器加入空閑的服務(wù)器列表;
[0012] 5)云計(jì)算平臺(tái)提取出頁(yè)面中所有的超鏈接,并且對(duì)超鏈接進(jìn)行過(guò)濾,將過(guò)濾出來(lái) 的URL放入到待分配的URL集合中;
[0013] 6)中心節(jié)點(diǎn)根據(jù)未分配的服務(wù)器列表,根據(jù)URL分配的策略,將待分配的URL分配 給各個(gè)頁(yè)面信息采集服務(wù)器,重復(fù)步驟2,直到待分配URL列表為空;
[0014] 本發(fā)明提出了云環(huán)境下分布式網(wǎng)絡(luò)信息采集方法,通過(guò)采用本發(fā)明提出的方法, 可以在面對(duì)互聯(lián)網(wǎng)海量的數(shù)據(jù)時(shí),以最快的速度、最小的頁(yè)面重復(fù)率抓取網(wǎng)頁(yè)信息,并且保 證集群主機(jī)的負(fù)載均衡。
【附圖說(shuō)明】
[0015] 圖1基于本發(fā)明的頁(yè)面信息抓取流程圖。
[0016] 圖2是本發(fā)明的分布式網(wǎng)絡(luò)爬蟲(chóng)架構(gòu)圖。
[0017] 圖3是本發(fā)明的頁(yè)面米集系統(tǒng)流程圖。
[0018] 圖4是本發(fā)明的URL分配流程圖。
【具體實(shí)施方式】
[0019] 以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0020] 圖1是本發(fā)明的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)運(yùn)行流程圖。本發(fā)明主要涉及到分布式頁(yè)面信息抓 取模塊以及URL分配算法。本發(fā)明考慮的是云計(jì)算環(huán)境中,分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)設(shè)計(jì)的解 決方案,本發(fā)明中云環(huán)境以Hadoop系統(tǒng)框架為基礎(chǔ),采用HBase作為頁(yè)面元數(shù)據(jù)的數(shù)據(jù)存 儲(chǔ)平臺(tái),頁(yè)面數(shù)據(jù)的處理采用M/R的計(jì)算框架。整個(gè)網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)架構(gòu)如圖2所示,系統(tǒng)包 含頁(yè)面抓取節(jié)點(diǎn)、中心調(diào)度節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)三種節(jié)點(diǎn),其中,抓取節(jié)點(diǎn)主要負(fù)責(zé)頁(yè)面信息的 快速抓取,中心調(diào)度節(jié)點(diǎn)負(fù)責(zé)URL集合的分配、頁(yè)面解析任務(wù)的分配、抓取節(jié)點(diǎn)的管理等功 能,存儲(chǔ)節(jié)點(diǎn)負(fù)責(zé)保存解析好的網(wǎng)頁(yè)信息元數(shù)據(jù)。頁(yè)面抓取系統(tǒng)運(yùn)行在云環(huán)境之外的普通 電腦之中,通過(guò)異步請(qǐng)求的方式抓取頁(yè)面信息,采用JSON格式的數(shù)據(jù),與中心調(diào)度節(jié)點(diǎn)進(jìn) 行數(shù)據(jù)的交互。
[0021] 下面給出本發(fā)明的具體實(shí)施案例:
[0022] (1)頁(yè)面抓取系統(tǒng)采用NodeJS語(yǔ)言編寫(xiě),運(yùn)行在云環(huán)境的外部。頁(yè)面抓取系統(tǒng)的 流程如圖3所示,整個(gè)頁(yè)面抓取系統(tǒng)由URL接收模塊、頁(yè)面信息抓取模塊、公共組件模塊、抓 取結(jié)果傳送模塊以及事件處理模塊組成。URL接收模塊在PC的3001端口上接收由中心調(diào) 度節(jié)點(diǎn)傳來(lái)的URL集合,調(diào)用公共組件模塊中的JSON格式解析方法,將接收到的JSON格式 數(shù)據(jù)解析為URL對(duì)象的集合,并且,將URL對(duì)象集合傳遞給頁(yè)面抓取模塊,調(diào)用頁(yè)面抓取模 塊的getHTMLsO方法。頁(yè)面抓取模塊采用遍歷的方式,單獨(dú)對(duì)待抓取的URL集合中的頁(yè)面 對(duì)象進(jìn)行異步抓取,當(dāng)已抓取的頁(yè)面數(shù)量等于需要抓取的頁(yè)面數(shù)量時(shí),頁(yè)面抓取模塊發(fā)送 頁(yè)面抓取完成事件,事件處理模塊接收到頁(yè)面抓取完成事件后,調(diào)用抓取結(jié)果傳送模塊,將 頁(yè)面抓取的結(jié)果以JSON的格式發(fā)送給中心調(diào)度節(jié)點(diǎn)。以上是頁(yè)面抓取系統(tǒng)一個(gè)完整的抓 取周期,在中心調(diào)度接收完頁(yè)面抓取節(jié)點(diǎn)返回的結(jié)果后,會(huì)將頁(yè)面抓取節(jié)點(diǎn)加入到空閑節(jié) 點(diǎn)列表中,再由URL分配策略,為空閑的頁(yè)面抓取節(jié)點(diǎn)分配URL抓取任務(wù)。
[0023] (2)URL分配的流程如圖4所示。URL分配涉及到URL分配的算法以及中心節(jié)點(diǎn)進(jìn) 行URL分配調(diào)度的流程,圖4給出的是URL分配調(diào)度的流程的描述。在中心節(jié)點(diǎn)中,用來(lái)描 述頁(yè)面抓取服務(wù)器對(duì)象的屬性有頁(yè)面抓取服務(wù)器的地址IP、服務(wù)器抓取URL數(shù)量的基數(shù)k、 服務(wù)器任務(wù)執(zhí)行次數(shù)count、服務(wù)器歷史平均頁(yè)面抓取耗時(shí)t,通過(guò)以上屬性,可以唯一的 標(biāo)識(shí)一個(gè)頁(yè)面抓取服務(wù)器。除了頁(yè)面抓取服務(wù)器列表,中心調(diào)度節(jié)點(diǎn)還需要維護(hù)待抓取URL 列表、空閑頁(yè)面抓取服務(wù)器列表。當(dāng)中心調(diào)度節(jié)點(diǎn)接收完頁(yè)面抓取服務(wù)器傳回的數(shù)據(jù)后,將 該頁(yè)面抓取服務(wù)器加入到空閑頁(yè)面抓取服務(wù)器列表中,同時(shí)觸發(fā)URL分配事件,如果待抓 取URL列表中含有未分配的URL,則URL分配模塊根據(jù)事先選取的URL分配策略,將帶抓取 URL列表中的URL地址分配給空閑頁(yè)面抓取服務(wù)器中的主機(jī)上。如果帶抓取URL列表中不 含有未分配的URL,則等待下次URL分配事件觸發(fā)時(shí),再進(jìn)行URL分配。
[0024] (3)URL分配算法。本發(fā)明通過(guò)橫向和縱向的比較,確定中心節(jié)點(diǎn)分配給特定頁(yè)面 抓取服務(wù)器的URL種子的數(shù)量。橫向比較就是將特定頁(yè)面抓取服務(wù)器與其他抓取服務(wù)器 進(jìn)行比較,從而確定出不同抓取服務(wù)器性能上的差距??v向比較是將頁(yè)面抓取服務(wù)器本次 抓取的耗時(shí)與歷史抓取耗時(shí)相比較,從而消除某些偶然因素對(duì)頁(yè)面抓取服務(wù)器性能上的影 響。
[0025] 假設(shè)count表示邊緣節(jié)點(diǎn)的數(shù)量,&表示第i個(gè)邊緣節(jié)點(diǎn)抓取頁(yè)面的平均耗時(shí),則 有公式
【主權(quán)項(xiàng)】
1. 一種云環(huán)境下分布式網(wǎng)絡(luò)信息采集方法,其特征在于包含以下步驟: 1) 模型的組成:頁(yè)面信息采集子系統(tǒng)、頁(yè)面信息數(shù)據(jù)處理子系統(tǒng); 2) 頁(yè)面信息采集系統(tǒng)創(chuàng)建服務(wù)監(jiān)聽(tīng)端口,接收中心節(jié)點(diǎn)分配的URL集合,當(dāng)接收到中 心節(jié)點(diǎn)分配的URL集合后,觸發(fā)步驟3 ; 3) 頁(yè)面信息采集系統(tǒng)采用異步的方式,對(duì)URL集合中的每個(gè)頁(yè)面進(jìn)行抓取,抓取完成 后,將包含所有頁(yè)面信息的結(jié)果返回給中心節(jié)點(diǎn); 4) 中心節(jié)點(diǎn)將接收到的抓取的結(jié)果放到待處理頁(yè)面集合中,交由云計(jì)算平臺(tái)對(duì)頁(yè)面信 息進(jìn)行處理,并且將頁(yè)面服務(wù)器加入空閑的服務(wù)器列表; 5) 云計(jì)算平臺(tái)提取出頁(yè)面中所有的超鏈接,并且對(duì)超鏈接進(jìn)行過(guò)濾,將過(guò)濾出來(lái)的 URL放入到待分配的URL集合中; 6) 中心節(jié)點(diǎn)根據(jù)未分配的服務(wù)器列表,根據(jù)URL分配的策略,將待分配的URL分配給各 個(gè)頁(yè)面信息采集服務(wù)器,重復(fù)步驟2,直到待分配URL列表為空。
2. 根據(jù)權(quán)利要求1所述的分布式頁(yè)面信息采集模型,其特征在于步驟1中,系統(tǒng)的模型 由1個(gè)云計(jì)算中心以及n個(gè)邊緣節(jié)點(diǎn)組成,在節(jié)點(diǎn)的功能上,邊緣節(jié)點(diǎn)運(yùn)行頁(yè)面信息采集子 系統(tǒng),專(zhuān)門(mén)負(fù)責(zé)頁(yè)面信息的采集,云計(jì)算中心負(fù)責(zé)數(shù)據(jù)的處理、URL集合的分配,在節(jié)點(diǎn)的連 接方式上,呈現(xiàn)出星型的物理結(jié)構(gòu)。
3. 根據(jù)權(quán)利要求1中所述的動(dòng)態(tài)URL分配策略(步驟6中),其特征在于,中心節(jié)點(diǎn)可 以按照不同的邊緣節(jié)點(diǎn)的頁(yè)面抓取效率,在一個(gè)基數(shù)k的基礎(chǔ)上,按照下述公式,為不同的 邊緣節(jié)點(diǎn)分配不同的URL個(gè)數(shù):
其中:count表示邊緣節(jié)點(diǎn)的數(shù)量,表示第i個(gè)邊緣節(jié)點(diǎn)第x次抓取所耗費(fèi)的時(shí)間,n(0) =k〇
【專(zhuān)利摘要】本發(fā)明提供了云環(huán)境下分布式網(wǎng)絡(luò)信息采集方法。其主要包括:對(duì)于頁(yè)面信息的采集,采用星型的分布式采集模型,頁(yè)面信息采集服務(wù)器只負(fù)責(zé)通過(guò)異步的方式采集相關(guān)網(wǎng)頁(yè)的頁(yè)面信息,并將最終的采集結(jié)果返回給云服務(wù)器,頁(yè)面信息的處理則在云端進(jìn)行;關(guān)于待采集的URL的分配方式,云服務(wù)器根據(jù)不同的采集服務(wù)器的歷史采集效率,動(dòng)態(tài)地為不同的頁(yè)面采集服務(wù)器分配不同的任務(wù)個(gè)數(shù),從而盡可能地使各個(gè)頁(yè)面采集服務(wù)器達(dá)到負(fù)載均衡的效果。本發(fā)明提出的分布式網(wǎng)絡(luò)信息采集方法,對(duì)于通用網(wǎng)絡(luò)爬蟲(chóng)和主題網(wǎng)絡(luò)爬蟲(chóng)都適用,可以很好地提高網(wǎng)絡(luò)爬蟲(chóng)的爬行效率以及解決在分布式環(huán)境中網(wǎng)絡(luò)爬蟲(chóng)的負(fù)載均衡問(wèn)題。
【IPC分類(lèi)】G06F17-30
【公開(kāi)號(hào)】CN104699757
【申請(qǐng)?zhí)枴緾N201510020854
【發(fā)明人】張登銀, 于建坤
【申請(qǐng)人】南京郵電大學(xué)
【公開(kāi)日】2015年6月10日
【申請(qǐng)日】2015年1月15日