天天看點

Nutch1.8+Hadoop1.2+Solr4.3分布式叢集配置

[b][color=green][size=large]Nutch 是一個開源Java 實作的搜尋引擎。它提供了我們運作自己的搜尋引擎所需的全部工具。包括全文搜尋和Web爬蟲。當然在百度百科上這種方法在Nutch1.2之後,已經不再适合這樣描述Nutch了,因為在1.2版本之後,Nutch專注的隻是爬取資料,而全文檢索的部分徹底的交給Lucene和Solr,ES來做了,當然因為他們都是近親關系,是以Nutch抓取完後的資料,非常easy的就能生成全文索引。

[/size][/color][/b]

[b][color=olive][size=large]下面散仙,進入正題,Nutch目前最新的版本是2.2.1,其中2.x的版本支援gora提供多種存儲方式,1.x版本最新的是1.8隻支援HDFS存儲,散仙在這裡用的還是Nutch1.8,那麼,散仙為什麼選擇1.x系列呢? 這其實和自己的Hadoop環境有關系,2.x的Nutch用的Hadoop2.x的版本,當然如果你不嫌麻煩,你完全可以改改jar的配置,使Nutch2.x跑在Hadoop1.x的叢集上。使用1.x的Nutch就可以很輕松的跑在1.x的hadoop裡。下面是散仙,本次測試Nutch+Hadoop+Solr叢集的配置情況:

[table]

|序号|名稱|職責描述|

|1|Nutch1.8|主要負責爬取資料,支援分布式

|2|Hadoop1.2.0|使用MapReduce進行并行爬取,使用HDFS存儲資料,Nutch的任務送出在Hadoop叢集上,支援分布式

|3|Solr4.3.1|主要負責檢索,對爬完後的資料進行搜尋,查詢,海量資料支援分布式

|4|IK4.3|主要負責,對網頁内容與标題進行分詞,便于全文檢索

|5|Centos6.5|Linux系統,在上面運作nutch,hadoop等應用

|6|Tomcat7.0|應用伺服器,給Solr提供容器運作

|7|JDK1.7|提供JAVA運作環境

|8|Ant1.9|提供Nutch等源碼編譯

|9|屌絲軟體工程師一名|主角

[/table]

[/size][/color][/b]

[b][color=green][size=large]下面開始,正式的啟程

1, 首先確定你的ant環境配置成功,一切的進行,最好在Linux下進行,windows上出問題的幾率比較大,下載下傳完的nutch源碼,進入nutch的根目錄下,執行ant,等待編譯完成。編譯完後,會有runtime目錄,裡面有Nutch啟動的指令,local模式和deploy分布式叢集模式[/size][/color][/b]

[img]http://dl2.iteye.com/upload/attachment/0097/1142/8d7bd2cd-648e-3888-b281-5a82904e0c71.jpg[/img]

[img]http://dl2.iteye.com/upload/attachment/0097/1144/cea57152-03cb-389d-9013-db5e299e887d.jpg[/img]

[b][color=green][size=large]2, 配置nutch-site.xml加入如下内容:[/size][/color][/b]

[b][color=green][size=large]3, 在hadoop叢集上建立urls檔案夾和mydir檔案夾

,前者用于存儲種子檔案位址,後者存放爬取完後的資料。

hadoop fs -mkdir urls --建立檔案夾

hadoop fs -put HDFS路徑 本地路徑 --上傳種子檔案到HDFS上。

hadoop fs -ls / ---檢視路徑下内容

[/size][/color][/b]

[img]http://dl2.iteye.com/upload/attachment/0097/1149/1e610d34-f427-381e-9c62-8bf3a515d07a.jpg[/img]

[b][color=green][size=large]4,配置好hadoop叢集,以及它的環境變量HADOOP_HOME這個很重要,Nutch運作時候,會根據Hadoop的環境變量,送出作業。

[/size][/color][/b]

export  HADOOP_HOME=/root/hadoop1.2
export PATH=$HADOOP_HOME/bin:$PATH 
ANT_HOME=/root/apache-ant-1.9.2
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/root/jdk1.7
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
           

[b][color=olive][size=large]配置完成之後,可以使用which hadoop指令,檢測是否配置正确:[/size][/color][/b]

[code="java"]# which hadoop

/root/hadoop1.2/bin/hadoop

# [/code]

[b][color=olive]5, 配置solr服務,需要将Nutch的conf下的schema.xml檔案,拷貝到solr的裡面,覆寫掉solr原來的schema.xml檔案,并加入IK分詞,内容如下:[/color][/b]

[color=green][size=large]6, 配置好後,進行nutch的/root/apache-nutch-1.8/runtime/deploy/bin目錄下

執行如下指令:

./crawl urls mydir http://192.168.211.36:9001/solr/ 2

啟動叢集抓取任務。

抓取中的MapReduce截圖如下:

[/size][/color]

[img]http://dl2.iteye.com/upload/attachment/0097/1154/d437f874-f0f5-3b26-b9e4-a960cb41a05e.jpg[/img]

[b][color=olive][size=large]抓取完,我們就可以去solr中檢視抓取的内容了,截圖如下:[/size][/color][/b]

[img]http://dl2.iteye.com/upload/attachment/0097/1162/99ea1193-b72c-387f-b83a-e5424f30aeba.jpg[/img]

[b][color=olive][size=large]至此,一個簡單的抓取,搜尋系統就搞定了,非常輕松,使用都是Lucene系列開源的工程。[/size][/color][/b]

[b][color=olive][size=large]總結:配置過程中遇到幾個比較典型的錯誤,記錄如下:[/size][/color][/b]

[b][color=green]在執行抓取的shell指令時,發現

使用 bin/crawl urls mydir http://192.168.211.36:9001/solr/ 2 指令有時候會出現,一些HDFS上的目錄不能正确通路的問題,是以推薦使用下面的這個指令:

./crawl urls mydir http://192.168.211.36:9001/solr/ 2

[/color][/b]

繼續閱讀