你試過GettingNutchRunningWithWindows from the Nutch Wiki?
我的一些學生嘗試了很多,這裏是他們的工作成果:
測試與Nutch的1.7 - http://www.apache.org/dyn/closer.cgi/nutch/1.7/apache-nutch-1.7-bin.zip
您還需要cygwin的。
1)提取nutch到沒有空格的路徑。例如:
d:\dev\ir\nutch-1.7
2)將jdk複製到沒有空格的地方。我試圖在cygwin裏面創建一個符號鏈接,但是它並不好。例如
xcopy /S "C:\Program Files\Java\jdk1.7.0_21" c:\jdk1.7.0_21
3)在cygwin的設置的路徑的java
3.1)export JAVA_HOME=/cygdrive/c/jdk1.7.0_21
3.2)export PATH=$JAVA_HOME/bin:$PATH
3,3)檢查所有調用的Java是正確的。應該返回/cygdrive/c/jdk1.7.0_21/bin/java
SO FAR - 修復了第一個問題 - 帶有不正確的java路徑。現在到第二個問題 - hadoop修補。
4)修補的Hadoop
https://issues.apache.org/jira/browse/HADOOP-7682
https://github.com/congainc/patch-hadoop_7682-1.0.x-win
簡而言之: - - 把patch-hadoop_7682-1.0.x-win.jar
在d:\dev\ir\nutch-1.7\lib
加入下面的編輯d:\dev\ir\nutch-1.7\conf\nutch-site.xml
:
<property>
<name>fs.file.impl</name>
<value>com.conga.services.hadoop.patch.HADOOP_7682.WinLocalFileSystem</value>
<description>Enables patch for issue HADOOP-7682 on Windows</description>
</property>
5)Hadoop的臨時目錄 - 我不知道這是否有必要(嘗試應用之前),因爲我在應用補丁前添加了它,但在我的d:\dev\ir\nutch-1.7\conf\nutch-site.xml
我有
<property>
<name>hadoop.tmp.dir</name>
<value>C:\tmp\asd</value>
</property>
6)的Hadoop版本 -I我不知道這是否是必要的(嘗試在應用之前),我的hadoop降級到Hadoop的核心0.20.205.0.jarbefore我發現補丁和它仍然停留在我的設置上。 如果你覺得這需要它是在這裏:http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/0.20.205.0
6.1)移動hadoop-core-1.2.1.jar
從d:\dev\ir\nutch-1.7\lib
一些位置備份
6.2)下載hadoop-core-0.20.205.0.jar
到d:\dev\ir\nutch-1.7\lib
7)一些爬行優化。如果您需要抓取大量網站,請不要使用大量網址抓取網址,並且不要使用大量的網頁和topN。 如果你這樣做,你會看到nutch從同一個站點一次一個地取回一個鏈接,在取回之間等待5秒鐘。 原因是深度30和topN 200將最有可能只用來自同一站點的鏈接填充第一個提取隊列。 Nutch不會嘗試立即獲取它們,因爲默認情況下它將被配置爲不從同一個站點獲取多個線程。所以你註定要等待。很多。
7.1)爲了解決這個問題,首先運行幾個具有較小深度和topN的抓取 - 例如,
bin/nutch crawl urls -dir crawl -depth 3 -topN 4
這將填補產生的取隊列使用URL從多個站點
7.2),那麼你可以嘗試一個大晚上的抓取與
bin/nutch crawl urls -dir crawl -depth 20 -topN 150
7.3),以允許一些多線程添加以下內容到您的nutch-site.xml
。它將允許同時從同一個主機獲取多個線程。
注意!在使用它們之前閱讀互聯網中的屬性的含義。
<property>
<name>fetcher.threads.fetch</name>
<value>16</value>
</property>
<property>
<name>fetcher.threads.per.queue</name>
<value>4</value>
</property>
<property>
<property>
<name>fetcher.queue.mode</name>
<value>byDomain</value>
</property>
<name>fetcher.threads.per.host</name>
<value>8</value>
<description></description>
</property>
<property>
<name>fetcher.verbose</name>
<value>true</value>
</property>
<property>
<name>fetcher.server.min.delay</name>
<value>5.0</value>
<description>applicable ONLY if fetcher.threads.per.host is greater than 1 (i.e. the host blocking is turned off).</description>
</property>
</configuration>
注:當你爬很多網站,請確保您的D:\Dev\id\apache-nutch-1.7\conf\regex-urlfilter.txt
包括只在你感興趣的網站。否則,最終會在磁盤上出現「Internet」。