Version 3 (modified by waue, 16 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