国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Hadoop的分布式網(wǎng)絡(luò)爬蟲技術(shù)的設(shè)計與實現(xiàn)

2015-05-15 14:30岳雨儉
電腦知識與技術(shù) 2015年8期
關(guān)鍵詞:云計算

岳雨儉

摘要:隨著互聯(lián)網(wǎng)行業(yè)和信息技術(shù)的發(fā)展,Google、IBM和Apache等大型公司紛紛投入去發(fā)展云計算,其中 Apache 開發(fā)的 Hadoop 平臺是一個對用戶極為友好的開源云計算框架。該文就是要基于Hadoop框架去設(shè)計和實現(xiàn)分布式網(wǎng)絡(luò)爬蟲技術(shù),以完成大規(guī)模數(shù)據(jù)的采集,其中采用 Map/Reduce 分布式計算框架和分布式文件系統(tǒng),來解決單機爬蟲效率低、可擴展性差等問題,提高網(wǎng)頁數(shù)據(jù)爬取速度并擴大爬取的規(guī)模。

關(guān)鍵詞:云計算;分布式網(wǎng)絡(luò)爬蟲;Hadoop

中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)08-0036-0c

Abstract: with the rapid development of the Internet industry and information technology, Google, IBM and Apache and other Large Firm are input to the development of cloud computing, in which Apache Hadoop development platform is a very friendly to users of open source cloud computing framework. This paper is based on the Hadoop framework to design and implementation of a distributed web crawler technology, to complete the large-scale data collection, in which the Map/Reduce distributed computing framework and distributed file system, to solve the single crawler low efficiency, poor scalability issues, improve the Webpage crawling speed and expand the scale of crawling.

Key words: cloud computing; distributed web crawler; Hadoop

1 緒論

隨著互聯(lián)網(wǎng)快速的發(fā)展,web信息迅速增長,數(shù)據(jù)量大且種類多,需要把分散的計算機構(gòu)建成一個系統(tǒng)整體,計算機之間分工協(xié)作,減少節(jié)點之間的分散,提高網(wǎng)絡(luò)爬蟲的性能。海量且冗雜的數(shù)據(jù)使得普通的數(shù)據(jù)庫已經(jīng)不能很好地完成存取,但是分布式文件系統(tǒng)為這樣的數(shù)據(jù)存儲提供了強大的支持。且隨著互聯(lián)網(wǎng)中處理海量數(shù)據(jù)的要求不斷增高,云計算就應(yīng)運而生,云計算框架也被運用于眾多的IT行業(yè)中。因此,當(dāng)下對基于Hadoop的分布式網(wǎng)絡(luò)爬蟲技術(shù)的研究也有著巨大的意義。

2 相關(guān)理論與技術(shù)

2.1 云計算

云計算是一種共享的為網(wǎng)絡(luò)提供信息交付的模式,將互聯(lián)網(wǎng)中大量的計算機聯(lián)合起來協(xié)同地提供計算、存儲和軟硬件等服務(wù),為實現(xiàn)超級計算提供了支持。用戶可以充分地利用網(wǎng)絡(luò)聯(lián)系集中的每一臺電腦進行計算或存儲。一般的云計算體系結(jié)構(gòu)如圖1所示:

2.2 Hadoop

Hadoop 的框架結(jié)構(gòu)主要是由分布式文件系統(tǒng)(HDFS)和Map/Reduce 計算模型兩部分組成。其中,Map/Reduce 計算模型是編程模型,如圖2所示是Hadoop的分布式平臺框架。

從圖上可以看出,最底層是物理的計算機節(jié)點,這些節(jié)點通過HDFS聯(lián)系整合到一起;Map/Reduce把任務(wù)分成若干子任務(wù)分配到不同的節(jié)點去實現(xiàn)分布式編程,而不必考慮各節(jié)點之間是如何共同協(xié)作完成的,這樣就減輕了程序員的負(fù)擔(dān)。

3 系統(tǒng)分析與設(shè)計

3.1 系統(tǒng)布局

本系統(tǒng)是基于hadoop的分布式搜索引擎而設(shè)計的,爬蟲技術(shù)是也是引擎中的一部分,系統(tǒng)可以分成搜索引擎和云計算平臺,構(gòu)架如圖3所示:

搜索引擎分為分布式網(wǎng)絡(luò)爬蟲、索引、檢索以及界面展示等模塊,前三個模塊都用到了分布式計算框架來并處處理任務(wù)。分布式搜索引擎的功能模塊如圖4所示:

該引擎的工作過程:首先,數(shù)據(jù)采集模塊需要獲取海量的數(shù)據(jù)作為數(shù)據(jù)源,就要根據(jù)URL鏈接在網(wǎng)絡(luò)中不斷地爬取網(wǎng)頁文件,將這些獲取的文件存儲到HDFS文件系統(tǒng)中,并對這些文件進行解析有效數(shù)據(jù)。然后,利用分詞技術(shù)對文件內(nèi)容進行處理,再將得到的詞串提供給索引模塊并建立索引。當(dāng)用戶通過查詢界面進行關(guān)鍵詞查詢時,依次進行查詢器的初次處理、分詞處理,之后得到關(guān)鍵詞串并將這些關(guān)鍵詞串傳輸?shù)綑z索器,檢索結(jié)果經(jīng)過排序后返回給用戶。

3.2 分布式網(wǎng)絡(luò)爬蟲框架結(jié)構(gòu)設(shè)計

將分布式網(wǎng)絡(luò)爬蟲模塊按照爬蟲流程進行劃分,劃分成五個模塊,分別為:URL分割注入模塊、網(wǎng)頁獲取模塊、網(wǎng)頁解析模塊、鏈接過濾模塊和數(shù)據(jù)存儲模塊。模塊圖如圖5所示:

按照模塊之間的聯(lián)系和功能,并遵循廣度遍歷的爬取要求,本分布式網(wǎng)絡(luò)爬蟲的詳細(xì)流程如圖6所示:

4 分布式爬蟲實現(xiàn)

4.1 爬蟲總體設(shè)計結(jié)構(gòu)

本爬蟲系統(tǒng)在hadoop的基礎(chǔ)上進行開發(fā)的,依照類的不同功能進行劃分,可以分為主類和功能類,關(guān)系圖如圖7所示:

其中,Crawler 類為主類,是整個網(wǎng)絡(luò)爬蟲系統(tǒng)的入口,當(dāng) Crawler 類運行時,就調(diào)用 log4j 記錄爬行的信息并保存到日志中,當(dāng)準(zhǔn)備好所有爬蟲爬取工作后,接著分別調(diào)用五大模塊,分別進行相關(guān)任務(wù)和信息處理。

4.2 功能模塊的實現(xiàn)

1)網(wǎng)頁獲取模塊

URL 分割注入模塊簡單,在此就不冗述,執(zhí)行完URL 分割注入模塊后即進入網(wǎng)頁獲取模塊,此模塊充分利用并行處理計算的能力,是爬蟲的關(guān)鍵部分。此模塊涉及四個類,四個類之間的關(guān)系如圖8所示:

DownPage 類:實現(xiàn) Tool 接口,是網(wǎng)頁獲取模塊的入口,負(fù)責(zé)配置抓取任務(wù)和啟動 Map/Reduce并行處理任務(wù)。

DownloadMapper 類:實現(xiàn)了 Mapper 接口中的 map()函數(shù),即啟動多個 DownloadThread 線程,將映射數(shù)據(jù)作為中間數(shù)據(jù)輸出。

DownloadReducer 類:實現(xiàn)Reducer 接口中的 reduce()函數(shù),即可接收 Map 輸出的中間數(shù)據(jù)并對其進行合并。

DownloadThread 類:繼承java.lang.Thread 類并實現(xiàn)多線程并發(fā)的網(wǎng)頁下載。

2)網(wǎng)頁解析模塊

該網(wǎng)頁解析模塊包括了對不同類型數(shù)據(jù)的解析,首先進行讀取抓獲結(jié)果,然后進行類型判斷,然后對不同的類型進行解析,解析類型包括HTML解析、Doc解析、PDF解析、PPT解析和Excel解析。

與網(wǎng)頁獲取模塊一樣都使用了Map/Reduce 計算模式,由三個類構(gòu)成,分別是HtmlParser 類、ParseMapper 類和ParseReducer 類。 HtmlParser 類實現(xiàn)了tool接口,ParseMapper 類實現(xiàn)Mapper接口,ParseReducer 類實現(xiàn)reducer接口,其具體工作實現(xiàn)和網(wǎng)頁獲取模塊類似。

3)鏈接去重過濾模塊

由于檢索到的網(wǎng)頁中有很多是不合乎標(biāo)準(zhǔn)規(guī)范的鏈接,必須對這些鏈接進行相應(yīng)處理,對不標(biāo)準(zhǔn)的鏈接進行規(guī)范化處理,對重復(fù)的鏈接進行去重處理。每一個過濾模塊都包含這兩個功能,且由單獨的過濾器實現(xiàn)。其中規(guī)范化過濾是先把所有的字符串進行大小寫統(tǒng)一轉(zhuǎn)換,即大寫轉(zhuǎn)換為小寫,然后刪除無意義的字符。

4)數(shù)據(jù)存儲更新模塊

Hadoop 的文件系統(tǒng)HDFS是一個可以滿足使數(shù)據(jù)存儲在穩(wěn)定且可以并發(fā)訪問的系統(tǒng),此模塊包含三個類,分別是類 Update、類 URLInfo和類 HTMLPage。數(shù)據(jù)庫的讀寫操作封裝在update類中,類 URLInfo和類 HTMLPage實現(xiàn)Comparable 接口和readFields 、 write 方法。

5 總結(jié)

本文先從目前的海量數(shù)據(jù)搜索入手,闡述基于Hadoop 平臺的分布式爬蟲研究現(xiàn)狀和研究意義,再而研究分析了與此相關(guān)的技術(shù)和理論,并提出了該爬蟲技術(shù)的整體布局設(shè)計,并對系統(tǒng)的模塊進行了劃分,并對各模塊的功能設(shè)計進行實現(xiàn),用java語言實現(xiàn)了該分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的開發(fā)。

參考文獻:

[1] 陳俊,陳孝威.基于 Hadoop 建立云計算系統(tǒng)[J].貴州大學(xué)學(xué)報 (自然科學(xué)版),2011, 28(3).

[2] 程錦佳.基于 Hadoop 的分布式爬蟲及其實現(xiàn)[D].北京郵電大學(xué),2010.

[3] Evangelinos C, Hill C. Cloud Computing for parallel Scientific HPC Applications: Feasibility of running Coupled Atmosphere-Ocean Climate Models on Amazons EC2[J]. ratio,2008,2(2.40):2.34.

[4] 王俊生,施運梅,張仰森.基于 Hadoop 的分布式搜索引擎關(guān)鍵技術(shù)[J].北京信息科技大學(xué)學(xué)報(自然科學(xué)版),2011,04:53-56+61.

[5] IBM CLOUD [EB/OL].http://www.ibm.com/cloud-computing/us/en/

猜你喜歡
云計算
實驗云:理論教學(xué)與實驗教學(xué)深度融合的助推器