大數(shù)據(jù)技術文檔_第1頁
大數(shù)據(jù)技術文檔_第2頁
大數(shù)據(jù)技術文檔_第3頁
大數(shù)據(jù)技術文檔_第4頁
大數(shù)據(jù)技術文檔_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

VIP免費下載

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章緒論

隨著計算機技術、通信網(wǎng)、互聯(lián)網(wǎng)的迅速開展和日益普及,Internet上的信息量快速增長。從海量的

信息塊中快速檢索出用戶真正需要的信息正變得很困難,信息搜索應向著具有分布式處理能力方向開展,

本系統(tǒng)利用hadoop分布式開源框奧良好的擴充能力、較低的運作本錢、較高的效率和穩(wěn)定性來滿足需

求。

現(xiàn)狀:

缺陷和缺乏:

(1)結果主題相關度不高。

(2)搜素速度慢。

引入hadoop+nutch+solr的優(yōu)點:

(1)hadoop平臺數(shù)據(jù)處理高效。hadoop集群處理數(shù)據(jù)比起單機節(jié)省數(shù)倍的時間,數(shù)據(jù)量越大優(yōu)勢越明

顯,滿足信息采集對數(shù)據(jù)處理的速度和質量要求。

(2)hadoop平臺具有高擴展性。可以適當擴展集群數(shù)量來滿足日益不斷增加的數(shù)據(jù)量,而這并不會毀壞

原集群的特性。

(3)平安可靠性高。集群的數(shù)據(jù)冗余機制使得hadoop能從單點失效中恢復,即Hadoop能自動進行數(shù)據(jù)

的屢次備份,以確保數(shù)據(jù)不喪失,即使當某個效勞器發(fā)生故障時,它也能重新部署計算任務。

(4)Nutch不僅提供抓取網(wǎng)頁的功能,還提供了解析網(wǎng)頁、建立鏈接數(shù)據(jù)庫、對網(wǎng)頁進行評分、建立

solr索引等豐富的功能。

(5)通過Nutch插件機制實現(xiàn)了系統(tǒng)的可擴展性、靈活性和可維護性,提高了開發(fā)效率。能夠根據(jù)用戶

需求進行靈活定制抓取和解析,提高了系統(tǒng)使用性。

(6)通過solr集群,采用分布式索引在不同的機器上并行執(zhí)行,實現(xiàn)檢索效勞器之間的信息交換??梢?/p>

通過設定主題進行索引檢索。

研究目標和內容

本文的研究目標是全面深入分析研究分布式搜索引擎,進而優(yōu)化分布式搜索引擎中的索引構建策略,內容

包括:

(1)深入研究hcidoop分布式平臺,仔細剖析hcidoop中的分布式文件系統(tǒng)HDFS和mtip/Reduce編程模

型。

(2)深入研究Nutch架構、相關技術與體系結構,著重研究分析Nutch插件系統(tǒng)的內部結構和流程;對

protocol-htlpclienl插件進行開發(fā)支持表單登錄;對url過濾、信息解析插件進行開發(fā),提高搜索的主題

相關度;(實現(xiàn)用mapreduce的google的排序算法,改良系統(tǒng)搜索的關聯(lián)度)。

系統(tǒng)功能結構

(1)本地資源解析模塊

對本地文本pdf,word,excel內容解析和索引,按照主題分類,添加到相應的主題中進行搜素。

(2)搜索模塊

用戶根據(jù)不同主題進行內容索引、關鍵詞查詢,將跟查詢關聯(lián)度最高的前n個文檔返回給用戶,并統(tǒng)計出

在這些查詢結果中出現(xiàn)頻率最高的前n個詞。用戶可根據(jù)需求修改配置文件,提高搜索的相關度。

(3)信息爬取模塊

①信息定制采集模塊

1、種子URL:用作抓取器爬取的出發(fā)點,也叫做根URL。

2、關鍵字:關鍵字的選擇很重要,描述了抓取任務的所屬分類的主題方向。

3、深度:由于Nutch抓取模塊采用的是廣度優(yōu)先的策略,抓取深度的選擇決定了抓取時間的長度和抓取

網(wǎng)頁數(shù)量的大小。一般根據(jù)所選取的種子URL的類型和詳細程度以及對網(wǎng)頁抓取規(guī)模的需求來進行設置。

在信息定制模塊用戶設置主題信息,url信息、抓取深度的信息,抓取線程根據(jù)定制信息,開始抓取工

作。(綜合型搜索引擎;某一主題類網(wǎng)站,垂直搜索引擎;博客搜索引擎)

②信息解析過濾模塊

根據(jù)fiddle進行登錄分析,修改網(wǎng)絡協(xié)議插件,支持簡單的一次跳轉表單登錄,用戶可以在配置文件中

進行設置,然后抓取內容;復雜的登陸需要分析登陸過程,寫出相對應的網(wǎng)絡協(xié)議插件。由丁本系統(tǒng)在網(wǎng)

絡資源采集過程中支持個性化定制,只對目標站點感興趣的內容進行采集,分析目標站點的結構特點,在

頁面采集完成后,從中提取出鏈接、元數(shù)據(jù)、正文、標題、關鍵字、描述等信息,進行后續(xù)的過濾和其他

處理。鏈接的提取首先要判斷頁面類型,頁面的類型可以有應答頭分析得出,根據(jù)不同的類型選擇相應的

爬取和解析插件,對遇到帶有鏈接的標記如<a>、<hrcf>、〈frame〉等,就從標記結構的屬性中找出目標

url,并從成對的該標記之間抽取出正文作為該鏈接的說明文字,鏈接文字一般能反映文章的主題信息,

系統(tǒng)設定閾值,判斷主題和說明性文字的相關性,對爬取鏈接進行過濾,參加到爬取鏈接列表中。定制采

集的子模塊,根據(jù)正則表達式對網(wǎng)頁內容進行過濾,獲取和處理跟主題相關的內容,過濾無關的信息內

容;對網(wǎng)頁編碼格式進行提取,實現(xiàn)內容編碼的轉換。(下一步改良主題相關度鏈接過濾算法)

(4)系統(tǒng)管理模塊

用戶對根據(jù)需求對系統(tǒng)的配置參數(shù)進行修改。

論文組織結構

1、緒論。

本章首先介紹了本文研究的背景及意義,接著研究了信息采集與搜索技術的國內外開展現(xiàn)狀,最后給出了

本文研究的內容和論文組織結構。

2、關鍵技術。Hadoop、Nutch^Solr技術架構及文本檢索算法

本章介紹了開源軟件Hadoop、Nutch、Solr的根本情況;詳細介紹(Hadoop框架及其進行分布式計算的編

程模型MapReduce和數(shù)據(jù)存儲系統(tǒng)HDFS;Nutch以Hadoop的分布式文件系統(tǒng)HDFS作為底層數(shù)據(jù)平臺,采

用MapReduce編程方式實現(xiàn)數(shù)據(jù)的分布式處理,以擴展機制為突出特性,用戶可以根據(jù)實際需求對其添加

插件進行擴展改良,構建自己的信息采集搜索系統(tǒng);通過Solr集群,采用分布式索引在不同的機器上并

行執(zhí)行,實現(xiàn)檢索效勞器之間的信息交換,減小索引對機器的要求,同時介紹了常用的文本檢索算法

VSM,pagerank和lucene默認的徘序算法。

3、系統(tǒng)環(huán)境配置。Hadoop+Nutch+Solr系統(tǒng)的運行環(huán)境配置與運行。

本章介紹配置Hadoop+Nutch+solr系統(tǒng)的運行環(huán)境并詳細闡述其運行流程。

4、基于Hadoop+Nutch+Solr的信息采集搜索系統(tǒng)的設計與實現(xiàn)。

本課題采用hadoop+Nutch+Solr開源軟件,縮短了開發(fā)時間并且能夠根據(jù)個性化需要采集數(shù)據(jù)提高搜素結

果的精度,基于mapreduce實現(xiàn)了pagerank算法,將pagerank作為一個獨立的索引項添加到nutch默認

的lucene排序算法中,用戶可以杈據(jù)需求自己定義排序的規(guī)則,提高檢索的相關度。(基于hadoop的

notch網(wǎng)頁排序算法研究與實現(xiàn))

系統(tǒng)相關技術介紹

Hadoop

hadoop由Apache公司于2005年秋天作為Luccnc的子工程Nutch的一局部正式引入。Hadoop被

定位為一個易于使用的平臺,以HDFS、MapReduce為基礎,能夠運行上千臺PCServer組成的系統(tǒng)集群,并以一

種可靠、容錯的方式分布式處理請求。本文基于Hadoop+Nutch+Solr開發(fā)的信息采集搜索工程,現(xiàn)對

Hadocp進行全面分析和深入研究。

Hadocp框架介紹

Hadoop是執(zhí)行大數(shù)據(jù)分布式應用的開源框架,憑借高效,可靠,可擴展等特性受到廣泛應用,它有兩

大最核心的模塊:進行分布式計算的MapReduce與底層的存儲系統(tǒng)HDFS(HadoopDistributed分布式文

件系統(tǒng))。

MapReduce中任務的分解(Map)與結果的匯總(Reduce)是其主要思想。Map就是將?個任務分解成

多個任務,Reduce就是將分解后多任務分別處理,并將結果匯總為最終結果。

Hadocp整體由九個子工程組成,其中MapReduce和HDFS兩大核心將在后文展開具體介紹??蚣苋缦铝袌D

所示,工程功能如下表所示.

行的布式數(shù)據(jù)鼻Pigg流語言Hive數(shù)據(jù)倉犀Mahout數(shù)據(jù)挖掘事Avro遠程過程調用

MapReduceHDFSZooKeeper

分布式處理模型分布式文件系統(tǒng)分加式的同系統(tǒng)

HadoopCoMoon

Hadoop僅目的猿心

圖Hadoop框架圖

子工程功能

HadoopCommonHadoop系統(tǒng)核心,提供子工程的根本支持

HDFS實現(xiàn)高吞吐的分布式存儲

MapReduce執(zhí)行分布式并行計算

HBcise一個可擴展的分布式數(shù)據(jù)庫系統(tǒng)

Pig為并行日算提供數(shù)據(jù)流語言和執(zhí)行框架

Hive提供類SQ;語法進行數(shù)據(jù)查詢的數(shù)據(jù)倉庫

ZooKeeper提供分布式鎖等

Mahout?個大規(guī)模機器學習和數(shù)據(jù)挖掘庫

ArvoHadoop的RPC(遠程過程調用)方案

表Hadoop子工程功能介紹

MapReduce編程模型

MapReduce是一種編程模型,該模型將數(shù)據(jù)擴展到多個數(shù)據(jù)節(jié)點上進行處理,它最早是Google提出的

一個軟件架構,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。弁行編程模式的最大優(yōu)點是容易擴展到多個

計算節(jié)點上處理數(shù)據(jù)。開發(fā)者可以很容易就編寫出分布式并行程序。

irapreduce的主要思想是將自動分割要執(zhí)行的問題(例如程序)拆解成map(映射)和reduce(化

簡)的方式;一個MapReduce作業(yè)(job)首先會把輸入的數(shù)據(jù)集分割為多個獨立的數(shù)據(jù)塊,再以鍵值對

形式輸給Map函數(shù)并行處理。Map函數(shù)接受一個輸入鍵值對的值,產生一個中間鍵值對集合,由

MapReduce保存并集合所有具有相同中間key值的中間value值傳遞給Reduce函數(shù),reduce對這些

value值進行合并,形成一個value值集合,最終形成輸出數(shù)據(jù)。處理流程如下列圖:

輸入Map任務中間結果Reduce任務輸出

MapReduce的處理流程

Hadoop的分布式文件系統(tǒng)(HDFS)

Hadoop分布式文件系統(tǒng)(HDFS)是GoogleGFS存儲系統(tǒng)的開源實現(xiàn),HDFS具有高容錯性和高傳輸率,

特別適合具有大數(shù)據(jù)集的程序應用。HDFS采用master/slave架構。一個HDFS集群包含一個單獨的名字節(jié)

點(Namenode)和一定數(shù)目的數(shù)據(jù)節(jié)點(Datanode)組成一個HDFS集群。HDFS被設計成一個可以在大集群

中、跨機器、可靠的存儲海晟數(shù)據(jù)的框架。它將所有文件存儲成block塊組成的序列,除了最后一個block

塊,所有的block塊大小都是一樣的,他們存放在一組Datanode中,文件的所有block塊都會因為容錯而被復

制,每個文件的block塊大小和容錯復制份數(shù)都是可歸置的,他們在Namenode的統(tǒng)一調度小進行數(shù)據(jù)塊的創(chuàng)

立、刪除和復制工作。

卜列圖所示為HDFS的體系架構

圖HDFS體系結構圖

Namenode和Datanode都可以在普通計算機上運行。Namenode作為master效勞,它負責管理文件系統(tǒng)的命

名空間和客戶端對文件的訪問。NameNode會保存文件系統(tǒng)的具體信息,包括文件信息、文件被分割成具體

block塊的信息、以及每■個block塊歸屬的Datanode的信息,對于整個集群來說,HDFS通過Hamenode對用

戶提供了一個單一的命名空間;Datanode作為slave效勞,在集群中可以存在多個,通常每一個Datanode

都對應于一個物理節(jié)點,Datanode負責管理節(jié)點上它們擁有的存儲,它將存儲劃分為多個block塊,管理

block塊信息,同時周期性的將其所有的block塊信息發(fā)送給Namenodeo

從上面的介紹可以看出,在搭建好的Hadoop集群上,大數(shù)據(jù)集首先會由HDFS平安穩(wěn)定地分布存儲到

集群內的多臺機器上,再利用MapReduce模型將該數(shù)據(jù)集分解為較小的塊(一般為64MB)進行處理,特點

是高效、平安、具備高吞吐量。Hadoop用戶可以在不了解分布式底層細節(jié)的情況下很好地利用該分布式平

臺開發(fā)分布式程序,進行高效數(shù)據(jù)存儲和運算。因此Hadoop成為管理大量數(shù)據(jù)的關鍵技術,在信息采集

和搜索領域的使用范圍越來越廣。

hadoop具備以下突出的優(yōu)點:

(1)hadoop平臺數(shù)據(jù)處理簡單高效。hadoop運行在由普通PC機組建的大型集群上,用戶可以在平臺上

快速編寫并行代碼運行分布式應用,防止耗時的數(shù)據(jù)傳輸問題;集群處理數(shù)據(jù)比起單機節(jié)省數(shù)倍的時間,

數(shù)據(jù)量越大優(yōu)勢越明顯,滿足信息采集對數(shù)據(jù)處理的速度和質量要求。

(2)hadoop平臺具有高擴展性??梢赃m當擴展集群數(shù)量來滿足F1益不斷增加的數(shù)據(jù)量,而這并不會毀壞

原集群的特性。

(3)平安可靠性高。集群的數(shù)據(jù)冗余機制使得hadoop能從單點失效中恢復,即Hadoop能自動進行數(shù)據(jù)

的屢次備份,以確保數(shù)據(jù)不喪失,即使當某個效勞器發(fā)生故障時,它也能重新部署計算任務。

Nutch

Nutch是Apache基金會的一個開源工程,它原本是開源文件索引框架Lucenc工程的一個子工

程,后來漸漸開展成長為一個獨立的開源工程。它基于Java開發(fā),基于Lucene框架,提供Web網(wǎng)頁

爬蟲功能。從nutchO.8.0開始,Nutch完全構建在Hadoop分布式計算平臺之上,因此基于Hadoop的

Nutch信息采集系統(tǒng)可以部署在由成千上萬計算機組成的大型集群上,Nutch也分為2局部,信息爬取和

檢索,但nutchl.2版本之后,Nutch專注的只是爬取數(shù)據(jù),而全文檢索的局部徹底的交給solr。nutch的

抓取流程中,抓取器也叫蜘蛛或者機器人,以廣度優(yōu)先搜索(BFS)的方式從企業(yè)內部網(wǎng)或者互聯(lián)網(wǎng)抓取

網(wǎng)頁,爬取過程包括了爬蟲模塊和解析模塊。爬蟲程序將網(wǎng)頁頁面抓回判斷格式解析數(shù)據(jù),形成頁面內容

數(shù)據(jù)庫。

種子url

nutch的采集過程要預先給定初始種子url,而種子url的選擇將直接影響主題搜索的質量,

因此選取初始種子u門的原則是種子頁面本身要具有較高的主題相關性。初始種子url既可以是一個網(wǎng)站

的首頁,也可以是網(wǎng)站的子頁面,關鍵是要盡可能的覆蓋主題資源,最終實現(xiàn)抓取目標的最大化,主要有

四種方法生成初始種子url:

(1)人工指定:給出某個領域的權威專家給出相關的種子頁面。

(2)自動生成:根據(jù)用戶指定的局部關鍵詞,并將這些關鍵詞提交給通用搜索引擎,從檢索結果中抽取

前N個頁面作為種子頁面。

(3)混合模式:即人工指定與自動生成相結合,首先利用通用搜索引擎獲得局部相關頁面,然后經(jīng)過人

工篩選、過濾、合并、評價,形成一個能充分反映主題特征的種子頁面。

(4)增加爬蟲的學習能力:通過建立各個領域的主題種子庫,并對檢索歷史、用戶反應信息進行分析的

基礎上,動態(tài)優(yōu)化產生相應主題的種子頁面集。

種子的選取在實際操作中應該根據(jù)需求及領域的特征選擇適當?shù)姆椒ā?/p>

Nutch插件機制

Nutch另外很吸引人的一點在于,它提供了一種插件框架,使得其對各種網(wǎng)頁內容的解析、各種數(shù)據(jù)的采

集、查詢、集群、過濾等功能能夠方便的進行擴展,插件的擴展只需通過給定接口實現(xiàn),每個接口之下的

實現(xiàn)相互獨立,用戶可以專注于目標接口的擴展而不必擔憂該接口與其他接口的交互Nutch的插件體系結

構。nutch使用plugin系統(tǒng)有三個原因:

1、可擴展性

通過plugin,nutch允許任何人擴展它的功能,而我們要做的只是對給定的接口做簡單的實現(xiàn)。

2、靈活性

因為每個人都可以根據(jù)自己的需求而寫自己的plugin,這樣plugin就會有一個很強大的資源庫。

這樣對與應用nutch程序員來說你有了更多的關于內容爬取、過濾的算法來選擇。

3、可維護性

一個plugin的開發(fā)者只要關注這個plugin所要實現(xiàn)的功能,而不需要知道整個系統(tǒng)是怎么工作的,僅僅

需要知道的是plugin和plug之間交換的數(shù)據(jù)類型,這使得內核更加簡單,更容易維護。

插件體系結構圖

UrlFilterURL過

濾擴展點

Nutch-site.xml定義加載的

插件

IndcxFilter索

引擴展點

Analyzer分詞擴〔

展點I

各插件目錄下的Plugin.xml

Parse解析擴展點

I文件

<>

OnlincClustercr^i

群擴展點

</

圖插件體系結構

插件的內部結構

/Runtime?j

Plugin

Extension*/

<Extension-point*

圖插件內部結構

runtime:描述了其需要的Jar包,和發(fā)布的Jar包

requires:描述了依賴的插件

extension:描述了擴展點的實現(xiàn)

extension-point:描述插件宣布可擴展的擴展點

Nutch通過插件機制實現(xiàn)了系統(tǒng)的可擴展性、靈活性和可維護性,使得各個局部的開發(fā)人員只需關注自己的領

域,不必去擔憂如何整合系統(tǒng),也極大的提高了開發(fā)效率。

爬蟲技術

1、網(wǎng)絡爬蟲

網(wǎng)絡爬蟲實際上是一個基于web的程序,它從初始的種子站點出發(fā),進行過濾檢查,當爬蟲翻開某個

HTML頁面后,它會分析HTML標記結構來獲取信息,并獲取指向其它頁面的超級鏈接,然后通過既定的

搜索策略選擇下一個要訪問的站點。從理論上講,如果為Spider指定個適當?shù)某跏嘉臋n集和個適當?shù)?/p>

網(wǎng)絡搜索策略,它就可以遍歷整個網(wǎng)絡。

為了解決Web采集的關鍵問題,經(jīng)過不斷地研究與實踐,將爬行器由最早期單純的基于整個Web的爬

行器開展到可滿足不同需要的多種采集技術的爬行器。大致可以分為以下幾種類型:

第一種是基于整個Web的爬行器。主要是指目標為從一些種子URL擴充到整個Web的爬行器。

第二種是增量式的爬行器。傳統(tǒng)的爬行器根據(jù)自己的需要采集足量的信息后停止采集,當過一段

時間這些數(shù)據(jù)過時后,它會重新采集一遍來代替先前的信息,稱為周期性呢b采集器。而增量式的爬行器

對待就的頁面采用增量式更新,即采集器在需要的時候采集新產生的或己經(jīng)發(fā)生了變化的頁面,而對沒有

變化的頁面不進行采集。和周期性信息采集相比,增量式信息采集能極大地減小數(shù)據(jù)采集量,從而極大地

減少了采集的時間與空間開銷。但是與此同時,增量式信息采集也增加了算法的復雜性和技術難度。

第三種是基于主題的爬行器是指選擇性地搜尋那些與預先定義好的主題相關的頁面的爬行器。和

基于整個Web的爬行器相比,它并不采集那些與主題無關的頁面,所以大大地節(jié)省了硬件和網(wǎng)絡資源,保

存的頁面也由于數(shù)量少而更新快。

第四種是基于用戶個性化的爬行器。不同的用戶對一個搜索引擎提交同一個檢索詞,他們期待的

結果是不盡相同的。而通用的搜索引擎卻只能返回相同的檢索結果,這顯然不完全符合用戶的需要。而基

于用戶個性化的爬行器是一種輕量級的采集系統(tǒng),它的目標就是通過用戶興趣制導或與用戶交互等手段來

采集信息,給用戶提供個性化效勞。

口第五種是移立的爬行器。這種爬行器并不像其他爬行器一樣在本地客戶機向Web站點效勞器發(fā)送

頁面請求,而是將自己上載到它所要采集的效勞器中,在冊地進行采集,并將采集結果壓縮后,再回傳到

本地。這樣做大量地節(jié)省了Web資源,大量的剪裁工作將在被采集對象的效勞器上完成。

第六種是基于元搜索的爬行器。它對用戶的提交的查詢請求通過多個領域或門戶搜索引擎搜索,

并將結果整合后返回給用戶。一般元搜索引擎并不保存Web頁面的索引文件,但是有一些元搜索引擎會保

存為它效勞的每個搜索引擎的信息特征,以后根據(jù)用戶請求做出選擇。

Nutch使用累枳式爬斗乂與增量式爬取相結合的策略進行,既保證了數(shù)據(jù)的完整性乂保證了時

效性。

2、網(wǎng)絡爬蟲爬行策略

網(wǎng)頁的抓取策略可以分為廣度優(yōu)先、深度優(yōu)先和最正確優(yōu)先三種。深度優(yōu)先在很多情況下會導致爬蟲的陷入

(trapped)問題,目前常見的是廣度優(yōu)先和最正確優(yōu)先方法。

A廣度優(yōu)先搜索

廣度優(yōu)先搜索策略是指在抓取過程中,在完成當前層次的搜索后,才進行下一層次的搜索。該算

法的設計和實現(xiàn)相對簡單。在目前為覆蓋盡可能多的網(wǎng)頁,一般使用廣度優(yōu)先搜索方法。

下面,我將以圖示的方式介紹廣度優(yōu)先遍歷的過程,如下列圖所示。

圖()

選擇A作為初始種子節(jié)點url,則廣度優(yōu)先搜索的過程,如表()所示。

A出隊列空

BCDEF入隊列BCDEF

B出隊列CDEF

C出隊列DEF

D出隊列EE

E出隊列F

H入隊列FH

F出隊列F

G入隊列HG

H出隊列G

I入隊列GI

G出隊列I

I出隊列空

在表所示的搜索過程中,出隊列的節(jié)點順序即是圖()的廣度優(yōu)先搜索過程。由此可見,圖()所示的廣

度優(yōu)先搜索過程的順序為:

A-B-C-D-E-F-H-G-Io

2、深度優(yōu)先搜索

深度優(yōu)先搜索策略從起始網(wǎng)頁開始,選擇一個URL進入,分析這個網(wǎng)頁中的URL,選擇一個再進

入。如此一個銃接一個鏈接地抓取下去,直到處理完一條路線之后再處理下一條路線,但每深入一層,網(wǎng)

頁價值和PageRank都會相應地有所下降。圖()所示的深度優(yōu)先廣度優(yōu)先搜索過程的順序為:

A-B-C-D-E-H-I-F-G

3、最正確優(yōu)先搜索

最正確優(yōu)先搜索策略按照一定的網(wǎng)頁分析算法,預測候選URL與目標網(wǎng)頁的相似度,或與主題的相關

性,并選取評價最好的一個或幾個URL進行抓取。它只訪問與主題相關的網(wǎng)頁。

信息檢索技術

信息檢索(1R),通俗的講,就是要在一個很大的文本(有時可能是其他數(shù)據(jù),如圖像等)集合中,找到與用戶需

求相關的可以滿足用戶需求的非結構化信息。

向量空間模型(VSM)

向量空間模型將文檔映射為一個特征向量V(d)=(tl,31(d):…;tn,3n(d)),其中ti(i=l,2,…,n)為一列

互不雷同的詞條項,3i(d)為ti在d中的權值,一般被定義為ti在d中出現(xiàn)頻率tfi(d)的函數(shù),

即公0)=好⑷)。

在信息檢索中常用的詞條權值計算方法為TF-IDF函數(shù)了短,其中N為所有文檔的數(shù)目,ni為

含有詞條ti的文檔數(shù)目。TFTDF公式有很多變種,下面是一個常用的TFTDF公式:

N

+0.1)

%(d)"-

粒(仇(d》Fog吟+0.1)

根據(jù)TF-IDF公式,文檔集中包含某一詞條的文檔越多,說明它區(qū)分文檔類別屬性的能力越低,其權值越?。毫?/p>

一方面,某一文檔中某一詞條出現(xiàn)的頻率越高,說明它區(qū)分文檔內容屬性的能力越強,其權值越大。

兩文檔之間的相似度可以用其對應的向量之間的夾角余弦來表示,即文檔di,dj的相似度可以表示為

色譏⑷電

進行查詢的過程中,先將查詢條件Q進行向量化,主要依據(jù)布爾模型:

當ti在查詢條件Q中時,將對應的第i坐標置為1,否則置為0,即

小。

a..■J1

1。t供Q

從而文檔d與查詢Q的相似度為

R

2G,(d)xq{

Sim(。,4)=)/

Ji*($))(£4)

v,?1i-1

在查詢過程中,可以計算出每個文檔與查詢的相似度,進而可以根據(jù)相似度的大小,將查詢的結果進行排序。

向量空間模型可以實現(xiàn)文檔的自動分類和對查詢結果的相似度排序,能夠有效提高檢索效率;它的缺點是相似

度的計算量大,當有新文檔參加時,則必須重新計算詞的權值。

LuceneScoring評分機制

solr使用lucene的內部評分機制,現(xiàn)對lucene的評分機制進行介紹。

lucene的評分公式:

(tf(tin

score(q,d)coord(q,d)?qu

d)?idf(t)2?t.getBoost0?

eryNorm(q)?£

norm(t,d))

t

in

q

其中:

tf(tind)關聯(lián)到項頻率,項頻率是指項t在文檔d中出現(xiàn)的次數(shù)frequencyo默認的實現(xiàn)是:

tf(tind)=frequency"

idf(t)關聯(lián)到反轉文檔頻率,文檔頻率指出現(xiàn)項t的文檔數(shù)docEreqodocb-req越少idf就越高。默

認實現(xiàn):

numDocs

idf(t)=1+log()

docFreq+1

coord(q,d)評分因子,是基于文檔中出現(xiàn)查詢項的個數(shù)。越多府查詢項在一個文檔中,說明些文檔的匹配程

序越高。默認是出現(xiàn)查詢項的百分比。

query"rm(q)查詢的標準查詢,使不同查詢之間可以比較c此因子不影響文檔的排序.因為所有有文檔都會使

用此因子。默認值:

1

queryNorm(q)=queryNorm(sumOfSquaredWeights)

sumOfSquaredWeights

每個查詢項權重的平分方和(sumOfSquaredWeights)由Weight類完成。例如BoolcanQucry地計算:

sumOfSquaredWeights「/、2

=q.getBoostO2.工(idf(t)?t.getBoost。)

tin

q

t.getBoost0查詢時期的項t加權(如:java1.2),或者由程序使用setBoost())>

norm(t,d)壓縮幾個索引期間的加權和長度因子:

Documentboost-文檔加權,在索引之前使用doc.setBoost()

Fieldboost-字段加權,也在索引之前調用field.setBoost()

IcngthNorm(field)-由字段內的Token的個數(shù)來計算此值,字段越短,評分越高,在做索引的時候由

Similarity.lengthNorm計算。

以上所有因子相乘得出norm值,如果文檔中有相同的字段,它們的加權也會相乘:

normCt,d)=doc.getBoost()?lengthNorm(field),nf.getBoost0

fieldfindnamudast

索引的時候,把norm值壓縮(encode)成一個byte保存在索引中。搜索的時候再把索引中norm值解壓

(decode)成一個float值,這個encode/decode由Similarity提供。

solr使用了Lucene的內核,也繼承了Lucene的打分規(guī)則,我們可以根據(jù)自己的應用實現(xiàn)評分笄法,換掉默認

的;也可以使用默認的,利用修改solr配置文件,來調節(jié)評分。

PageRank算法

一個網(wǎng)頁的重要性等于指向它的所有網(wǎng)頁的重要性相加之和。

如果網(wǎng)頁j存在一個指向網(wǎng)頁i的連接,則說明j的所有者認為i比較重要,從而把j的一局部重要性得分賦

予i。這個重要性得分值為:PR",

PR(p)為網(wǎng)頁j的PageRank值,以匕)為網(wǎng)頁j的小鏈數(shù)。

一個頁面的PageRank是由所有鏈向它的頁面(鏈入頁面)的重要性經(jīng)過遞歸算法得到的。一個有

較多鏈入的頁面會有較高的等級,相反如果一個頁面沒有任何鏈入頁面,那么它沒有等級。

由于存在一些出鏈為0,也就是那些不鏈接任何其他網(wǎng)頁的網(wǎng),也稱為孤立網(wǎng)頁。因此需要對

PagcRank公式進行修正,即在簡單公式的基礎上增加了阻尼系數(shù)(dampingfactor)q,q一般

取值q=0.85o

產尺(億1)二上Nn十(夕)JZ"L(口pj)

PR(Pd)即網(wǎng)頁i的PageRank值;所以公式的意義是:網(wǎng)頁i的PageRank值二(1-d)+d*(鏈

接到網(wǎng)頁i的所有PR值/該網(wǎng)頁的所有出鏈數(shù)量之和)。

信息采集搜索系統(tǒng)的安裝

本系統(tǒng)采用hadoopl.1.2+nutchl.6+solr4.10分布式集群進行信息的采集與搜索,集群的配置情況如下列

圖:

表()系統(tǒng)配置

序號名稱描述

1Hadoopl.1.2使用MapReduce進行并行爬取,使用HDFS存儲數(shù)據(jù),Nutch的任

務提交在Hadoop集群上,支持分布式

2Nutchl.6主要負責爬取數(shù)據(jù),支持分布式

3Solr4.10主要負責檢索,對爬完后的數(shù)據(jù)進行搜索,查詢,海量數(shù)據(jù)支持

分布式

4Centos6.5Linux系統(tǒng),在上面運行hadoop>nutch等應用

5Tomcat7.0應用效勞器,給Solr提供容器運行

6JDK1.7提供JAVA運行環(huán)境

7Anti.9提供Nutch等源碼編譯

8IKAnalyzer對網(wǎng)頁內容與標題進行分詞,便于全文檢索

hadoop系統(tǒng)的運行環(huán)境配置

hadoop需要在Java環(huán)境和Unix系統(tǒng)下運行,也可以跨平臺運行,木系統(tǒng)是在1inux操作系統(tǒng)

下運行,需要配置完成以下運行環(huán)境:

?Java環(huán)境:jdkl.7版本

vi/etc/profile

exportJAVA_HOME=/usr/jdk1.7

exportJRE_HOME=$JAVA_HOME/jre

exportCLASSPATH=.:$JAVA_HOME/1ib:$JRE_HOME/1ih:$CLASSPATH

exportPATH=$JAVA_HOME/bin:$JREJI0ME/bin:$PATH

從而完成所需要的java環(huán)境配置。

?hadoop集群配置:hadoopl.1.2

我在這里做了5個機器的hadoop集群

Master.Hadoop192.168.47.62

Slavel.Hadoop192.168.47.63

Slave2.Hadoop192.168.47.64

Slave3.Hadoop192.168.47.65

Slave4.Hadoop192.168.47.66

在192.168.47.62上

vi/etc/profile

exportHADOOP_HOME=/home/hadoopmaster/hadoop-1.1.2

exportPATH=$PATH:$HAD00P_H0ME/bin

vi/etc/hosts

127.0.0.1localhost

192.168.47.62Master.Hadoop

192.168.47.63Slavel.Hadoop

192.168.47.64Slave2.Hadoop

192.168.47.65Slave3.Hadoop

192.168.47.66Slaved.Hadoop

localhostMaster.Hadoop

配置無密碼登錄,在這里我不做介紹。

進入hadoop-1.1.2/conf下

vinasters

192.168.47.63(secondaryhost)

vislaves

192.168.47.62

192.168.47.63

192.168.47.64

192.168.47.65

192.168.47.66

vihadoop-1.12/conf/core-stie.xml

屋出hadoopmaster@>Slavel:~/hadoop-1.1.2/conf

xmJL▽um工。n一??工?O”

xml-ntvlLunhuutztvr>u

vpxropeMty>

<naime>rs?darag工匕?xiaxaev/camw>

<vaLlue>ncirs:Z/X92?X€8.47.€2:9OOO</val\2e>

</r>roj^er^y>

<X5ror>er-cy>

I<naiTnc>naicloor>--<lxr,</Tiamo

vi

conf/hdfs-site.xml

xmxvcri5xon?

xml-styXesHeettyp>e

<conrxcRiracxon>

vpHopuxrtY>

<xi?±m(xù)c±xi£s.Hevp?^^dxrtt±ss</xic±m(xù)?±>

<vaXue>192?X68?47.€N:SOO7O</vaXue>

V/pkopuht:y>

<pxopex?ty>

<naTne>cll!3?secondary-nttr>.addrc33</name>

<vaXtie>X92.X68.47.63:5009O</value>

</property>

I<px,opexrty>

|<ziAmcfXi£n.n?4xnu.d£ir</xi

<vailue>/nome/HaclDor>masx;ez*/nacioor>cirs/rxxesyscera/naLme</value>

|v/pkopuHtz丫>

|<pxopexcy>

<naLmoars.data?dxr</naiTne>

viconf/mapred-site.xml

hadoopmaster@Slavel:~/hadoop-1.1.2/conf

xmlvers±on=

xml-stylesheettype",,cexc/xslMhref"

<configuration>

<property>

<name>mapred.job.tracker-</name>

gvalue>192.168.47.64:9001</value>

</property>

<property>

|<name>mapreci.tasJeeracker.map.tasks.maximunx/name>

<value>2</value>

</property>

<property>

<naxne>map3reci.caslcexaclcex.seduce.casks.xnaxxmuxn</naxne>

<value>2</value>

</property>

<property>

<name>mapreci.system.dir</name〉

<value>/iiome/hadoopmaster/mapreduce/ayscem</value>

</property>

<property>

<name>mapred.local.dir</name>

<value>/home/hadoopmascer/inapreduce/local</value>

</property>

</confiQuraticn>

把配置好的hadoop文件夾拷貝到集群的其他機器中。

nutch的運行環(huán)境配置

下載apache-nutch-1.6的源文件,把nutch導入到eclipse進行二次開發(fā)的過程在這里不做介紹。

viconf/nutch-site.xml

<property>

<name>plugin.includes</name>

<value>protocol-httpclient|urlfiIter-regex|parse-

(htmltika|jspdfmsword)recommquery|index-(basicanchor)scoring-opicur1normalizer-

(passregex|basic)</value>

</property>

<property>

<ncime>http.timeout</name>

<value>10000</value>

</property

<property>

<name>http.agent.name</name>

<value>Mozilla/4.0(compatible;MSIE5.0;WindowsNT;DigExt)Gecko/20100101

Firefox/20.0</value>

</property>

<property>

<ncime>plugin.folders</ncime>

<value>./src/plugin</value>

</property>

<property>

<ncime>http.redirect.mcix</ncime>

<value>2</value>

</prcperty>

<property>

<name>http.content.limit</name>

<value>-l</value>

</property>

<property>

<name></name>

<value>-l</value>

</property>

<property>

<name>http.accept.language</name>

<value>en-us,en-gb,en;q=0.7,*;q=0.3</value>

“property〉

Nutch與solr的集成配置

1、將so1r/examp1c/webapps/so1r.war找貝到tomcat的webapps中

2、進入到到tomcai7中,對war進行解壓,然后刪除war包。

3、拷貝solr/example/1ib/ext卜.的相關依賴jar包到webapps/solr/WEBTNFO/1ib中

4、修改web.xml的solr/homc指定到solr所在的路徑。

5、修改tomcat/conf的server,xml文件中的編碼參加一行URLEncoding="U1F-8”

6、solr不會自動創(chuàng)立core,把multicore中的coreO拷到solr/example/,拷貝nutch的配苴文件schema-solr4.xml到

coreO/conf/下,重命名schema-solr4.xml為schema,xml,修改solrconfig.xml要和對應的core對應,7、參加分詞工具,在

這里對我用的是IKAnalyzer*

基于Hadoop+Nutch+Solr的信息采集搜索系統(tǒng)的設計與實現(xiàn)

信息采集搜索系統(tǒng)的實現(xiàn),以第二章相關技術理論分析與研究為基礎,利用MapReduce編程模型

在分布式處理方面的優(yōu)點,實現(xiàn)了pagerank算法在系統(tǒng)檢索中的評分;對nutch的url過濾,內容解析

插件進行改良,實現(xiàn)了用戶自訂制鏈接和獲取的主題內容;對本地資料文件實現(xiàn)格式識別并抽取題名、時

問、內容等文本信息保存為xml文件,實現(xiàn)本地相關主題信息查詢。系統(tǒng)采用IK分詞器,最終完成了信

息采集與搜索的設計與實現(xiàn)。

系統(tǒng)結構總體設計

本系統(tǒng)部署在hadoop+nutch+solr的集群框架上,分為四個局部,系統(tǒng)功能組成如下:

基于Hadoop+Nutch+Solr的信息采集搜索系統(tǒng)的設計與實現(xiàn)

系統(tǒng)功能組成圖

資料文檔解析,實現(xiàn)單個文件和壓縮文件上傳,對壓縮文件自動解壓;對資料文件實現(xiàn)多格式識

別,例如pdf,word,html,excel等格式文件,文件提取標題,作者,時間,內容等關鍵信息,轉換為xml

文件,保存在指定路徑下,對文件集建立索引,進行搜索查詢。

分布式爬取,系統(tǒng)利用hadoop+nuch實現(xiàn)分布式數(shù)據(jù)爬取,而插件進行改良實現(xiàn)url過濾;對爬出的子

站點網(wǎng)頁結構進行分析,過濾那些不希望存在的文本內容,改良解析插件,實現(xiàn)用戶可以進行內容過濾定

制,去除腳本、圖片以及其它標簽,獲取和處理跟主題相關的內容;對網(wǎng)頁編碼格式進行提取,實現(xiàn)內容

編碼的轉換。本系統(tǒng)支持帶有一次跳轉的簡單表單登陸的抓取,系統(tǒng)管理中設置對應的相關信息;復雜的

登陸需要分析登陸過程,另外寫出相對應的網(wǎng)絡協(xié)議插件。系統(tǒng)區(qū)分領域,根據(jù)不同主題建立索引。

分布式檢索,系統(tǒng)實現(xiàn)選擇不同主題的core進行查詢,輸入查詢關鍵詞,提供檢索文檔中出現(xiàn)詞頻最高

的前n個詞和關聯(lián)文檔;用戶自動創(chuàng)立不同core,修改模板配置文件相應選項,進行替換。

系統(tǒng)管理,實現(xiàn)用戶對nutch插件的修改;實現(xiàn)用戶對簡單表單登陸的相應參數(shù)修改;用戶可以改變如

keywords,description,pagerank等fields索引項信息.根據(jù)站點特征.從而改變排序主題關聯(lián)度。

系統(tǒng)架構圖

系統(tǒng)利用hadoop+nulch實現(xiàn)分布式數(shù)據(jù)爬取,基于Map/Reduce編程模型,充分利用其并行特性進行任務

分發(fā)和結果的歸并,獲取高效高質的爬行結果。系統(tǒng)架構圖如下:

系統(tǒng)架構圖

本系統(tǒng)基于五個節(jié)點的Hadoop框架實現(xiàn)。在Master節(jié)點上,JobTracker負責待爬取網(wǎng)頁鏈接的

分割并將任務分配給五個節(jié)點的TaskTracker執(zhí)行爬取任務.Master節(jié)點在協(xié)調整個系統(tǒng)分布式處理的同

時,也充當一個DataNodc參與任務執(zhí)行。TaskTrackcr接受JobTrackor分配的任務后,啟動多個線程執(zhí)

行Map下載任務,完成網(wǎng)頁抓取工作。TaskTracker監(jiān)測到Map任務執(zhí)行完畢后啟動Reduce執(zhí)行數(shù)據(jù)合并

任務。在HDFS文件系統(tǒng)中有三個數(shù)據(jù)庫:CrawlDb和LinkDb存儲URL及URL互聯(lián)關系,作為爬行和重新

爬取的依據(jù);Segments存儲抓取的網(wǎng)頁內容。

1、在Hadoop和nutch基礎上爬取的運行流程如下列圖所示:

(1)urls

(2)generatesegment

(containsurlsscheduledfor

indexing

fetchlist

(3)fetchcontent

圖hadoop+nutch爬取運行流程

讀取URL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論