【问题标题】:Solr indexing following a Nutch crawl fails, reports "Indexer: java.io.IOException: Job failed!"Nutch 爬网后的 Solr 索引失败,报告“Indexer: java.io.IOException: Job failed!”
【发布时间】:2017-05-19 08:11:01
【问题描述】:

我在一个 ec2 实例上集成了 Nutch1.13 和 Solr 6.5.1。我确实使用下面的 cp 命令将 schema.xml 复制到 Solr。我在 nutch_home/conf 文件夹中的 nutch-site.xml 中将 localhost 作为 elatic.host。

cp /usr/local/apache-nutch-1.13/conf/schema.xml /usr/local/apache-nutch-1.13/solr-6.5.1/server/solr/nutch/conf/

自从 solr 6 以来,每次创建托管模式时,一切都正常。我试过的命令是

[ec2-user@ip-172-31-16-137 apache-nutch-1.13]$ bin/crawl -i -D solr.server.url=http://35.160.82.191:8983/solr/#/nutch/urls/ 爬取1

一切似乎都很好,直到在上面的命令运行时建立索引。我完全卡在最后一步了。

错误运行: /usr/local/apache-nutch-1.13/bin/nutch index -Dsolr.server.url=://35.160.82.191:8983/solr/#/nutch/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/20170519074733 失败,退出值为 255。

提前致谢

更新 我在 conf/nutch-site.xml 中更改了下面的 prperty

<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-html|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
</property>

现在没有错误但我得到关注

重复数据删除于 2017-05-19 10:08:05 完成,经过时间:00:00:03 将 20170519100420 编入索引 /usr/local/apache-nutch-1.13/bin/nutch index -Dsolr.server.url=//35.160.82.191:8983/solr/nutch/ crawl/crawldb -linkdb crawl/linkdb crawl/segments/20170519100420 段目录已完成: crawl/segments/20170519100420。 索引器:开始于 2017-05-19 10:08:06 索引器:删除已删除的文档:false 索引器:URL 过滤:false 索引器:URL 规范化:false 没有激活 IndexWriters - 检查您的配置 索引器:索引、删除或跳过的文档数: 索引器:44 个索引(添加/更新) 索引器:完成于 2017-05-19 10:08:10,经过:00:00:03 如果可能,清理索引 /usr/local/apache-nutch-1.13/bin/nutch clean -Dsolr.server.url=//35.160.82.191:8983/solr/nutch/ crawl/crawldb 2017 年 5 月 19 日星期五 10:08:13 UTC:完成 1 次迭代的循环

更新 2 我发现在此post 中建议在 nutch-site.xml 帮助中添加 solr-indexer 但现在错误出现在清理部分

错误运行: /usr/local/apache-nutch-1.13/bin/nutch clean -Dsolr.server.url=://35.160.82.191:8983/solr/nutch/ crawl/crawldb 失败,退出值为 255。

任何建议,因为我想使用 Solr 实现搜索引擎 更新 3

现在完全没有错误。但由于某种原因,获取不起作用。只有在 urls/seed.txt 中指定的 url 才会被抓取和抓取。 nutch 后面没有外部链接。

[ec2-user@ip-172-31-16-137 apache-nutch-1.13]$ bin/crawl -i -D solr.server.url=http://35.160.82.191:8983/solr/nutch/ urls/ crawl 5 注入种子 URL /usr/local/apache-nutch-1.13/bin/nutch 注入 crawl/crawldb urls/ 喷油器:2017-05-19 12:27:19 开始 注入器: crawlDb: crawl/crawldb 注射器:urlDir:urls Injector:将注入的 url 转换为爬取数据库条目。 喷油器:覆盖:假 喷油器:更新:假 注射器:过滤器拒绝的网址总数:0 注入器:标准化和过滤后注入的总 url:1 注入器:注入但已在 CrawlDb 中的总 url:1 注入器:注入的新网址总数:0 喷油器:2017-05-19 12:27:21完成,经过:00:00:02 2017 年 5 月 19 日星期五 12:27:21 UTC:迭代 1 of 5 生成新段 /usr/local/apache-nutch-1.13/bin/nutch 生成 -D mapreduce.job.reduces=2 -D mapred.child.java.opts=-Xmx1000m -D mapreduce.reduce.speculative=false -D mapreduce.map .speculative=false -D mapreduce.map.output.compress=true crawl/crawldb crawl/segments -topN 50000 -numFetchers 1 -noFilter 发电机:开始于2017-05-19 12:27:23 生成器:选择要获取的得分最高的 url。 生成器:过滤:假 生成器:规范化:真 发电机:topN:50000 生成器:选择 0 条记录用于提取、退出... 生成返回 1(未创建新段) 转义循环:现在没有要获取的 URL

我想使用来自 Solr 的网络搜索结果的 nutch 数据 最终更新

[ec2-user@ip-172-31-16-137 apache-nutch-1.13]$ bin/crawl -i -D solr.server.url=://35.160.82.191:8983/solr/nutch/ urls/ crawl  1 

【问题讨论】:

  • 段目录已完成:crawl/segments/20170519074733。索引器:从 2017-05-19 07:52:41 开始索引器:删除已删除的文档:false 索引器:URL 过滤:false 索引器:URL 规范化:false
  • Active IndexWriters : ElasticIndexWriter elastic.cluster : 弹性前缀集群 elastic.host : 主机名 elastic.port : 端口 elastic.index : 弹性索引命令 elastic.max.bulk.docs : 弹性批量索引文档计数。 (默认 250) elastic.max.bulk.size :弹性批量索引长度(以字节为单位)。 (默认 2500500) elastic.exponential.backoff.millis :弹性批量指数退避初始延迟(以毫秒为单位)。 (默认 100) elastic.exponential.backoff.retries :弹性批量指数退避最大重试次数。 (默认 10)
  • 错误运行:/usr/local/apache-nutch-1.13/bin/nutch index -Dsolr.server.url=35.160.82.191:8983/solr/#/nutch crawl/crawldb -linkdb crawl/linkdb crawl/segments/20170519074733 失败退出值为 255。
  • 尽可能清理索引 /usr/local/apache-nutch-1.13/bin/nutch clean -Dsolr.server.url=://35.160.82.191:8983/solr/nutch/ crawl/ crawldb SolrIndexer:删除 2/2 个文档错误 CleaningJob:java.io.IOException:作业失败!在 org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:865) 在 org.apache.nutch.indexer.CleaningJob.delete(CleaningJob.java:174) 在 org.apache.nutch.indexer.CleaningJob.run (CleaningJob.java:197) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.nutch.indexer.CleaningJob.main(CleaningJob.java:208)

标签: java solr nutch


【解决方案1】:

nutch-site.xml 不需要复制到 Solr,只需将 schema.xml 文件复制到用于指定来自 Nutch 的数据所需的架构。如果您使用的是 Solr 而不是 ES,则不需要此参数 elatic.host。查看logs/hadoop.log文件,看看是否有更多关于异常的数据,当然还要查看Solr端的日志,这个错误通常意味着Solr配置有问题,缺少字段等。这种情况下,由于您没有复制 schema.xml 并且 Nutch 没有利用 Solr 6 上的托管模式,因此 Solr 一定会抱怨缺少字段,而且您的 solr URL 包括 # 字符看起来也不好,这就是 Solr Admin UI 在浏览器中显示数据的方式,但要从 Nutch/终端使用它应该是 /solr/nutch

顺便说一句,检查 the tutorial 尽管在最近的 Solr 版本中一些路径发生了变化,但仍然是关于集成如何工作的一个很好的指南

【讨论】:

  • 我在添加 elastic.host 之前遇到了这个异常 "Indexer: java.lang.RuntimeException: Missing elastic.cluster and elastic.host。至少其中一个应该在 nutch-site.xml 中设置"
  • 我按照上述教程进行操作,虽然它有点过时了
  • 您是否在plugins.include 中启用了 indexer-elastic 插件?这可以解释有关缺少配置的错误。
  • 我从插件属性更改了索引器弹性。我将如何指定 solr 代替..?现在我没有错误,但没有发生索引。
  • 您需要在plugins.include 中启用indexer-solr 插件,如果您没有启用任何indexer-* 插件,请查看github.com/apache/nutch/blob/master/conf/… 这一行以检查默认插件集,则不会执行索引步骤。
猜你喜欢
  • 2014-03-04
  • 2016-10-18
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2023-01-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
相关资源
最近更新 更多