2012-07-30 52 views
2

我開始使用Apache Nutch(v1.5.1)爲某個域下的所有網站建立索引。 在我的域中有大量的網站(按數量級排列),我需要逐步爲它們編制索引,而不是等待整個過程的結束。如何在爬行時製作Apache Nutch索引

我發現這在nutch維基(這裏http://wiki.apache.org/nutch/NutchTutorial/#A3.2_Using_Individual_Commands_for_Whole-Web_Crawling)應該工作的東西。這個想法是讓一個腳本週期性地調用我的進程的每一步(抓取,獲取,解析,...)一定數量的數據(例如1000 URL)。

bin/nutch inject crawl/crawldb crawl/seed.txt 

bin/nutch generate crawl/crawldb crawl/segments -topN 25 
s1=`ls -d crawl/segments/2* | tail -1` 
echo $s1 

bin/nutch fetch $s1 
bin/nutch parse $s1 
bin/nutch updatedb crawl/crawldb $s1 

bin/nutch generate crawl/crawldb crawl/segments -topN 25 
s2=`ls -d crawl/segments/2* | tail -1` 
echo $s2 

bin/nutch fetch $s2 
bin/nutch parse $s2 
bin/nutch updatedb crawl/crawldb $s2 

... 

bin/nutch invertlinks crawl/linkdb -dir crawl/segments 
bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/* 

我的問題是:有沒有什麼辦法可以指定該設置直接進入Nutch的,讓他做這個東西在並行多trasparent方式?例如在分離的三維?

感謝回答。

UPDATE

我試圖創建腳本(代碼段),但unfortunatlly我上反轉鏈接階段的錯誤。這是輸出:

LinkDb: starting at 2012-07-30 11:04:58 
LinkDb: linkdb: crawl/linkdb 
LinkDb: URL normalize: true 
LinkDb: URL filter: true 
LinkDb: internal links will be ignored. 
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927 
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625 
... 
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704095730 

LinkDb: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: 
file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927/parse_data 

Input path does not exist: 
file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625/parse_data 
... 

感謝您的幫助。

回答

3

(如果我有足夠的代表我會張貼此作爲評論)。

請記住,-depth開關是指每個CRAWL,而不是它將爬行的網站的總體深度。這意味着深度= 1的第二次運行將從已經索引的數據中下降一個級別,並停止在topN文件處。因此,如果您不急於完全填充數據,那麼通過執行大量重複的淺度nutch抓取語句(使用smallish-depth),我已經在類似的情況下取得了很多成功。 (3-5)和-topN(100-200)變量)。這將確保只有(深度* topN)頁面在每批中獲得索引,並且索引將在幾分鐘內開始遞送URL。

然後,我通常設置抓取每個(1.5 *初始抓取時間平均)秒,然後讓它抓取。可以理解的是,每次抓取只有1,000個文檔,通過大型基礎架構需要花費大量時間,並且(在索引,暫停時間和其他開銷之後),該方法可以使抓取整個堆棧的時間倍增。

最初幾次通過基礎設施,這是一個非常糟糕的瑣事。然而,隨着適應性爬行算法的開始,重繪時間開始接近合理的值:包開始真正實現。

(這有點類似於你在Nutch的維基提「whole web crawling」方法,它建議您將數據分解成1000個段,但更簡潔易懂的初學者。)