Nutch 弹性分度器中带有 nutch REST api 的未知问题

Unknown issue in Nutch elastic indexer with nutch REST api

我试图使用 REST 端点和 运行 将 nutch 公开到索引器阶段的问题中。我正在使用 elasticsearch 索引编写器将文档索引到 ES。我使用了 $NUTCH_HOME/runtime/deploy/bin/nutch startserver 命令。索引时抛出未知异常。

Error: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor; 16/10/07 16:01:47 INFO mapreduce.Job: map 100% reduce 0% 16/10/07 16:01:49 INFO mapreduce.Job: Task Id : attempt_1475748314769_0107_r_000000_1, Status : FAILED Error: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor; 16/10/07 16:01:53 INFO mapreduce.Job: Task Id : attempt_1475748314769_0107_r_000000_2, Status : FAILED Error: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor; 16/10/07 16:01:58 INFO mapreduce.Job: map 100% reduce 100% 16/10/07 16:01:59 INFO mapreduce.Job: Job job_1475748314769_0107 failed with state FAILED due to: Task failed task_1475748314769_0107_r_000000 Job failed as tasks failed. failedMaps:0 failedReduces:1

ERROR indexer.IndexingJob: Indexer: java.io.IOException: Job failed! at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:865) at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:145) at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:228) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:237)

Failed with exit code 255.

如有任何帮助,我们将不胜感激。

PS :使用堆栈跟踪调试后,我认为问题是由于番石榴版本不匹配造成的。我试过更改 build.xml 插件(parse-tika 和 parsefilter-naivebayes),但没有用。

我已找到解决此问题的方法。这是由于 guava 依赖的版本兼容性。 Hadoop 使用 guava-11.0.2.jar 作为依赖。但是nutch中的elastic indexer插件需要18.0版本的guava。这就是为什么它在分布式 hadoop 中尝试 运行 时抛出异常。所以我们只需要在 hadoop 库中将 guava 版本更新到 18.0(可以在 $HADOOP_HOME/share/hadoop/common/libs/)找到。