王皎 呼明亮
摘要:針對(duì)當(dāng)前用戶難以快速準(zhǔn)確地獲取到自己需要的網(wǎng)絡(luò)信息,設(shè)計(jì)了基于Hadoop云計(jì)算平臺(tái)的資源搜索系統(tǒng),并對(duì)該搜索系統(tǒng)進(jìn)行了實(shí)驗(yàn)驗(yàn)證,結(jié)果表明,隨著數(shù)據(jù)量的不斷增大,Hadoop版本系統(tǒng)節(jié)約的時(shí)間越多,優(yōu)勢(shì)越明顯。
關(guān)鍵詞:云計(jì)算;資源搜索系統(tǒng);Hadoop;MapReduce
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)19-4463-03
Implementation of Resource Searching System Based on Hadoop
WANG Jiao, HU Ming-liang
(Xi'an Aeronautics Computing Technique Research Institute,AVIC,Xi'an 710065,China)
Abstract: Aiming at the current user can not quickly and accurately access to network information, A resource search system based on Hadoop is designed, The search system is verified by the experiment ,and the test shows that the Hadoop system is to save time with the increase of data quantity.
Key words: cloud computing; Resource Searching System; Hadoop; MapReduce
互聯(lián)網(wǎng)的出現(xiàn)改變了我們的工作,學(xué)習(xí)乃至生活方式,其豐富的資源為我們提供了大量的信息,然而由于缺乏行之有效的整合標(biāo)準(zhǔn)和手段,目前這些資源的分布呈現(xiàn)高度分散狀態(tài),內(nèi)容龐雜無序,結(jié)構(gòu)化程度低,用戶往往難以快速準(zhǔn)確地獲取自己需信息。所以研究和設(shè)計(jì)出針對(duì)資源搜索的系統(tǒng)平臺(tái),以提高用戶獲取資源信息的速度和準(zhǔn)確度有著非常重要的意義。而Hadoop作為新一代的分布式計(jì)算框架,非常有利于處理“網(wǎng)絡(luò)大數(shù)據(jù)”。中國(guó)電信、中國(guó)移動(dòng)、淘寶、Facebook 和Yahoo均有成功應(yīng)用。
1 Hadoop概述
Apache Hadoop 是一個(gè)用java語言實(shí)現(xiàn)的軟件框架,在由大量計(jì)算機(jī)組成的集群中運(yùn)行海量數(shù)據(jù)的分布式計(jì)算,由pig,HIVE,Chukwa,ZooKeeper,HBASE,MAPreduce,HDFS等組成。如圖1所示。本資源搜索系統(tǒng)主要使用了HDFS,HBASE,MAPreduce。
1.1 Hadoop體系架構(gòu)
圖1 Hadoop體系架構(gòu)
1.2 HDFS——分布式文件系統(tǒng)
HDFS是一個(gè)高度容錯(cuò)性的分布式文件系統(tǒng),能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用,其主要由Client、DataNode和NameNode三部分組成,其中,Client是面向用戶的分布式文件系統(tǒng)應(yīng)用程序;DataNode是存儲(chǔ)在本地文件系統(tǒng)中的文件塊單元,在存儲(chǔ)文件塊的meta-data的同時(shí),向NameNode周期發(fā)送所存儲(chǔ)的文件塊信息;NameNode是分布式文件系統(tǒng)中的管理者,負(fù)責(zé)管理文件系統(tǒng)的存儲(chǔ)塊復(fù)制,集群配置信息,命名空間等。
1.3 MapReduce——映射、化簡(jiǎn)編程模型
MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。Map(映射)和Reduce(化簡(jiǎn)),采用分而治之思想,先把任務(wù)分發(fā)到集群多個(gè)節(jié)點(diǎn)上,并行計(jì)算,然后再把計(jì)算結(jié)果合并,從而得到最終計(jì)算結(jié)果。多節(jié)點(diǎn)計(jì)算,所涉及的任務(wù)調(diào)度、負(fù)載均衡、容錯(cuò)處理等,都由MapReduce框架完成。
1.4 HBASE——分布式數(shù)據(jù)存儲(chǔ)
HBase— Hadoop Database,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng);HBase位于結(jié)構(gòu)化存儲(chǔ)層,HDFS為HBase提供了高可靠性的底層存儲(chǔ)支持,MapReduce為HBase提供了高性能的計(jì)算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機(jī)制;Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理變的簡(jiǎn)單。
2 系統(tǒng)設(shè)計(jì)
2.1系統(tǒng)體系結(jié)構(gòu)
圖2 系統(tǒng)體系結(jié)構(gòu)圖
在Browser/Server三層體系結(jié)構(gòu)下,為了真正實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)、計(jì)算、用戶體驗(yàn)的分離,將資源搜索系統(tǒng)分成三個(gè)獨(dú)立的層。分別是數(shù)據(jù)存儲(chǔ)層、邏輯層、表示層。
1) 數(shù)據(jù)存儲(chǔ)計(jì)算層:該層由Hadoop平臺(tái)實(shí)現(xiàn),選用Hadoop組件中的HBase作為存儲(chǔ)數(shù)據(jù)庫,實(shí)現(xiàn)分布式數(shù)據(jù)存儲(chǔ),該層主要是負(fù)責(zé)存儲(chǔ)整個(gè)搜索引擎的底層結(jié)構(gòu)化數(shù)據(jù),主要包括兩個(gè)大規(guī)模的數(shù)據(jù)庫,一是面向客戶查詢的信息的讀取,二是面向爬蟲所得頁面與抽取信息的寫入;為了提高存儲(chǔ)Capacity和計(jì)算效率,在Hadoop平臺(tái)中選擇多個(gè)數(shù)據(jù)節(jié)點(diǎn)DataNode。
2) 邏輯層:該層是實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)計(jì)算層與表示層的紐帶,對(duì)關(guān)鍵算法(如搜索算法、聚焦爬蟲等)的設(shè)計(jì)至關(guān)重要,在設(shè)計(jì)中,特別要考慮算法的可擴(kuò)展性、可重用性、可維護(hù)性和健壯性等。
3) 表示層:該層是實(shí)現(xiàn)系統(tǒng)與用戶的一個(gè)人機(jī)接口,可以生成用戶訪問的Web頁面,向普通用戶提供查詢界面,向管理員提供后臺(tái)服務(wù)頁面。
2.2 數(shù)據(jù)整合設(shè)計(jì)
Hadoop云計(jì)算平臺(tái)是利用MapReduce進(jìn)行切分和整合數(shù)據(jù),MapReduce對(duì)數(shù)據(jù)進(jìn)行整合的邏輯模型如圖3所示。
圖3 MapReduce 的邏輯模型圖
在進(jìn)行MapReduce操作時(shí),首先對(duì)MapReduce程序運(yùn)行前的參數(shù)進(jìn)行配置,根據(jù)輸入數(shù)據(jù)的大小和參數(shù)的設(shè)置把數(shù)據(jù)分成M個(gè)分段, 每個(gè)分段對(duì)應(yīng)一個(gè)map線程;然后,編寫Map函數(shù),將分段中的數(shù)據(jù)作為Map的輸入,實(shí)現(xiàn)[Map:(in_key,in_value)->{(keyj,valuej)|j=0...M-1}];接著, Map的輸出到Reduce,在map端完成內(nèi)存→排序→寫入磁盤→復(fù)制,在reduce端完成映射到reduce端分區(qū)→合并→排序;最后,將排好序的key/value作為Reduce的輸入,經(jīng)過Reduce計(jì)算輸出結(jié)果,實(shí)現(xiàn)[Reduce:(key,[value1,...,valuem])->(key,final_value)|j=0...R-1}]。
如在計(jì)算URL訪問頻率中,Map函數(shù)首先處理日志中web頁面請(qǐng)求的記錄,然后輸出(URL,1),Reduce函數(shù)把相同URL的value值都累加起來,產(chǎn)生(URL,記錄總數(shù))結(jié)果。
2.3 網(wǎng)絡(luò)爬蟲設(shè)計(jì)
網(wǎng)絡(luò)爬蟲是一種自動(dòng)搜集互聯(lián)網(wǎng)信息的程序,通過實(shí)現(xiàn)爬蟲程序,可以搜集某一站點(diǎn)的URLs(網(wǎng)頁地址),并將搜集到的URLs存入數(shù)據(jù)庫,其不僅能夠?yàn)樗阉饕娌杉W(wǎng)絡(luò)信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等;系統(tǒng)采用開?源?網(wǎng)?絡(luò)?蜘?蛛?(?S?p?i?d?e?r?)?,SPIDER工作過程如圖4所示。采集中每遇到一個(gè)頁面,都需要判斷該頁面的URL是否已發(fā)現(xiàn)的url,若不是新發(fā)現(xiàn)的url,則將其丟棄;否則將它放入待采集url隊(duì)列。系統(tǒng)采用美國(guó)哈佛大學(xué)教授拉賓(Rabin)提出的Rabin指紋算法。
1) 假設(shè)[A([吧 b1,b2…,bm ])]是包含m個(gè)二進(jìn)制字符的二進(jìn)制字符串,那么可以根據(jù)A構(gòu)造相應(yīng)的(m-1)度的多項(xiàng)式如下,其中t是不定元,即:
[A(t)=b1tm-1+b2tm-2+...bm-1t+bm] (1)
給定一個(gè)度為k的多項(xiàng)式P(t):
[p(t)=a1tk+a2tk-1+...+ak-1t+ak] (2)
那么A(t)除以P(t)的余數(shù)f(t)的度數(shù)為(k-1),對(duì)于給定的字符串A,定義A的指紋f(A)如下:
[f(A)=A(t)mod P(t)] (3)
如果字符串A的指紋不同于字符串B的指紋,那么字符串A也不同于字符串B:f(A)≠f(B)=>A≠B 。
2) 構(gòu)造向量[(x0,x1...xi...xn)] [xi=0,1,2,...n] 其中[i]為整數(shù)且[i∈0,max(rabincode)],初始值都設(shè)置為0,然后用Rabin算法計(jì)算url的指紋,并將得到的二進(jìn)制序列映射成整數(shù)i,最后用i作為向量的下標(biāo)判斷[xi]的值,如果 [xi=0],則此url未被訪問過,將[xi]的值設(shè)置為1;如果[xi=1],則此url已經(jīng)被訪問過,將其丟棄。
3 實(shí)驗(yàn)與數(shù)據(jù)分析
3.1 開發(fā)平臺(tái)及其開發(fā)工具
為了測(cè)試所設(shè)計(jì)的基于Hadoop云計(jì)算平臺(tái)的資源搜索系統(tǒng)的性能,在實(shí)驗(yàn)中搭建了Hadoop集群, Hadoop集群采用4臺(tái)服務(wù)器,分別是3臺(tái)Datanode和1臺(tái)Namenode,Client通過Namenode來提交數(shù)據(jù)。4臺(tái)集群服務(wù)器配置信息為linux(CentOS 5.4) +Hadoop(0.20.2) +Java (Version 1.6.0_17) +CPU(Intel 酷睿2 雙核 E7500 @2.93GHz)+NetWork(NetLink BCM5784M Gigabit Ethernet)+Memory 2G(Hard Disk 320G/7200)。
3.2 實(shí)驗(yàn)結(jié)果分析
表1 Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)測(cè)試數(shù)據(jù)
[數(shù)據(jù)量(萬)\&基于Hadoop平臺(tái)(秒)\&Oracle單機(jī)測(cè)試(秒)\&節(jié)約時(shí)間(秒)\&10\&1.0\&0.9\&0.1\&500\&3.0\&7.7\&4.7\&1000\&10.2\&30\&18.8\&2000\&15\&49\&34\&5000\&21\&84\&63\&]
實(shí)驗(yàn)結(jié)果表明:數(shù)據(jù)量小的時(shí)候(10萬),Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)差不多,而數(shù)據(jù)量很大的時(shí)候(5000萬),Hadoop版本系統(tǒng)比Oracle系統(tǒng)節(jié)約很多時(shí)間,這說明隨著數(shù)據(jù)量的不斷增大,Hadoop版本系統(tǒng)節(jié)約的時(shí)間越多,優(yōu)勢(shì)越明顯。
(下轉(zhuǎn)第4480頁)
(上接第4465頁)
4 結(jié)束語
隨著Internet的迅猛發(fā)展,傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)難以滿足Internet數(shù)據(jù)的爆炸式增長(zhǎng),新的分布式數(shù)據(jù)處理技術(shù)也日益成熟,其取代傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)成為必然,在當(dāng)前的海量處理和存儲(chǔ)技術(shù)中,Hadoop平臺(tái)成為云計(jì)算的首選,基于此,結(jié)合資源垂直搜索領(lǐng)域,使用Hadoop分布式平臺(tái)設(shè)計(jì)出搜索效率、準(zhǔn)確率較高的資源搜索引擎,具有十分重要的意義。
參考文獻(xiàn):
[1] 江建舉.基于 Hadoop 平臺(tái)的海量文件存儲(chǔ)策略研究[J].深圳職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014(3).
[2] 張艷.基于Hadoop的數(shù)字圖書館云檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].圖書館理論與實(shí)踐,2014(4).
[3] 解慧娟.MapReduce在Hadoop平臺(tái)下作業(yè)調(diào)度算法的改進(jìn)和實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(14).
[4] 侯青.基于Hadoop的校園教育資源管理系統(tǒng)[J].電腦知識(shí)與技術(shù),2014(1).
3) 表示層:該層是實(shí)現(xiàn)系統(tǒng)與用戶的一個(gè)人機(jī)接口,可以生成用戶訪問的Web頁面,向普通用戶提供查詢界面,向管理員提供后臺(tái)服務(wù)頁面。
2.2 數(shù)據(jù)整合設(shè)計(jì)
Hadoop云計(jì)算平臺(tái)是利用MapReduce進(jìn)行切分和整合數(shù)據(jù),MapReduce對(duì)數(shù)據(jù)進(jìn)行整合的邏輯模型如圖3所示。
圖3 MapReduce 的邏輯模型圖
在進(jìn)行MapReduce操作時(shí),首先對(duì)MapReduce程序運(yùn)行前的參數(shù)進(jìn)行配置,根據(jù)輸入數(shù)據(jù)的大小和參數(shù)的設(shè)置把數(shù)據(jù)分成M個(gè)分段, 每個(gè)分段對(duì)應(yīng)一個(gè)map線程;然后,編寫Map函數(shù),將分段中的數(shù)據(jù)作為Map的輸入,實(shí)現(xiàn)[Map:(in_key,in_value)->{(keyj,valuej)|j=0...M-1}];接著, Map的輸出到Reduce,在map端完成內(nèi)存→排序→寫入磁盤→復(fù)制,在reduce端完成映射到reduce端分區(qū)→合并→排序;最后,將排好序的key/value作為Reduce的輸入,經(jīng)過Reduce計(jì)算輸出結(jié)果,實(shí)現(xiàn)[Reduce:(key,[value1,...,valuem])->(key,final_value)|j=0...R-1}]。
如在計(jì)算URL訪問頻率中,Map函數(shù)首先處理日志中web頁面請(qǐng)求的記錄,然后輸出(URL,1),Reduce函數(shù)把相同URL的value值都累加起來,產(chǎn)生(URL,記錄總數(shù))結(jié)果。
2.3 網(wǎng)絡(luò)爬蟲設(shè)計(jì)
網(wǎng)絡(luò)爬蟲是一種自動(dòng)搜集互聯(lián)網(wǎng)信息的程序,通過實(shí)現(xiàn)爬蟲程序,可以搜集某一站點(diǎn)的URLs(網(wǎng)頁地址),并將搜集到的URLs存入數(shù)據(jù)庫,其不僅能夠?yàn)樗阉饕娌杉W(wǎng)絡(luò)信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等;系統(tǒng)采用開?源?網(wǎng)?絡(luò)?蜘?蛛?(?S?p?i?d?e?r?)?,SPIDER工作過程如圖4所示。采集中每遇到一個(gè)頁面,都需要判斷該頁面的URL是否已發(fā)現(xiàn)的url,若不是新發(fā)現(xiàn)的url,則將其丟棄;否則將它放入待采集url隊(duì)列。系統(tǒng)采用美國(guó)哈佛大學(xué)教授拉賓(Rabin)提出的Rabin指紋算法。
1) 假設(shè)[A([吧 b1,b2…,bm ])]是包含m個(gè)二進(jìn)制字符的二進(jìn)制字符串,那么可以根據(jù)A構(gòu)造相應(yīng)的(m-1)度的多項(xiàng)式如下,其中t是不定元,即:
[A(t)=b1tm-1+b2tm-2+...bm-1t+bm] (1)
給定一個(gè)度為k的多項(xiàng)式P(t):
[p(t)=a1tk+a2tk-1+...+ak-1t+ak] (2)
那么A(t)除以P(t)的余數(shù)f(t)的度數(shù)為(k-1),對(duì)于給定的字符串A,定義A的指紋f(A)如下:
[f(A)=A(t)mod P(t)] (3)
如果字符串A的指紋不同于字符串B的指紋,那么字符串A也不同于字符串B:f(A)≠f(B)=>A≠B 。
2) 構(gòu)造向量[(x0,x1...xi...xn)] [xi=0,1,2,...n] 其中[i]為整數(shù)且[i∈0,max(rabincode)],初始值都設(shè)置為0,然后用Rabin算法計(jì)算url的指紋,并將得到的二進(jìn)制序列映射成整數(shù)i,最后用i作為向量的下標(biāo)判斷[xi]的值,如果 [xi=0],則此url未被訪問過,將[xi]的值設(shè)置為1;如果[xi=1],則此url已經(jīng)被訪問過,將其丟棄。
3 實(shí)驗(yàn)與數(shù)據(jù)分析
3.1 開發(fā)平臺(tái)及其開發(fā)工具
為了測(cè)試所設(shè)計(jì)的基于Hadoop云計(jì)算平臺(tái)的資源搜索系統(tǒng)的性能,在實(shí)驗(yàn)中搭建了Hadoop集群, Hadoop集群采用4臺(tái)服務(wù)器,分別是3臺(tái)Datanode和1臺(tái)Namenode,Client通過Namenode來提交數(shù)據(jù)。4臺(tái)集群服務(wù)器配置信息為linux(CentOS 5.4) +Hadoop(0.20.2) +Java (Version 1.6.0_17) +CPU(Intel 酷睿2 雙核 E7500 @2.93GHz)+NetWork(NetLink BCM5784M Gigabit Ethernet)+Memory 2G(Hard Disk 320G/7200)。
3.2 實(shí)驗(yàn)結(jié)果分析
表1 Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)測(cè)試數(shù)據(jù)
[數(shù)據(jù)量(萬)\&基于Hadoop平臺(tái)(秒)\&Oracle單機(jī)測(cè)試(秒)\&節(jié)約時(shí)間(秒)\&10\&1.0\&0.9\&0.1\&500\&3.0\&7.7\&4.7\&1000\&10.2\&30\&18.8\&2000\&15\&49\&34\&5000\&21\&84\&63\&]
實(shí)驗(yàn)結(jié)果表明:數(shù)據(jù)量小的時(shí)候(10萬),Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)差不多,而數(shù)據(jù)量很大的時(shí)候(5000萬),Hadoop版本系統(tǒng)比Oracle系統(tǒng)節(jié)約很多時(shí)間,這說明隨著數(shù)據(jù)量的不斷增大,Hadoop版本系統(tǒng)節(jié)約的時(shí)間越多,優(yōu)勢(shì)越明顯。
(下轉(zhuǎn)第4480頁)
(上接第4465頁)
4 結(jié)束語
隨著Internet的迅猛發(fā)展,傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)難以滿足Internet數(shù)據(jù)的爆炸式增長(zhǎng),新的分布式數(shù)據(jù)處理技術(shù)也日益成熟,其取代傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)成為必然,在當(dāng)前的海量處理和存儲(chǔ)技術(shù)中,Hadoop平臺(tái)成為云計(jì)算的首選,基于此,結(jié)合資源垂直搜索領(lǐng)域,使用Hadoop分布式平臺(tái)設(shè)計(jì)出搜索效率、準(zhǔn)確率較高的資源搜索引擎,具有十分重要的意義。
參考文獻(xiàn):
[1] 江建舉.基于 Hadoop 平臺(tái)的海量文件存儲(chǔ)策略研究[J].深圳職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014(3).
[2] 張艷.基于Hadoop的數(shù)字圖書館云檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].圖書館理論與實(shí)踐,2014(4).
[3] 解慧娟.MapReduce在Hadoop平臺(tái)下作業(yè)調(diào)度算法的改進(jìn)和實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(14).
[4] 侯青.基于Hadoop的校園教育資源管理系統(tǒng)[J].電腦知識(shí)與技術(shù),2014(1).
3) 表示層:該層是實(shí)現(xiàn)系統(tǒng)與用戶的一個(gè)人機(jī)接口,可以生成用戶訪問的Web頁面,向普通用戶提供查詢界面,向管理員提供后臺(tái)服務(wù)頁面。
2.2 數(shù)據(jù)整合設(shè)計(jì)
Hadoop云計(jì)算平臺(tái)是利用MapReduce進(jìn)行切分和整合數(shù)據(jù),MapReduce對(duì)數(shù)據(jù)進(jìn)行整合的邏輯模型如圖3所示。
圖3 MapReduce 的邏輯模型圖
在進(jìn)行MapReduce操作時(shí),首先對(duì)MapReduce程序運(yùn)行前的參數(shù)進(jìn)行配置,根據(jù)輸入數(shù)據(jù)的大小和參數(shù)的設(shè)置把數(shù)據(jù)分成M個(gè)分段, 每個(gè)分段對(duì)應(yīng)一個(gè)map線程;然后,編寫Map函數(shù),將分段中的數(shù)據(jù)作為Map的輸入,實(shí)現(xiàn)[Map:(in_key,in_value)->{(keyj,valuej)|j=0...M-1}];接著, Map的輸出到Reduce,在map端完成內(nèi)存→排序→寫入磁盤→復(fù)制,在reduce端完成映射到reduce端分區(qū)→合并→排序;最后,將排好序的key/value作為Reduce的輸入,經(jīng)過Reduce計(jì)算輸出結(jié)果,實(shí)現(xiàn)[Reduce:(key,[value1,...,valuem])->(key,final_value)|j=0...R-1}]。
如在計(jì)算URL訪問頻率中,Map函數(shù)首先處理日志中web頁面請(qǐng)求的記錄,然后輸出(URL,1),Reduce函數(shù)把相同URL的value值都累加起來,產(chǎn)生(URL,記錄總數(shù))結(jié)果。
2.3 網(wǎng)絡(luò)爬蟲設(shè)計(jì)
網(wǎng)絡(luò)爬蟲是一種自動(dòng)搜集互聯(lián)網(wǎng)信息的程序,通過實(shí)現(xiàn)爬蟲程序,可以搜集某一站點(diǎn)的URLs(網(wǎng)頁地址),并將搜集到的URLs存入數(shù)據(jù)庫,其不僅能夠?yàn)樗阉饕娌杉W(wǎng)絡(luò)信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等;系統(tǒng)采用開?源?網(wǎng)?絡(luò)?蜘?蛛?(?S?p?i?d?e?r?)?,SPIDER工作過程如圖4所示。采集中每遇到一個(gè)頁面,都需要判斷該頁面的URL是否已發(fā)現(xiàn)的url,若不是新發(fā)現(xiàn)的url,則將其丟棄;否則將它放入待采集url隊(duì)列。系統(tǒng)采用美國(guó)哈佛大學(xué)教授拉賓(Rabin)提出的Rabin指紋算法。
1) 假設(shè)[A([吧 b1,b2…,bm ])]是包含m個(gè)二進(jìn)制字符的二進(jìn)制字符串,那么可以根據(jù)A構(gòu)造相應(yīng)的(m-1)度的多項(xiàng)式如下,其中t是不定元,即:
[A(t)=b1tm-1+b2tm-2+...bm-1t+bm] (1)
給定一個(gè)度為k的多項(xiàng)式P(t):
[p(t)=a1tk+a2tk-1+...+ak-1t+ak] (2)
那么A(t)除以P(t)的余數(shù)f(t)的度數(shù)為(k-1),對(duì)于給定的字符串A,定義A的指紋f(A)如下:
[f(A)=A(t)mod P(t)] (3)
如果字符串A的指紋不同于字符串B的指紋,那么字符串A也不同于字符串B:f(A)≠f(B)=>A≠B 。
2) 構(gòu)造向量[(x0,x1...xi...xn)] [xi=0,1,2,...n] 其中[i]為整數(shù)且[i∈0,max(rabincode)],初始值都設(shè)置為0,然后用Rabin算法計(jì)算url的指紋,并將得到的二進(jìn)制序列映射成整數(shù)i,最后用i作為向量的下標(biāo)判斷[xi]的值,如果 [xi=0],則此url未被訪問過,將[xi]的值設(shè)置為1;如果[xi=1],則此url已經(jīng)被訪問過,將其丟棄。
3 實(shí)驗(yàn)與數(shù)據(jù)分析
3.1 開發(fā)平臺(tái)及其開發(fā)工具
為了測(cè)試所設(shè)計(jì)的基于Hadoop云計(jì)算平臺(tái)的資源搜索系統(tǒng)的性能,在實(shí)驗(yàn)中搭建了Hadoop集群, Hadoop集群采用4臺(tái)服務(wù)器,分別是3臺(tái)Datanode和1臺(tái)Namenode,Client通過Namenode來提交數(shù)據(jù)。4臺(tái)集群服務(wù)器配置信息為linux(CentOS 5.4) +Hadoop(0.20.2) +Java (Version 1.6.0_17) +CPU(Intel 酷睿2 雙核 E7500 @2.93GHz)+NetWork(NetLink BCM5784M Gigabit Ethernet)+Memory 2G(Hard Disk 320G/7200)。
3.2 實(shí)驗(yàn)結(jié)果分析
表1 Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)測(cè)試數(shù)據(jù)
[數(shù)據(jù)量(萬)\&基于Hadoop平臺(tái)(秒)\&Oracle單機(jī)測(cè)試(秒)\&節(jié)約時(shí)間(秒)\&10\&1.0\&0.9\&0.1\&500\&3.0\&7.7\&4.7\&1000\&10.2\&30\&18.8\&2000\&15\&49\&34\&5000\&21\&84\&63\&]
實(shí)驗(yàn)結(jié)果表明:數(shù)據(jù)量小的時(shí)候(10萬),Hadoop版本系統(tǒng)和Oracle系統(tǒng)耗時(shí)差不多,而數(shù)據(jù)量很大的時(shí)候(5000萬),Hadoop版本系統(tǒng)比Oracle系統(tǒng)節(jié)約很多時(shí)間,這說明隨著數(shù)據(jù)量的不斷增大,Hadoop版本系統(tǒng)節(jié)約的時(shí)間越多,優(yōu)勢(shì)越明顯。
(下轉(zhuǎn)第4480頁)
(上接第4465頁)
4 結(jié)束語
隨著Internet的迅猛發(fā)展,傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)難以滿足Internet數(shù)據(jù)的爆炸式增長(zhǎng),新的分布式數(shù)據(jù)處理技術(shù)也日益成熟,其取代傳統(tǒng)單機(jī)處理數(shù)據(jù)的方式已經(jīng)成為必然,在當(dāng)前的海量處理和存儲(chǔ)技術(shù)中,Hadoop平臺(tái)成為云計(jì)算的首選,基于此,結(jié)合資源垂直搜索領(lǐng)域,使用Hadoop分布式平臺(tái)設(shè)計(jì)出搜索效率、準(zhǔn)確率較高的資源搜索引擎,具有十分重要的意義。
參考文獻(xiàn):
[1] 江建舉.基于 Hadoop 平臺(tái)的海量文件存儲(chǔ)策略研究[J].深圳職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014(3).
[2] 張艷.基于Hadoop的數(shù)字圖書館云檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].圖書館理論與實(shí)踐,2014(4).
[3] 解慧娟.MapReduce在Hadoop平臺(tái)下作業(yè)調(diào)度算法的改進(jìn)和實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(14).
[4] 侯青.基于Hadoop的校園教育資源管理系統(tǒng)[J].電腦知識(shí)與技術(shù),2014(1).