
Nutch是一個由Java實作的,開放源代碼(open-source)的web搜尋引擎。主要用于收集網頁資料,然後對其進行分析,建立索引,以提供相應的接口來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分布式計算與存儲,索引使用了Solr分布式索引架構來做,Solr是一個開源的全文索引架構,從Nutch 1.3開始,其內建了這個索引架構。
Nutch目前最新的版本為version1.4。
Nutch 緻力于讓每個人能很容易,同時花費很少就可以配置世界一流的Web搜尋引擎。為了完成這一宏偉的目标,Nutch必須能夠做到:
每個月取幾十億網頁
為這些網頁維護一個索引
對索引檔案進行每秒上千次的搜尋
提供高品質的搜尋結果
以最小的成本運作
透明度
Nutch是開放源代碼的,是以任何人都可以檢視他的排序算法是如何工作的。商業的搜尋引擎排序算法都是保密的,我們無法知道為什麼搜尋出來的排序結果是如何算出來的。更進一步,一些搜尋引擎允許競價排名,比如百度,這樣的索引結果并不是和站點内容相關的。是以Nutch對學術搜尋和政府類站點的搜尋來說,是個好選擇。因為一個公平的排序結果是非常重要的。
擴充性
你是不是不喜歡其他的搜尋引擎展現結果的方式呢?那就用 Nutch 寫你自己的搜尋引擎吧。 Nutch 是非常靈活的,他可以被很好的客戶訂制并內建到你的應用程式中。使用Nutch 的插件機制,Nutch 可以作為一個搜尋不同資訊載體的搜尋平台。當然,最簡單的就是內建Nutch到你的站點,為你的使用者提供搜尋服務。
對搜尋引擎的了解
我們并沒有google的源代碼,是以學習搜尋引擎Nutch是個不錯的選擇。了解一個大型分布式的搜尋引擎如何工作是一件讓人很受益的事情。在寫Nutch的過程中,從學院派和工業派借鑒了很多知識:比如:Nutch的核心部分目前已經被重新用 Map Reduce 實作了。Map Reduce 是一個分布式的處理模型,最先是從 Google 實驗室提出來的。并且 Nutch 也吸引了很多研究者,他們非常樂于嘗試新的搜尋算法,因為對Nutch 來說,這是非常容易實作擴充的。
Lucene是一個Java高性能全文索引引擎工具包可以友善的嵌入到各種實際應用中實作全文索引搜尋功能。它提供了一系列API,能夠對文檔進行預處理、過濾、分析、索引和檢索排序。在保持高效和簡單的特點之外,還保證了開發者可以自由定制群組合各種核心功能。Nutch是一個應用程式,是一個以Lucene為基礎實作的搜尋引擎應用,Lucene為Nutch 提供了文本搜尋和索引的API,Nutch不僅提供搜尋,而且還有資料抓取的功能。
簡單的說:
Lucene 不是完整的應用程式,而是一個用于實作全文檢索的軟體庫。
Nutch 是一個應用程式,可以以 Lucene 為基礎實作搜尋引擎應用。
一個常見的問題是:我應該使用Lucene還是Nutch?
最簡單的回答是:如果你不需要抓取資料的話,應該使用Lucene。
常見的應用場合是:你有資料源,需要為這些資料提供一個搜尋頁面。在這種情況下,最好的方式是直接從資料庫中取出資料并用Lucene API建立索引。
在你沒有本地資料源,或者資料源非常分散的情況下,應該使用Nutch。
我們現在進行的是Nutch的單機版安裝以及配置。
本次安裝Nutch的環境介紹:
作業系統:CentOS6.0(機器名:TSlave.Hadoop)
JDK版本:jdk-6u31-linux-i586.bin
Nutch版本:apache-nutch-1.4-bin.tar.gz
Tomcat版本:apache-tomcat-7.0.27.tar.gz
下面是軟體的下載下傳位址:
當所需軟體準備好之後,我們用"FTPFlash"軟體把上面上傳到Linux伺服器,為下面準備安裝做好準備。
首先用root身份登入"TSlave.Hadoop:192.168.1.11"後在"/usr"下建立"java"檔案夾,再把用FTP上傳到"/home/hadoop/"下的"jdk-6u31-linux-i586.bin"複制到"/usr/java"檔案夾中。
mkdir /usr/java cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java
接着進入"/usr/java"目錄下通過下面指令使其JDK獲得可執行權限,并安裝JDK。
chmod +x jdk-6u31-linux-i586.bin ./jdk-6u31-linux-i586.bin
按照上面幾步進行操作,最後點選"Enter"鍵開始安裝,安裝完會提示你按"Enter"鍵退出,然後檢視"/usr/java"下面會發現多了一個名為"jdk1.6.0_31"檔案夾,說明我們的JDK安裝結束,删除"jdk-6u31-linux-i586.bin"檔案,進入下一個"配置環境變量"環節。
接着配置JDK環境變量,編輯"/etc/profile"檔案,在後面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。在"/etc/profile"檔案的尾部添加以下内容:
# set java environment export JAVA_HOME=/usr/java/jdk1.6.0_31 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
儲存并退出,執行下面指令使其配置立即生效。
source /etc/profile
最後驗證一下JDK是否安裝成功。
java -version
首先進入"/home/hadoop"目錄,把"apache-tomcat-7.0.27.tar.gz"複制到"/usr"下面,然後解壓。
cp /home/hadoop /apache-tomcat-7.0.27.tar.gz /usr
用下面指令進行解壓Tomcat安裝包。
tar –zxvf apache-tomcat-7.0.27.tar.gz
解壓完之後,然後删除安裝包,并對"apache-tomcat-7.0.27"重命名為"tomcat",把該檔案夾授權于普通使用者"hadoop"。
rm -rf apache-tomcat-7.0.27.tar.gz mv apache-tomcat-7.0.27 tomcat chown -R hadoop:hadoop tomcat
接着添加Tomcat環境變量,為了在以後系統啟動後就配置好Tomcat所需的環境變量,要在"/etc/profile"檔案中設定,并用"source /etc/profile"指令使其立即有效。
# set tomcat environment export CATALINA_HOME=/usr/tomcat export CATALINA_BASE=/usr/tomcat export PATH=$PATH:$ CATALINA_HOME /bin
此時用"reboot"命名重新開機電腦,用普通"hadoop"登入Linux系統,執行下面指令啟動我們剛才配置的Tomcat。
startup.sh
備注:别用root使用者使用該指令,因為用最高使用者啟動Tomcat後,會在Tomcat的日志檔案中生成相應的日志,但是日志的建立者是root,此時在轉到普通使用者啟動Tomcat時,由于剛才建立的日志的使用者是最高使用者,其他使用者無法對這些日志檔案進行寫,導緻啟動tomcat失敗。還有記得把防火牆關掉。
在浏覽器輸入"192.168.1.11 :8080",檢視是否已經啟動成功。
額外執行操作,如果端口發生沖突時,或者出現中文亂碼時,修改"server.xml"配置檔案,該檔案位于"/usr/tomcat/conf"目錄下面。
Apache http伺服器的端口是 80,Apache Tomcat伺服器端口是8080。二者不沖突,若有沖突,修改如下:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" c disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
預設服務端口為8080,若有沖突(如Apache),則可通過此配置檔案更改端口(藍色);如果配置後nutch出現中文亂碼問題,則增加編碼配置(紅色)。
我們用普通使用者"hadoop"把Nutch安裝在"/home/hadoop"下面。用下面指令進行解壓和重名。
tar -zxvf apache-nutch-1.4-bin.tar.gz mv apache-nutch-1.4-bin nutch
添加Nutch的環境變量,在"/home/hadoop/.bashrc"檔案中添加如下内容。
# set nutch environment export NUTCH_HOME=/home/hadoop/nutch export PATH=$PATH:$ NUTCH _HOME /runtime/local/bin
添加完之後用"source .bashrc"使其立即生效。
然後在輸入"nutch"指令測試是否配置成功,結果出現下面錯誤,當然這個錯誤網上說不一定出現。
這時我們檢視"/home/hadoop/nutch/runtime/local/nutch"這個檔案時發現沒有執行權限。用下面指令添加執行權限。
chmod +x nutch
當給該檔案添加執行權限後,我們再次檢視,發現該檔案的顔色發生了變化,再次執行"nutch"指令時,下面出現了該命名的參數清單。到此為止我們的單機版Nutch已經安裝完畢。
如果,您認為閱讀這篇部落格讓您有些收獲,不妨點選一下右下角的【<b>推薦</b>】。
如果,您希望更容易地發現我的新部落格,不妨點選一下左下角的【<b>關注我</b>】。
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
本文轉自蝦皮部落格園部落格,原文連結:http://www.cnblogs.com/xia520pi/p/3615554.html