2015-04-12 73 views
3

我跟着文章:https://wiki.apache.org/nutch/NutchTutorial並設置了apache nutch + solr。但是我想澄清一下,如果我理解了正確的工作步法。Apache Nutch步驟說明

1)。注入:在這一部分,apache從給定的seed.txt中讀取url列表,將url與regex-urlfiler正則表達式進行比較,並使用受支持的url更新crawldb。 2)。生成:bin/nutch生成抓取/ crawldb抓取/分段 Nutch從crawldb抓取URL並創建準備提取的URL的抓取列表。它需要像-topN和時間間隔等輸入,然後在分段下創建具有當前時間的目錄。

我相信,前兩步沒有互聯網互動。一切都在本地發生。

問:提取列表保存在哪裏? 3)。提取:bin/nutch抓取/分段/

抓取run fetchList並從給定URL獲取內容(和URL)並將其保存在某處。

問:是否讀取URL的整個給定頁面(文本+其他URL)?問:Nutch保存獲取的數據? 4)。解析:bin/nutch解析抓取/段/

它解析條目。

問:在這裏解析是什麼意思? 問:我在哪裏可以找到這一步的結果? 5)。 bin/nutch updatedb crawl/crawldb crawl/segments/

當這完成後,Nutch使用提取結果更新數據庫。

問:是否僅使用解析數據更新crawldb或其他內容?

請清除我的疑惑。

回答

4

您對第一步和第二步的假設是正確的。但是,您需要了解整個工作流程是如何發生的。當Nutch提取網址時,它會將網頁數據或圖像等數據作爲二進制獲取,並使用名爲Content的類將其作爲抓取數據存儲在區塊中。

稍後,在解析步驟中,將存儲的內容對象解析爲另一種數據格式,稱爲ParsedData,其中包含數據的文本以及其外鏈(如果可用)。 ParsedData被放回到下一批作業中處理的區域。在這一步之後,crawldb更新作業,這裏來自上一步的鏈接將放回到crawldb中,以更新頁面排名和Web鏈接詳細信息。

在索引步驟中,來自分段中的分析數據的信息被構造爲字段。 Nutch使用一個名爲「NutchDocument」的分類來存儲結構化數據,nutch文檔被放回到下一步要處理的分段中。最後,Nutch發送Nutch文檔來索引存儲,比如Solr或Elasticsearch。這是最後一步,在這個階段,如果您不想再次將它們發送到索引存儲,您可以刪除這些段。換句話說,這是數據的後續

種子列表 - >注入url - >抓取項目(簡單的url) - >內容 - >解析數據 - > nutch文檔。

我希望能回答你的一些問題。

+0

感謝您的回答。它真的幫助我理解。 你能指點我所有的輸出crawlItem,Contents,ParsedData和NutchDocument的位置嗎? – user3089214

+0

這些類都在Nutch核心源代碼下。不過,Nutch使用hadoop RecordReader和Writer來讀寫這些數據格式。您需要閱讀nutch源代碼以瞭解如何閱讀這些材料。但是,您可以使用bin/nutch命令輕鬆瀏覽每個步驟中存儲的數據。 – ameertawfik

+0

謝謝@ameertawfik。我想更好地理解hadoop。你能引導我正確的書,博客或任何教程? – user3089214