Nutch是一個由Java實現的,開放源代碼(open-source)的web搜索引擎。主要用於收集網頁數據,而後對其進行分析,創建索引,以提供相應的接口來對其網頁數據進行查詢的一套工具。其底層使用了Hadoop來作分佈式計算與存儲,索引使用了Solr分佈式索引框架來作,Solr是一個開源的全文索引框架,從Nutch 1.3開始,其集成了這個索引架構。html
Nutch目前最新的版本爲version1.4。java
Nutch 致力於讓每一個人能很容易,同時花費不多就能夠配置世界一流的Web搜索引擎。爲了完成這一宏偉的目標,Nutch必須可以作到:linux
Nutch是開放源代碼的,所以任何人均可以查看他的排序算法是如何工做的。商業的搜索引擎排序算法都是保密的,咱們沒法知道爲何搜索出來的排序結果是如何算出來的。更進一步,一些搜索引擎容許競價排名,好比百度,這樣的索引結果並非和站點內容相關的。所以Nutch對學術搜索和政府類站點的搜索來講,是個好選擇。由於一個公平的排序結果是很是重要的。web
你是否是不喜歡其餘的搜索引擎展示結果的方式呢?那就用 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不只提供搜索,並且還有數據抓取的功能。apache
簡單的說:瀏覽器
一個常見的問題是:我應該使用Lucene仍是Nutch?tomcat
最簡單的回答是:若是你不須要抓取數據的話,應該使用Lucene。bash
常見的應用場合是:你有數據源,須要爲這些數據提供一個搜索頁面。在這種狀況下,最好的方式是直接從數據庫中取出數據並用Lucene API創建索引。
在你沒有本地數據源,或者數據源很是分散的狀況下,應該使用Nutch。
咱們如今進行的是Nutch的單機版安裝以及配置。
本次安裝Nutch的環境介紹:
下面是軟件的下載地址:
當所需軟件準備好以後,咱們用"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已經安裝完畢。