2013-03-03 91 views
8

我想用戶的Solr使用Nutch在Windows計算機上,我發現了以下錯誤的權限:Nutch的Windows中:無法設置路徑

Exception in thread "main" java.io.IOException: Failed to set permissions of path: c:\temp\mapred\staging\admin-1654213299\.staging to 0700 

從大量的線程我學到的, hadoop似乎是由nutch使用的一些chmod魔術,可以在unix機器上運行,但不能在windows上運行。

現在這個問題存在了一年多了。我找到了一個線程,其中顯示了代碼行並提供了一個修復程序。我真的是他們中唯一一個有這個問題的人嗎?所有其他人創建一個自定義版本,以便在windows上運行nutch嗎?或者有一些選項可以禁用hadoop或其他解決方案嗎?也許另一個履帶而不是nutch?

非常感謝。 鮑里斯

下面是我在做什麼的堆棧跟蹤....

[email protected] /cygdrive/c/solr/apache-nutch-1.6 
    $ bin/nutch crawl urls -dir crawl -depth 3 -topN 5 -solr http://localhost:8080/solr-4.1.0 
    cygpath: can't convert empty path 
    crawl started in: crawl 
    rootUrlDir = urls 
    threads = 10 
    depth = 3 
    solrUrl=http://localhost:8080/solr-4.1.0 
    topN = 5 
    Injector: starting at 2013-03-03 17:43:15 
    Injector: crawlDb: crawl/crawldb 
    Injector: urlDir: urls 
    Injector: Converting injected urls to crawl db entries. 
    Exception in thread "main" java.io.IOException: Failed to set permissions of path:   c:\temp\mapred\staging\admin-1654213299\.staging to 0700 
     at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689) 
     at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662) 
     at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 
     at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344) 
     at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189) 
     at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116) 
     at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856) 
     at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Unknown Source) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
     at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) 
     at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:824) 
     at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1261) 
     at org.apache.nutch.crawl.Injector.inject(Injector.java:281) 
     at org.apache.nutch.crawl.Crawl.run(Crawl.java:127) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
     at org.apache.nutch.crawl.Crawl.main(Crawl.java:55) 
+0

你是否試圖以管理員身份運行它? – jpee 2013-03-05 20:45:18

+1

這個答案幫助我克服了這個例外: http://stackoverflow.com/a/18381218/854386 – Andrey 2013-12-27 14:41:13

回答

4

我花了一段時間纔得到這個工作,但這裏的解決方案適用於nutch 1.7。

  1. 從MVN庫下載Hadoop Core 0.20.2
  2. 更換(Nutch的目錄)/lib/hadoop-core-1.2.0.jar與下載的文件具有相同的名稱重新命名它。

應該是這樣。

說明

此問題是由Hadoop的,因爲它假設你在UNIX上運行,並通過文件權限規則遵守造成的。這個問題實際上在2011年得到解決,但nutch沒有更新他們使用的hadoop版本。相關的修補程序是herehere

+0

謝謝,這很好用 – 2015-01-02 14:12:03

1

我已經Nutch的窗戶上,沒有自定義生成運行。這是很長一段時間,因爲我沒有使用它。但是有一件事讓我花了一段時間才發現,你需要運行cygwin作爲Windows管理員才能獲得必要的權利。

+0

感謝您的提示,但仍然是相同的行爲。 你用的是哪一種版本? – 2013-03-05 06:54:10

+0

我曾與hadoop 19,nutch 1.0/1.1/1.2一起工作。 Windows Vista。 – 2013-03-05 09:53:26

+0

嘗試使用cygwin手動執行相同的操作,以絕對確定 – 2013-03-05 09:56:00

2

我們也使用Nutch,但它不支持在Windows上運行,在Cygwin上我們的1.4版本和你有類似的問題,比如mapreduce。

我們通過在Ubuntu和Windows和Linux之間使用vm(虛擬盒子)和共享目錄解決了這個問題,所以我們可以在Windows上開發和構建並在Linux上運行Nutch(抓取)。

0

我建議採用不同的方法。檢查this link了。它解釋瞭如何消除Windows上的錯誤,並且不要求您降級Hadoop或重建Nutch。我在Nutch 2.1上測試過,但它也適用於其他版本。 我也製作了a simple .bat for starting the crawler and indexer,但它是用於Nutch 2.x,可能不適用於Nutch 1.x.

0

您必須更改項目依賴項hadoop-core和hadoop-tools。我使用的是0.20.2版本,工作正常。