> 原文出處:http://www.sanesee.com/
Nutch作為當今最流行的開源爬蟲之一,已被企業廣泛使用。Nutch的插件機制使得開發者可以靈活地定制網頁抓取策略。Nutch有著悠久的歷史,當今大名鼎鼎的Hadoop就是由Nutch發展而來。Nutch不僅可以運行在單機模式下,還可以運行在分布式模式下。
## 1 認識Nutch
目前Nutch分為兩個大版本1.x和2.x,Apache分別對這兩個大版本進行獨立開發和維護。其中,1.x和2.x最大的不同點在于,1.x是基于hadoop的HDFS文件系統的,而2.x將數據的存儲層抽象出來,可以將數據保存在Hbase、MySQL等數據庫中。還有一點很重要,Nutch在1.2以及之前,都是作為一個完整的搜索引擎進行發布的,而從1.3開始,Nutch本身就主要只有爬蟲功能,若需要對抓取的數據建立索引并進行搜索,還要用到Solr全文檢索服務器。由于Nutch和Solr都是基于Lucene開發的,因此Nutch抓取的數據可以輕松地在Solr中建立索引。Nutch官網可以下載到編譯好的1.x包,但2.x只提供源碼,需要自己編譯。Nutch使用Ant來構建的,若自己編譯的話,需要安裝Ant來編譯源碼。
對于如何選擇Nutch的版本,主要考慮一下以下問題:如果只需要抓取少量的網站,并對其建立索引,使用1.x和2.x都可以,甚至都可以使用單機的,而不需分布式。但如果要抓取大量網站,甚至是全網爬行,那么最好選擇1.x,并且采用分布式,因為1.x是基于hadoop文件系統的,而hadoop又是專門為處理大數據而生。若抓取大量網站時采用2.x,可能會遇到一些性能問題,要是使用MySQL來存儲數據,網頁數據上百億時,性能將是一個噩夢。
Nutch1.x不同的版本變化也比較大,執行命令發生過較大改變,因此,建議初學者下載本教程對應的版本1.10,等到熟悉使用Nutch的時候,那些改變對你而言就沒太大影響了。
Nutch作為當今最流行的開源爬蟲之一,已被企業廣泛使用。Nutch的插件機制使得開發者可以靈活地定制網頁抓取策略。Nutch有著悠久的歷史,當今大名鼎鼎的Hadoop就是由Nutch發展而來。Nutch不僅可以運行在單機模式下,還可以運行在分布式模式下。
## 2 Nutch工作環境
Nutch僅支持在Linux環境下工作,若要在Windows操作系統中使用Nutch,需要安裝Cygwin。Cygwin是在Windows下模擬Linux操作系統的軟件,它并非一個實際的操作系統。
最新版的Nutch 1.10需要JDK7運行環境,當然也可以使用最新版的JDK8。
若需要配置分布式運行環境,還需要下載hadoop-1.2.0的版本。Hadoop的歷史版本下載地址為[http://archive.apache.org/dist/hadoop/core/](http://archive.apache.org/dist/hadoop/core/)。
本教程將演示編譯Nutch源碼的過程,因此還需要安裝Ant。
## 3?下載Nutch
????在Nutch的官方網站[http://nutch.apache.org/downloads.html](http://nutch.apache.org/downloads.html)可以下載到最新版的Nutch,若需要下載歷史版本,請在這里下載[http://archive.apache.org/dist/nutch/](http://archive.apache.org/dist/nutch/)。本教程下載的包為apache-nutch-1.10-src.zip,它是一個源碼包,需要我們自己編譯,具體的編譯過程在后續教程中詳細講解。