我正在尝试在Windows机器上使用Nutch使用Solr并且我收到以下错误:
Exception in thread "main" java.io.IOException: Failed to set permissions of path: c:\temp\mapred\staging\admin-1654213299\.staging to 0700
从我学到的很多线程中,nutch似乎使用了hadoop做了一些可以在unix机器上运行的chmod魔法,但不能在windows上运行。
这个问题现在存在一年多了。我找到了一个线程,其中显示了代码行并提出了修复。我真的只有一个有这个问题吗?是否所有其他人都在创建自定义构建以便在Windows上运行nutch?或者是否有一些选项可以禁用hadoop或其他解决方案?也许是另一个爬行器而不是nutch?
非常感谢。 鲍里斯
这是我正在做的事情的堆栈跟踪....
admin@WIN-G1BPD00JH42 /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 :(得分:4)
我需要一段时间才能完成这项工作,但这里的解决方案适用于nutch 1.7。
应该是它。
<强>解释强>
此问题是由hadoop引起的,因为它假设您在unix上运行并遵守文件权限规则。该问题在2011年得到了解决,但是nutch没有更新他们使用的hadoop版本。相关修补程序为here和here
答案 1 :(得分:2)
我们也在使用Nutch,但是不支持在Windows上运行,在Cygwin上我们的1.4版本遇到了类似的问题,比如mapreduce。
我们通过使用带有Ubuntu的vm(虚拟盒)和Windows与Linux之间的共享目录来解决它,因此我们可以在Windows上开发和构建并在Linux上运行Nutch(爬行)。
答案 2 :(得分:1)
我有Nutch在Windows上运行,没有自定义构建。这是很长一段时间以来我没有使用它。但有一件事需要我花一点时间才能抓住,就是你需要运行cygwin作为Windows管理员以获得必要的权利。
答案 3 :(得分:0)
我建议采用不同的方法。检查this link。它解释了如何在Windows上吞下错误,并且不要求您降级Hadoop或重建Nutch。我在Nutch 2.1上测试过,但它也适用于其他版本。 我也提出了a simple .bat for starting the crawler and indexer,但它适用于Nutch 2.x,可能不适用于Nutch 1.x。
答案 4 :(得分:0)
您必须更改项目依赖项hadoop-core和hadoop-tools。我正在使用0.20.2版本,工作正常。