1. 程式人生 > >nutch+hadoop 配置使用

nutch+hadoop 配置使用

文件系統 mas main 由於 規則 變量 oop www pat

nutch+hadoop 配置使用

配置nutch+hadoop
1,下載nutch。如果不需要特別開發hadoop,則不需要下載hadoop。因為nutch裏面帶了hadoop core包以及相關配置
2,建立目錄(根據自己喜好)
/nutch
/search (nutch installation goes here) nutch安裝到這裏,也就是解壓到這裏
/filesystem hadoop的文件系統存放點
/local /crawl後放置索引用來search用的
/home (nutch user‘s home directory) 如果你用系統用戶,這個基本沒用
/tomcat 啟動nutch.war用來search索引的app



3,conf/hadoop-env.sh 一定要配置JAVA_HOME,否則系統起不來
4,配置master和slave的ssh,否則每次都要輸入passwd
ssh-keygen -t rsa
然後回車即可
cp id_rsa.pub authorized_keys
(copy到其它的slave上)scp /nutch/home/.ssh/authorized_keys nutch@devcluster02:/nutch/home/.ssh/authorized_keys
5,將bin和conf下所有的.sh、 nuch、 hadoop文件 dos2unix
dos2unix /nutch/search/bin/*.sh /nutch/search/bin/hadoop


配置hadoop-size.xml
6,記住要把master文件從nutch/hadoop copy到這個nutch中,應該是bug。也就是說啟動需要這個文件,文件內容為默認的localhost即可(如果是分布式,可能需要配置)
7,格式化namenode
bin/hadoop namenode -format
8,啟動:bin/start-all.sh
9,配置crawl (以配置一個網址 lucene.apache.org為例)
cd /nutch/search
mkdir urls
vi urls/urllist.txt http://lucene.apache.org

cd /nutch/search

bin/hadoop dfs -put urls urls

cd /nutch/search
vi conf/crawl-urlfilter.txt
change the line that reads: +^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
to read: +^http://([a-z0-9]*\.)*apache.org/
10,啟動crawl
bin/nutch crawl urls -dir crawled -depth 3
11,查詢
bin/hadoop dfs -copyToLocal crawled /media/do/nutch/local/(crawled) 將index的東西copy到以上配置的local中,因為search不能用dfs中搜索(從文檔看是這樣)
12,啟動nutch.war,測試
vi nutch-site.xml nutch.war中classes下
start tomcat

註意點:
1,masters文件 nutch原來沒有,需要copy到conf下
2,crawl的log4j配置默認有問題,需要增加:
hadoop.log.dir=.
hadoop.log.file=hadoop.log
3,nutch1.0 一定要配置nutch-site.xml。重新配置http.agent。default.xml裏面已經存在。


問題:
1,運行hadoop程序時, 中途我把它終止了,然後再向hdfs加文件或刪除文件時,出現Name node is in safe mode錯誤:
rmr: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode
解決的命令:
bin/hadoop dfsadmin -safemode leave #關閉safe mode



索引命令:
bin/nutch index plainindex/paodingindexes plainindex/crawldb plainindex/linkdb plainindex/segments/20090528132511 plainindex/segments/20090528132525 plainindex/segments/20090528132602

eg:
index:
bin/nutch index crawled/indexes_new crawled/crawldb crawled/linkdb crawled/segments/20100313132517

merge:
bin/nutch merge crawled/index_new crawled/indexes_new

去重 dedup:
bin/nutch dedup crawled/index_new


中文分詞:
1.對建立索引所用分詞工具的修改

將下載的中文分詞包放到lib目錄下,改名為analysis-zh.jar(當然,你也可以不用改)。找到下面文件

src\java\org\apache\nutch\analysis\NutchDocumentAnalyzer.java

修改tokenStream方法如下

public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer;
analyzer= new MMAnalyzer();
return analyzer.tokenStream(fieldName, reader);
}

註意:由於加入信息的分析類,你需要將該類導入。使用如下語句。

import jeasy.analysis.*;

2.對查詢所用分析部分的修改

src\java\org\apache\nutch\analysis\中的NutchAnalysis.jj文件

將 <SIGRAM: <CJK> >

改為:| <SIGRAM: (<CJK>)+ >

使用javacc工具將NutchAnalysis.jj生成java文件,共會生成7個java文件,將他們拷貝到下面的文件夾中替 換原有文件。

src\java\org\apache\nutch\analysis

如何安裝與使用javacc?

下載javacc並解壓,然後將javacc的主目錄添加到環境變量下。進入命令行,輸入javacc,如果不出現不能識別該命令之類的說法,證明安裝成功。

進入NutchAnalysis.jj文件所在的目錄,輸入javacc NutchAnalysis.jj命令就會生成7個java文件了。

3.重新編譯工程文件

這裏你需要用到ant工具了,那麽ant工具怎麽安裝呢?

ant的安裝與配置與 javacc類似,下載後解壓,然後在path環境變量中加如指向ant下的bin文件夾的路徑。

使用:從命令行進入nutch目錄中,輸入ant命令,它會自動根據當前目錄下的build.xml進行重建。重建完畢後會在改目錄下產生一個build文件夾。

4.重建後的文件替換

一、將nutch-0.x.x.job文件拷貝出來替換nutch目錄下的同名文件。

二、將\build\classes\org\apache\nutch\analysis目錄下的所有文件拷貝替換nutch-0.x.x.jar中org\apache\nutch\analysis目錄下的文件。

三、將nutch-0.x.x.jar文件和你的分詞包(我的是analysis-zh.jar)拷貝到tomcat中WEB-INF\lib下面。

5.重新爬行與建立索引,重新啟動tomcat即可。




nutch搜索url過濾規則:
對於每一次(由depth決定)對url進行filter,所以要搜子頁面,首頁一定要通過filter,否則搜索不到。
詳見:http://hi.baidu.com/ldl_java/blog/item/84d1427894231ee62f73b30a.html

nutch+hadoop 配置使用