2012-12-24 40 views
6

我想使用Nutch的1.6在Windows環境中,但每次我試圖爲每個站點Nutch Tuorial Apache給我的程序總是與以下異常結束運行時間:在Windows中使用Nutch的7

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-ajayn\mapred\staging\ajayn-1231695575\.staging to 0700 

我一直在網上搜索,但沒有具體的解決方案。請注意,我沒有在系統中安裝或運行hadoop實例,我唯一的目的是試用nutch作爲網絡爬蟲代理。

它甚至有可能在Windows中運行nutch 1.6,如果是的話,有關如何去解決它的任何指針,並避免上述例外。 PS:如果有幫助,/ tmp /文件夾有附加的只讀屬性,即使你嘗試這樣做也不會改變。另外從cygwin我試圖設置文件權限777,但每次我嘗試運行nutch實例時,會創建一個新文件夾,例如:「ajayn-1231695575」,它不具有任何執行權限。

感謝

阿賈伊

回答

0

我們在錢櫃Nutch的1.3,我們建議使用具有發展虛擬框和一個共享目錄Ubuntu的虛擬機環境,讓您可以在Windows上使用您的IDE開發和部署同樣的問題到你的vm並在Linux上運行Nutch。

1

你試過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.jard:\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.jard:\dev\ir\nutch-1.7\lib一些位置備份

6.2)下載hadoop-core-0.20.205.0.jard:\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」。