当前位置: 首页 > 知识库问答 >
问题:

执行爬网时出现Nutch问题

曹乐意
2023-03-14

我正在尝试让nutch 1.11执行爬网。我正在使用cygwin在windows 7中运行这些命令。

Nutch正在运行,运行bin/Nutch会得到结果,但当我尝试运行爬网时,会不断收到错误消息。

当我尝试使用 nutch 运行爬网执行时,我收到以下错误:

运行时出错:/cygdrive/c/Users/User5/Documents/Nutch/apache-Nutch-1.11/runtime/local/bin/Nutch inject TestCrawl/crawdb c:/Users/User5/Documents/Nutch/apache-Nutch-1-11/runtime/local/urls/seed.txt

失败,退出值为127。

我设置了JAVA_HOME类路径,并修改了主机文件,将127.0.0.1作为localhost。

我很好奇我是否正确调用了write目录,如果这可能是问题的话。

完整的打印输出如下所示:

User5@User5-PC /cygdrive/c/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local
$ bin/crawl -i -D solr.server.url=http://localhost:8983/solr/ C:/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/urls/ TestCrawl/  2

Injecting seed URLs
/cygdrive/c/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/bin/nutch inject TestCrawl//crawldb C:/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/urls/
Injector: starting at 2015-12-23 17:48:21
Injector: crawlDb: TestCrawl/crawldb
Injector: urlDir: C:/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/urls
Injector: Converting injected urls to crawl db entries.
Injector: java.lang.NullPointerException
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1012)
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)
        at org.apache.hadoop.util.Shell.run(Shell.java:418)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)
        at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:633)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:421)
        at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:281)
        at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125)
        at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:348)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:1282)
        at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)
        at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)
        at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:833)
        at org.apache.nutch.crawl.Injector.inject(Injector.java:323)
        at org.apache.nutch.crawl.Injector.run(Injector.java:379)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.nutch.crawl.Injector.main(Injector.java:369)

Error running:
  /cygdrive/c/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/bin/nutch inject TestCrawl//crawldb C:/Users/User5/Documents/Nutch/apache-nutch-1.11/runtime/local/urls/
Failed with exit value 127.

我认为可能与我得到的错误有关的hadoop日志是:

2016-01-07 12:24:40,360 ERROR util.Shell - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:318)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:333)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:326)
    at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows(GenericOptionsParser.java:432)
    at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:478)
    at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:170)
    at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64)
    at org.apache.nutch.crawl.Injector.main(Injector.java:369)
2016-01-07 12:24:40,450 ERROR crawl.Injector - Injector: java.lang.IllegalArgumentException: java.net.URISyntaxException: Illegal character in scheme name at index 15: solr.server.url=http://localhost:8983/solr
    at org.apache.hadoop.fs.Path.initialize(Path.java:206)
    at org.apache.hadoop.fs.Path.<init>(Path.java:172)
    at org.apache.nutch.crawl.Injector.run(Injector.java:379)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.nutch.crawl.Injector.main(Injector.java:369)
Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 15: solr.server.url=http://localhost:8983/solr
    at java.net.URI$Parser.fail(URI.java:2848)
    at java.net.URI$Parser.checkChars(URI.java:3021)
    at java.net.URI$Parser.parse(URI.java:3048)
    at java.net.URI.<init>(URI.java:746)
    at org.apache.hadoop.fs.Path.initialize(Path.java:203)
    ... 4 more

共有3个答案

梁渊
2023-03-14

使用nutch时,需要< code>hadoop-core jar文件

>

  • 与nutch 1.11兼容的hadoop核心jar为0.20.0
  • <区块报价>

    请从此链接下载jar:http://www.java2s.com/Code/Jar/h/Downloadhadoop0200corejar.htm

    将该jar粘贴到“C:\cygwin64\home\apache-nutch-1.11\lib”文件夹中,它将成功运行。

  • 云飞翮
    2023-03-14

    你的问题在这条信息中已经有了答案:

    2016-01-07 12:24:40,360错误util。Shell -无法在hadoop二进制文件路径Java . io . io中找到winutils二进制文件异常:无法在Hadoop二进制文件中找到可执行文件null\bin\winutils.exe。

    发生这种情况是因为坚果1.11中包含的hadoop版本被设计为开箱即用的linux,而不是在Windows上工作。

    我也遇到过同样的情况,最后在ubuntu虚拟框中使用了nutch1.11。

    狄钧
    2023-03-14

    您正在从< code>Cygwin运行linux命令,而linux系统中没有< code>C:\路径。正确的命令应该是这样的

    /cygdrive/c/Users/User5/Documents/Nutch/apache-nutch1.11/runtime/local/bin/nutch inject TestCrawl/crawldb /cygdrive/c/Users/User5/Documents/Nutch/apache-nutch1.11/runtime/local/urls/seed.txt
    
     类似资料:
    • 我已经遵循了教程,并使用Cygwin将nutch配置为在Windows 7上运行,我正在使用Solr 5.4.0对数据进行索引 但是坚果1.11在执行爬行时遇到了问题。 爬网命令 $ bin/crawl -i -D solr.server.url= 错误/异常 注入种子网址 /apache-nutch-1.11/bin/坚果注射 /测试爬网/抓取 /urls 注射器:从 2016-01-19 开始

    • 我想使用Apache Nutch1.12爬网一个站点,并将数据索引到Apache Solr中。我已经遵循了这个教程。 我的seed.txt文件的url是http://nutch.apache.org/ 在我的regex url筛选器中,我有如下所示+^http://([a-z0-9]*.)*nutch.apache.org/ 当我试图获取数据时,我只得到seed.txt文件中的url。 我在这里错

    • 我试图在包含GUI系统的JDK 11.0.2上运行我在Intellij中创建的一个可执行jar文件。我已经安装了Java8和java SDK11.0.2。每当我双击jar文件时,我希望主gui登录屏幕出现,但什么也没有发生。我已经尝试了其他选项,例如尝试通过cmd运行它(它给了我一个访问错误),HKEY_CLASSES_ROOT\jarfile已经有命令:“C:\Program Files\jav

    • 试图在Centos 6.6上用纳奇1.9爬行。 在遵循本指南后尝试初始化我的第一次爬网时: http://wiki.apache.org/nutch/NutchTutorial 但是,我在启动时遇到以下异常: Injector:将注入的URL转换为爬网数据库条目。喷油器:java.net。未知主机异常:Sparky。立克:火花四射。LITK:java.security.AccessControll

    • 我看到了一些像http://homes.mitula.ph/homes/makati这样的搜索网站,我想知道他们是如何抓取其他网站(如、和)中的数据并将其显示到他们的站点上的。 我正在考虑使用Solr索引数据,使用Nutch抓取数据。我是一个新的网页抓取和索引,目前为止,我只能抓取一个网页的内容。 Solr Nutch能做那种爬行吗?怎么做的?

    • 问题内容: 首先,如果标题误导我,我深表歉意。英语不是我的母语,所以我不确定该如何命名。现在的问题是: 我有一个活动,可显示存储在Firebase项目中有关用户的数据。数据在Firebase用户(显示名称,电子邮件和个人资料图像)和Cloud Firestore中名为该用户的文档之间分配。 当此活动开始时,我进行了Firebase谷歌身份验证以获取用户,然后出现了问题。我需要知道用户是否在数据库中