我尝试在 Windows 计算机上使用 Solr 和 Nutch,但收到以下错误:
Exception in thread "main" java.io.IOException: Failed to set permissions of path: c:\temp\mapred\staging\admin-1654213299\.staging to 0700
从我了解到的很多线程中,nutch 似乎使用的 hadoop 做了一些工作chmod
可以在 Unix 机器上运行的魔法,但不能在 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)
我花了一段时间才让它工作,但这是适用于 nutch 1.7 的解决方案。
- 下载Hadoop 核心 0.20.2 http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/0.20.2来自 Maven 存储库
- Replace
$NUTCH_HOME/lib/hadoop-core-1.2.0.jar
将下载的文件重命名为相同的名称。
应该是这样。
解释
此问题是由 hadoop 引起的,因为它假设您在 unix 上运行并遵守文件权限规则。这个问题实际上在 2011 年就得到了解决,但是 nutch 没有更新他们使用的 hadoop 版本。相关修复是here https://issues.apache.org/jira/browse/HADOOP-7126 and here https://issues.apache.org/jira/browse/HDFS-1084
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)