0

我正在尝试使用我的 (java) mojarra 2.0.2 webapp 中没有 bin/nutch 的 nutch (1.1) ...我正在谷歌搜索示例,但没有示例如何实现这一点:/ ...我得到一个异常并且工作失败:/(我想到了hadoop的原因)......这是我的代码:

  公共无效运行()抛出异常{
      最终字符串 [] args = 新字符串 [] {
            String.format("%s%s%s%s", JSFUtils.getWebAppRoot(), "nutch", File.separator, DIRECTORY_URLS),
            "-dir", String.format("%s%s%s%s", JSFUtils.getWebAppRoot(), "nutch", File.separator, DIRECTORY_CRAWL),
            "-threads", this.preferences.get("threads"),
            "-depth", this.preferences.get("depth"),
            "-topN", this.preferences.get("topN"),
            “-solr”,this.preferences.get(“solr”)
        };
      Crawl.main(args);
  }

和日志记录的一部分:

10/05/17 10:42:54 INFO jvm.JvmMetrics:使用 processName=JobTracker、sessionId= 初始化 JVM 指标
10/05/17 10:42:54 WARN mapred.JobClient:使用 GenericOptionsParser 解析参数。应用程序应该实现同样的工具。
10/05/17 10:42:54 INFO mapred.FileInputFormat:要处理的总输入路径:1
2017 年 10 月 5 日 10:42:54 信息 mapred.JobClient:正在运行的作业:job_local_0001
10/05/17 10:42:54 INFO mapred.FileInputFormat:要处理的总输入路径:1
2017 年 10 月 5 日 10:42:55 信息 mapred.MapTask:numReduceTasks:1
2017 年 10 月 5 日 10:42:55 信息 mapred.MapTask:io.sort.mb = 100
java.io.IOException:作业失败!
        在 org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232)
        在 org.apache.nutch.crawl.Injector.inject(Injector.java:211)
        在 org.apache.nutch.crawl.Crawl.main(Crawl.java:124)
        在 lan.localhost.process.NutchCrawling.run(NutchCrawling.java:108)
        在 lan.localhost.main.Index.indexing(Index.java:71)
        在 lan.localhost.bean.FeedingBean.actionStart(FeedingBean.java:25)
        ……

有人可以帮助我或告诉我如何从 Java 应用程序中爬取吗?我已将 Xms 增加到 256m 和 Xmx 到 768m,但没有任何改变......

最好的问候马塞尔

4

3 回答 3

1

您可能必须将 nutch 配置文件添加到您的类路径中。通常在调用脚本 bin/nutch 时通过NUTCH_CONF_DIR环境变量设置。

还有可能需要设置的-Dhadoop.log.dir 。

花时间检查 bin/nutch 脚本以了解更多信息。

于 2010-05-17T13:19:01.820 回答
0

您可以创建一个新进程并运行 bin/nutch 脚本。

于 2010-06-13T15:09:12.987 回答
0

由于无法使用提供的系统输出诊断的某种原因,注入作业失败。将需要更多日志。

于 2012-04-08T03:43:14.457 回答