我试图在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
从我学到的很多线索中,hadoop似乎是nutch使用的,它做了一些工作 chmod
可以在unix机器上工作,但不能在windows上工作的魔术。
这个问题已经存在一年多了。我找到了一个线程,其中显示了代码行并提出了修复方案。我真的是唯一一个有这个问题的人吗?所有其他人都在创建自定义版本以便在windows上运行nutch吗?或者有什么选项可以禁用hadoop或者其他解决方案?也许是另一个爬虫比坚果?
以下是我所做工作的堆栈跟踪:
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)
5条答案
按热度按时间nr7wwzry1#
我在windows上运行nutch,没有自定义版本。但我好久没用了。但有一件事我花了一段时间才明白,那就是你需要以windows管理员的身份运行cygwin才能获得必要的权限。
ohtdti5x2#
我花了一段时间来让它工作,但这里有一个解决方案,它适用于坚果1.7。
从maven存储库下载hadoopcore0.20.2
替换
$NUTCH_HOME/lib/hadoop-core-1.2.0.jar
将下载的文件重命名为相同的名称。应该是这样。
解释
这个问题是由hadoop引起的,因为它假定您在unix上运行并且遵守文件权限规则。这个问题在2011年得到了解决,但nutch并没有更新他们使用的hadoop版本。相关的修复程序在这里和这里
pdtvr36n3#
我们也在使用nutch,但它不支持在windows上运行,在cygwin上,我们的1.4版本也有类似的问题,比如mapreduce。
我们通过在ubuntu中使用虚拟机(virtualbox)和windows与linux之间的共享目录来解决这个问题,这样我们就可以在windows上开发和构建,在linux上运行nutch(crawling)。
kknvjkwl4#
您必须更改项目依赖项hadoop核心和hadoop工具。我使用的是0.20.2版本,工作正常。
wqnecbli5#
我建议另一种方法。查看此链接。它解释了如何在windows上消除错误,并且不需要您降级hadoop或重建nutch。我在nutch2.1上进行了测试,但它也适用于其他版本。我还做了一个简单的.bat来启动爬虫程序和索引器,但是它是为nutch2.x准备的,可能不适用于nutch1.x。
为子孙后代着想,这一方法包括:
定制
LocalFileSystem
实施:编译它并将jar放在
${HADOOP_HOME}/lib
然后通过修改${HADOOP_HOME}/conf/core-site.xml
:fs.file.impl com.conga.services.hadoop.patch.hadoop_.winlocalfilesystem在windows上启用针对问题hadoop-7682的修补程序