wiki:waue/2009/0409

Version 3 (modified by waue, 15 years ago) (diff)

--

Nutch 完整攻略

前言

  • 雖然之前已經測試過了,網路上也有許多人分享過成功的經驗,然而這篇的重點
    • 完整的安裝nutch,並解決中文亂碼問題
    • 用hadoop的角度來架設nutch
    • 搜尋引擎不只是找網頁內的資料,也能爬到網頁內的檔案(如pdf,msword)

環境

  • 目錄
/opt/nutch nutch 家目錄
/opt/nutch_conf nutch設定檔
/opt/hadoop hadoop家目錄
/opt/conf hadoop設定檔
/tmp/ 日誌檔、中間檔與暫存檔

step 1 安裝好Hadoop叢集

  • 可以參考這篇 hadoop叢集安裝
  • 當然單機版也可以,只是這樣就直接安裝nutch更省事囉!單機安裝nutch可以參考這裡nutch單機安裝,但是設定檔要參考這篇的才完整。
  • 安裝好hadoop 叢集之後,/opt/的權限就是使用者的了,並且ssh登入兩台都免密碼,hadoop也能正常執行,並且安裝於/opt/hadoop下,設定檔在 /opt/conf

step 2 下載與安裝

2.1 下載 nutch 並解壓縮

  • nutch 1.0 (2009/03/28 release )
    $ cd /opt
    $ wget http://ftp.twaren.net/Unix/Web/apache/lucene/nutch/nutch-1.0.tar.gz
    $ tar -zxvf nutch-1.0.tar.gz
    $ mv nutch-1.0.tar.gz nutch
    

2.2 部屬hadoop,nutch目錄結構

$ mv nutch/conf ./nutch_conf
$ cp -rf conf/* nutch_conf
$ cp -rf hadoop/* nutch
  • 做完以上動作,nutch的設定檔就會被放在/opt/nutch_conf下,並且把現有hadoop的設定(/opt/conf)帶進nutch的設定中,而nutch_home內的hadoop執行檔也會跟正在運行的hadoop同個版本。
  • 以上的目錄結構在於nutch與hadoop分離,主程式與設定檔分離,(日誌檔則統一被紀錄到/tmp中),這樣的目的在於,要刪除nutch的話直接移除目錄就好,不會動到原本的hadoop。

step 3 編輯設定檔

  • 所有的設定檔都在 /opt/nutch_conf 下

3.1 hadoop-env.sh

  • 將原本的檔案hadoop-env.sh任意處填入
    export JAVA_HOME=/usr/lib/jvm/java-6-sun
    
    export HADOOP_HOME=/opt/nutch
    
    export HADOOP_CONF_DIR=/opt/nutch_conf
    
    export HADOOP_SLAVES=$HADOOP_CONF_DIR/slaves
    
    export HADOOP_LOG_DIR=/tmp/nutch/logs
    
    export HADOOP_PID_DIR=/tmp/nutch/pid
    
    export NUTCH_HOME=/opt/nutch
    
    export NUTCH_CONF_DIR=/opt/nutch_conf
    
  • 載入環境設定值
    $ source /opt/nutch_conf/hadoop-env.sh
    
  • ps:強烈建議寫入 /etc/bash.bashrc 中比較萬無一失!!

3.2 hadoop-site.xml

<configuration>
<property>
    <name>fs.default.name</name>
    <value>gm1.nchc.org.tw:9000</value>
    <description> The name of the default file system. Either the literal string "local" or a host:port for NDFS. </description>
</property>
<property>
    <name>mapred.job.tracker</name>
    <value>gm1.nchc.org.tw:9001</value>
    <description> The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task. </description>
</property>
</configuration>

3.3 nutch-site.xml

<configuration>
<property>
  <name>http.agent.name</name>
  <value>waue</value>
  <description>HTTP 'User-Agent' request header. </description>
</property>
<property>
  <name>http.agent.description</name>
  <value>MyTest</value>
  <description>Further description</description>
</property>
<property>
  <name>http.agent.url</name>
  <value>gm1.nchc.org.tw</value>
  <description>A URL to advertise in the User-Agent header. </description>
</property>
<property>
  <name>http.agent.email</name>
  <value>waue@nchc.org.tw</value>
  <description>An email address
  </description>
</property>
</configuration>

3.4 slaves

其實不用改,因為原本就是localhost

localhost

3.5 crawl-urlfilter.txt

將此檔的兩行改為下面內容

# skip URLs containing certain characters as probable queries, etc.
-[*!@]

# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*.*/

step 4 執行

4.1 編輯url清單

$ mkdir urls
$ vim urls.txt
http://lucene.apache.org

4.2 開啟HDFS

$ bin/hadoop namenode -format
$ bin/start-all.sh

4.3 上傳清單到HDFS

$ bin/hadoop -put urls urls

4.4 執行nutch crawl

$ bin/nutch crawl urls -dir crawl01 -depth 3

step 5 web瀏覽

5.1 安裝tomcat

  • 下載
    $ cd /opt/
    $ wget http://ftp.twaren.net/Unix/Web/apache/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz
    
  • 解壓縮
    $ tar -xzvf apache-tomcat-6.0.18.tar.gz
    $ mv apache-tomcat-6.0.18 tomcat
    

5.2 將crawl結果匯入tomcat

$ cd /opt/nutch
$ mkdir web
$ cd web
$ jar -xvf nutch-1.0.war
$ rm nutch-1.0.war
$ mv /opt/tomcat/webapps/ROOT /opt/tomcat/webapps/ROOT-ori
$ cd /opt/nutch
$ mv /opt/nutch/web /opt/tomcat/webapps/ROOT
$ vim /opt/tomcat/webapps/ROOT/WEB-INF/classes/nutch-site.xml
<configuration>
    <property>
        <name>searcher.dir</name>
        <value>/opt/search</value>
    </property>
</configuration>

並且修改 /opt/tomcat/conf/server.xml 以修正中文問題

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

5.3 瀏覽crawl結果

$ /opt/tomcat/bin/startup.sh

http://gm1.nchc.org.tw:8080