




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于Hadoop分布式爬蟲設計綜述摘要:由于Internet規模不斷擴大,包羅萬象的信息資源被連接在一起,形成了一個廣闊宏大的信息空間在這個空間中,存在著海量的信息,如何快速高效和安全地讓網絡用戶在如此浩瀚的信息海洋之中找到并獲取自己所需的資源,是當前互聯網發展的最大挑戰之一。如今,云計算已成為當前的重要趨勢之一。本文主要闡述在Hadoop分布式文件系統HDFS以及分布式計算框架MapReduce的基礎上開發的分布式搜索引擎的爬蟲設計相關技術、原理、流程圖。關鍵詞:云計算 分布式爬蟲 Hadoop 搜索引擎1 引言隨著搜索引擎的發展,搜索引擎所采用的技術也隨之變得豐富和多樣化,能夠適應不同搜索
2、用戶以及不同搜索目的的需要。目前,搜索引擎的性能指標主要有三個:首先考慮的是規模的大小,只有規模達到一定的數量級,用戶搜索結果的符合度才能夠達到滿足不同用戶的需求程度;其次是性能,搜索引擎的網絡蜘蛛必須在一個較短的時間內完成對目標網絡的信息搜索,同時,能夠在用戶可容忍的時間段內,完成搜索結果的反饋;最后是搜索的質量,能夠去掉信息重復的網頁,對一些無用信息進行過濾,能夠準確返回用戶想要的結果。如何從龐大的資料庫中找到正確的資料,被公認為是下一代搜索技術的競爭要點要對海量的信息進行檢索,單單依靠單臺計算機的處理能力遠遠不夠,即使硬件的發展速度很快,但是根本趕不上信息的增長速度。而若采用集群計算機實
3、現,雖然可以解決處理速度問題,但由于從網絡的整體上看,該集群仍是一個結點,會嚴重受制于網絡帶寬,因此,需要采用多臺計算機進行分布式協同處理。分布式搜索引擎是通過網絡把大范圍的分布、異構數據集聯合起來,形成一個邏輯整體,為用戶提供分布式的信息檢索服務。同傳統搜索引擎相比,分布式搜索引擎有以下優點:1)各檢索服務器之間協同工作,每個服務器只搜索自身自治區域內的信息資源,彼此之間只傳遞搜索結果信息,加快了檢索速度,減輕網絡及各站點的負擔;2)與網絡資源本身的分布式特性相適應,增加搜索服務器方便,有良好的可擴展性;3)索引信息化分到各個數據庫中,使得各索引數據庫規模小,易于管理,縮短查詢響應時間。當今
4、,大型網站的用戶多,參與度廣。因此,如何有效地為如此巨大的用戶群體服務,讓他們參與時能夠享受方便、快捷的服務,成為這些網站不得不解決的一個問題。而與此同時,憑借Google文件系統搭建起來Google服務器群,為Google提供強大的搜索速度與處理能力。于是,如何有效利用這些這種技術,為更多的企業或個人提供強大的計算能力與多種多樣的服務,就是像Google這樣擁有巨大服務器資源的企業在考慮的問題。正是因為一方對計算能力的需求,而另一方能夠提供這樣的計算能力,云計算就應運而生。wikipedia關于云計算的定義為云計算是網格計算下的一種新的標簽,它使用公用計算或其它方法來共享計算資源。云計算是依
5、靠本機服務器或個人設備來處理用戶應用程序之外的另一種選擇。目前,包括Google、微軟、IBM、Amazon、EMC和惠普在內的許多IT業巨頭都宣布要在云計算上進行重點研究,也有了一些供企業使用的云計算案例。目前,最著名的云計算基礎設施是由Google提出來的。Google使用的云計算基礎設施模式1包括四個相互獨立又緊密結合在一起的系統,其包括Google建立在集群之上的文件系統GFs(GooogleFilesystem)2,針對Google應用程序的特點提出的MapReduce3編程模式,分布式的鎖機制Chubby以及Google開發的模型簡化的大規模分布式數據庫BigTable4。本文就是
6、在Hadoop云計算平臺的基礎上完成的,闡述了在Hadoop分布式平臺的基礎上搭建分布式爬蟲的相關研究。2 分布式爬蟲技術背景 2.1 云計算云計算是一種全新的網絡服務方式,其將傳統的以桌面為核心的任務處理轉變為以網絡為核心的任務處理,它利用網絡實現自己想要完成的一切處理任務,使網絡成為傳遞服務、計算力和信息的綜合連接,真正實現按需計算、多人協作。其基本原理為:利用非本地或遠程服務器(集群)的分布式計算機,為互聯網用戶提供服務(計算、存儲、軟硬件等服務),這使得用戶可以將資源切換到需要的應用上,根據需求訪問計算機和存儲系統,從而降低成本。云計算真正實現了按需計算,從而有效地提高了對軟硬件資源的
7、利用效。通常,云計算(Cloudcomputing)是分布式處理(Distributed Computing)、并行處理(Parallel ComPuting)和網格計算(Gridcomputing)的改進處理,其前身是利用并行計算解決大型問題的網格計算和將計算資源作為可計量的服務而提供的公用計算。2.2 Hadoop 分布式平臺結構Hadoop是大名鼎鼎的Lucene旗下的子項目,它原先是Nutch項目的組成部分,于2006年初從Nutch中分離出來成為一個獨立的項目。Hadoop其實并非一個單純用于存儲的分布式文件系統,而是一個被設計用來在由普通硬件設備組成的大型集群上執行分布式應用的框架
8、(framework)。與前面提到的Google框架類似,Hadoop分布式平臺結構包括兩部分:(l)分布式文件系統HDFS(Hadoop Distributed File System):用來在各個計算節點上存儲數據,并提供了對數據讀寫的高吞吐率和容錯性;(2)類似于Google的Map/Reduce計算框架,它能夠把應用程序分割成許多很小的工作單元,每個單元可以在任何集群節點上執行或重復執行??梢?Map/Reduce是一種簡化的分布式編程模式,以讓程序可以自動在普通機器組成的集群中以并行方式分布執行。因此,Hadoop的目標是為開發分布式應用提供一個框架,而不是像OpenAFS,Coda
9、那樣為存儲提供一個分布式文件系統。搜索引擎就是一種典型的分布式程序,Nuteh就是基于Hadoop開發的?;贖adoop的分布式計算框架如下:圖2.1 Hadoop云技術結構即,用戶首先利用分布式文件系統HDFS將不同節點上的計算機禍合起來,給用戶和應用程序提供一個共同的接口和界面,然后可利MapReduce計算框架,進行分布式計算,將一個任務“分解和結果匯總”,以在多臺節點上運行,從而實現分布式編程。可見,Hadoop提供了一個分布式計算框架,就如同Java程序員可以不用考慮內存泄漏一樣,Map/Reduce API也讓程序員不需要關心海量數據如何被分配到多臺機器上,不需要考慮機器失效的處
10、理,不需要考慮各節點間如何協同操作共同完成任務,其簡化了程序員的負擔,以讓不具備分布式系統經驗的程序員,能夠輕松地進行分布式編程。2.3 網絡爬蟲原理2.3.1 搜索引擎基本技術隨著因特網的迅猛發展、WEB信息的增加,用戶要在信息海洋里查找信息,就象大海撈針一樣,搜索引擎技術恰好解決了這一難題(它可以為用戶提供信息檢索服務)。目前,搜索引擎技術正成為計算機工業界和學術界爭相研究、開發的對象。搜索引擎以一定的策略在互聯網中搜集、發現信息,對信息進行理解、提取、組織和處理,并為用戶提供檢索服務,從而起到信息導航的目的。按照信息搜集方法和服務提供方式的不同,搜索引擎系統可以分為三大類:目錄式搜索引擎
11、、機器人搜索引擎和元搜索引擎5。一個搜索引擎由爬蟲、索引器、檢索器和用戶接口等四個部分組成:(l)爬蟲(抓取模塊):其功能是在互聯網中漫游,發現和搜集信息。它常常是一個計算機程序,日夜不停地運行。爬蟲的實現常常用分布式、并行計算技術,以提高信息發現和更新的速度。(2)索引器:其功能是理解爬蟲所搜索的信息,從中抽取出索引項,用于表示文檔以及生成文檔庫的索引表。索引表一般使用某種形式的倒排表(InversinnList),即由索引項查找相應的文檔。索引表也可能要記錄索引項在文檔中出現的位置,以便檢索器計算索引項之間的相鄰或接近關系(Proximity)。(3)檢索器:其功能是根據用戶的查詢在索引庫
12、中快速檢出文檔,進行文檔與查詢的相關度評價,對將要輸出的結果進行排序,并實現某種用戶相關性反饋機制。檢索器常用的信息檢索模型有集合理論模型、代數模型、概率模型和混合模型四種。(4)用戶接口:其作用是輸入用戶查詢、顯示查詢結果、提供用戶相關性反饋機制。主要的目的是方便用戶使用搜索引擎,高效率、多方式地從搜索引擎中得到有效、及時的信息。用戶接口的設計和實現使用人機交互的理論和方法,以充分適應人類的思維習慣。2.3.2 網絡爬蟲基本原理網絡爬蟲(Spider),其定義有廣義和狹義之分。狹義上指遵循標準的http協議利用超鏈接和W七b文檔檢索的方法遍歷萬維網信息空間的軟件程序;而廣義的網絡爬蟲則是所有
13、能遵循http協議檢索Web文檔的軟件6。Spider是一個功能很強的自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。Spider通過請求站點上的HTML文檔訪問某一站點。它遍歷Web空間,不斷從一個站點移動到另一個站點,自動建立索引,并加入到網頁數據庫中。網絡爬蟲進入某個超級文本時,它利用HTML語言的標記結構來搜索信息及獲取指向其他超級文本的URL地址,可以完全不依賴用戶干預實現網絡上的自動爬行和搜索。在抓取網頁的時候,目前網絡爬蟲一般有兩種策略:無主題搜索與基于某特定主體的專業智能搜索。(1)無主題搜索主要包括:廣度優先和深度優先。廣度優先是指網絡爬蟲會先抓取起
14、始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。深度優先是指網絡爬蟲會從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉入下一個起始頁,繼續跟蹤鏈接。(2)在專業智能搜索引擎中,網絡爬蟲的任務是獲取Web頁面和決定鏈接的訪問順序,它通常從一個“種子集”(如用戶查詢、種子鏈接或種子頁面)出發,以迭代的方式訪問頁面和提取鏈接。搜索過程中,未訪問的鏈接被暫存在一個稱為“搜索前沿”(Spider Frontier)的隊列中,網絡爬蟲根據搜索前沿中鏈接的“重要程度”決定下一個要訪問的鏈接。如何評價和預測鏈接的“重要程度”(或稱價值)是決定網絡爬蟲搜索策
15、略的關鍵。2.3.3分布式網絡爬蟲NutchNutch是Apache基金會的一個開源項目,它原本是開源文件索引框架Lucene項目的一個子項目,后來漸漸發展成長為一個獨立的開源項目。它基于Java開發,基于Lucene框架,提供Web網頁爬蟲功能。3 分布式爬蟲設計3.1 系統布局本文研究并設計的搜索引擎,是基于MapReduce的分布式搜索引擎,其分布式計算框架采用的是Hadoop7。整個系統分為應用層、搜索引擎核和云計算平臺三個層次,系統架構如下圖所示。圖3.1 分布式平臺的系統構架從上圖可以看出,該系統以云計算平臺Hadoop作為支撐,其包括分布式文件系統HDFS和分布式計MapRedu
16、ce兩個部分。搜索引擎核提供給各種應用程序接口。搜索引擎核操作著Hadoop的MapReduce任務,分為并行采集(分布式爬蟲)、并行分析、并行索引、并行檢索以及界面展示五大模塊。其中,并行索引和并行檢索由系統調用Lucene的核心類來完成,而本文的主要工作集中在并行采集模塊上,即分布式爬蟲的實現上。3.2 網絡爬蟲采集原理網絡爬蟲就是能夠訪問網絡資源,以抓取網頁信息。初始時,只需要提極少量的起始URL,網頁抓取器就能夠按照一定的規則沿著網頁上的超級鏈接在網絡上漫游,收集資源信息,直至遍歷整個網站。如下是網絡爬蟲模塊內部結構所示,其通過一系列的子操作完成。所有的子操作都基于MapReduce計
17、算模型來完成。 圖3.2 網絡爬蟲內部結構上圖中的子操作分別為:(l)建立初始化URL集,即構建“未抓取URL庫”。初始URL集的建立有兩種方式:超鏈接和用戶提交。超鏈接是指機器人程序根據網頁鏈接到其它網頁中的超鏈接,從少數幾個網頁開始,連到其他網頁的過程。用戶提交是指在實際運行中,爬蟲不可能爬遍所有站點,為此,用戶可向搜索引擎進行提交,要求收錄,搜索引擎經過核查之后,便將該網站加入到URL集合中,進行抓取。在構建“未抓取URL庫”的時候,會進行如下工作:1)將URL集合進行格式化和過濾,消除其中的非法URL,并設定URL狀態,并按照一定方法進行初始化分值;2)將URL進行合并,消除重復的UR
18、L入口;3)將URL及其狀態、分值存入“未抓取URL庫”。(2)通過“未抓取URL庫”生成“待抓取URL隊列”,供抓取器進行抓取。在生成抓取隊列的時候,會做如下工作:1)從“未抓取URL庫”中將URL取出并進行過濾;2)對URL進行排序,通過域名、鏈接數和一種Hash算法綜合進行降序排列,以使指向同一個主機上Web資源的UR此被分配到同一個抓取隊列中,這樣可以使得相應的MapReduce任務分配給一臺機器進行執行,以防過多的機器同時對一個主機進行抓取造成主機負擔過重。(3)抓取網頁。抓取器根據抓取列表到互聯網上進行相應網頁的抓取,在抓取過程中遵守REP(Robots Exelusion Pro
19、tocol)協議。抓取的時候,會根據robots.txt以及網頁的Meta信息判斷哪些是服務器定義不能索引和訪問的,哪些是網頁作者定義不能訪問的,然后只訪問能夠索引的頁面,同時將不能訪問的URL設置成需要更新的URL。抓取的內容保存到一個臨時庫中。抓取過程中,頁面的URL地址可能因為鏈接發生改變,從而需要更新URL地址;另外采用多線程的方式進行抓取,從而提高抓取速度。(4)文檔的解析。對應不同的文檔調用不同的解析器,這通過Nutch的插件機制來完成。解析器對文檔進行解析后,將生成的text和data保存到HDFS文件系統中。(5)網頁消重,并更新“未抓取URL庫”。這里采用一部分網頁解析的功能
20、,將抓取的鏈接信息等,插入“未抓取URL庫”和“原始網頁庫”中,同時消除重復的抓取內容。這樣通過更新“未抓取URL庫”,增加新的URL為下一輪抓取做準備。3.3 爬蟲的基本流程設計本爬蟲的基本需求是:對于用戶給定種子URL集、抓取深度depth(即層數,種子URL在第1層,其鏈接URL為第2層,依次類推)、每層下載的URL數量topN等,完成網頁抓取。針對該需求,本系統設置的爬蟲基本流程如下: 圖3.3 分布式爬蟲的基本流程圖該流程具體說明如下:(1)用戶將最開始的初始URL放到種子文件中,爬蟲程序將該種子文件中的URL注入到“未抓取URL庫”中;同時設置“已抓層次”為0。(2)判斷“已抓層數
21、”與“要求抓取層次depth”的關系。當已抓層數小于要求抓取層次depth時,進入到(3);否則程序流程結束。(3)從“未抓取URL庫”中取出前topN個URL放入“未抓取URL隊列”中,同時在“未抓取URL庫”中刪除這些URL。(4)判斷“未抓取URL隊列”是否為空,若是,說明該層的topN個URL均已抓取完畢,爬蟲開始下一層抓取,程序進入(2);若否,說明該層URL并未完全抓取,程序進入到(5)。(5)從“未抓取URL隊列”中取出一個URL,利用HTTP協議完成該URL所對應網頁的抓取,并將網頁內容放入“已抓取網頁庫”。(6)對網頁內容進行解析,提煉出所感興趣的信息,并將這些數據插入到“解
22、析網頁庫”中。(7)將所抓取網頁中的外鏈outlinks加入到“未抓取URL庫”中。此時,一個網頁的抓取流程完成,程序進入(4),進行“未抓取URL隊列”中剩余URL的抓取。從該流程圖可以看出,該爬蟲(Crawler)的基本過程可以分成四個獨立的模塊:(1)Inject模塊:根據用戶所提供的初始種子URL名單,添加數據下載的入口鏈接,其首先讀取用戶給定的純文本格式文件,獲取URL列表,作為入口地址添加到“未抓取URL庫”中。(2)Generate模塊:從“未抓取URL庫”中獲取下一步將要抓取的URL,將其放入“未抓取URL隊列fetchlist”中。該模塊的功能還包括對將要抓取的URL進行規范
23、化,如對非法URL進行識別和對URL的長度進行限制等,其也可用來完成對將要抓取URL的過濾功能,如對某些域名的限制抓取等。(3)Fetch模塊:此為爬蟲的關鍵部分,按照“未抓取URL庫”中的URL利用HTTP協議訪問互聯網,獲取網頁的具體數據,并將其存放到“原始網頁庫”中。(4)Update模塊:該模塊與搜索引擎中的解析模塊進行協作,但為了提高速度,Update模塊僅調用解析模塊中最簡單的“鏈接分析”部分,已從原始網頁中解析出鏈接outlinks。update模塊將鏈接outlinks添加到“未抓取URL庫”中,從而完成未抓取URL的更新。這樣,整個網絡爬蟲被分成四個有機模塊:Inject、Generate、Fetch和Update。如上圖所示,網絡爬蟲從Inject出發,循環執行“Generate、Fetch、update”以完成網頁抓取,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 觸摸:愛的傳遞與情感的流動
- 爆炸的創意美術課件
- 風力機設計對氣動性能影響的實驗研究
- 高精度SNP分子標記技術在杭錦旗甘草指紋圖譜構建中的應用研究
- 社會信任對新創企業投資的影響
- 碳化硅基復合結構二極管的退化行為研究-洞察闡釋
- 精準農業中的感知與決策系統研究-洞察闡釋
- 九宮格題目及答案
- 車路協同中的動態資源分配機制-洞察闡釋
- 未來交通系統中的自動駕駛-洞察闡釋
- GB/T 29790-2020即時檢驗質量和能力的要求
- 深圳市失業人員停止領取失業保險待遇申請表空表
- 《生理學》神經系統課件
- 傲鵬ERP應付會計操作培訓課件
- 催收投訴防控預警處理流程(含投訴預警報備臺賬)
- 硬筆書法:幼小銜接識字寫字教學課件
- 公開招聘校長后備人選理論考試題庫
- 機械優化設計_經典實例PPT課件
- 新人教版八年級物理(下冊) 第十一章 功和機械能 第十一章 功與機械能復習課
- 東方航空無成人陪伴兒童乘機申請書
- 智慧工廠解決方案—燈塔工廠引領制造業數字化轉型-白皮書
評論
0/150
提交評論