【发布时间】:2016-06-09 16:12:31
【问题描述】:
这类似于solr5.3.15-nutch here,但有一些额外的皱纹。首先,作为背景,我尝试了 solr 4.9.1 和 nutch,没有任何问题。然后升级到 solr 6.0.1。集成作为独立的工作非常好,并且后端代码可以解析 json 等。但是,最终,我们需要安全性,并且不想使用 Kerberos。根据 Solr 安全文档,基本身份验证和基于规则的身份验证(这是我们想要的)仅在云模式下工作(顺便说一句,如果有人建议让非 Kerberos 安全性在独立模式下工作,那将作为好)。因此,通过Solr-Cloud-Ref 的文档,使用交互式启动并采用所有默认值,除了我将集合名称设置为“nndcweb”而不是“gettingstarted”。我采用的配置是 data_driven_schema_configs 。为了整合 nutch,我做了很多尝试。根据我迄今为止所能找到的内容,我只会给出最后两个似乎最接近的。从早期的 stack-overflow 参考中,我尝试的最后一个是(注意所有 url 都有 http://,但是 Stackoverflow 的发布系统在抱怨,所以为了这篇文章,我把它们删掉了):
bin/nutch index crawl/crawldb -linkdb crawl/linkdb -D solr.server.url=localhost:8939/solr/nndcweb/ -Dsolr.server.type=cloud -D solr.zookeeper.url=localhost:9983 / -dir crawl/segments/* -normalize
我最终遇到了与上一个线程中提到的相同的问题:即,
线程“主”java.lang.IllegalArgumentException 中的异常:java.net.URISyntaxException:索引 15 处方案名称中的非法字符:solr.server.url=localhost:8939/solr/nndcweb 在 org.apache.hadoop.fs.Path.initialize(Path.java:206) 在 org.apache.hadoop.fs.Path.(Path.java:172) 在 org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:217) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:231) 原因:java.net.URISyntaxException:索引 15 处方案名称中的非法字符:solr.server.url=localhost:8939/solr/nndcweb 在 java.net.URI$Parser.fail(URI.java:2848) 在 java.net.URI$Parser.checkChars(URI.java:3021) 在 java.net.URI$Parser.parse(URI.java:3048) 在 java.net.URI.(URI.java:746) 在 org.apache.hadoop.fs.Path.initialize(Path.java:203)
我也试过了:
bin/nutch solrindex localhost:8983/solr/nndcweb crawl/crawldb -linkdb crawl/linkdb -Dsolr.server.type=cloud -D solr.zookeeper.url=localhost:9983/ -dir crawl/segments/* -归一化
得到同样的东西。对 solrindex 进行帮助表示使用 -params 和“&”分隔选项(与使用 -D 相比)。但是,这只是告诉我的 Linux 系统尝试在后台运行一些奇怪的东西,当然。
有人对接下来要尝试什么有任何建议吗?谢谢!
更新 我更新了上面使用的命令,以反映对我犯的愚蠢错误的更正。请注意,实际上所有 url 引用都有 http:// 前缀,但我必须将它们取出才能发布。尽管进行了修复,但我仍然遇到相同的异常(我曾经用上面的原始示例替换了上面的示例,再次使用 http:// cut out..这确实使事情变得混乱……对此感到抱歉...)。
又一次更新 所以..这很有趣。使用 solrindex 选项,我刚刚从 zookeeper url 中取出端口 ..just localhost (带有 http:// 前缀)。 15 个字符。 URISyntaxException 表示问题出在索引 18 处(来自 org.apache.hadoop.fs.Path.initialize(Path.java:206))。这确实与“solr.zookeeper.url=”中的“=”匹配。因此,似乎 hadoop.fs.Path.initialize() 将整个字符串作为 url。所以也许我没有正确设置它?或者这是hadoop中的一个错误?真是难以置信。
即将到来的更新 好吧..鉴于上次尝试的结果,我决定将云的 solr.type 和 zookeeper.url 放在 nutch-site.xml 配置文件中。然后做了:
bin/nutch solrindex http://localhost:8983/solr/nndcweb crawl/crawldb -linkdb crawl/linkdb -dir crawl/segments -normalize
(太棒了..现在 StackOverflow 上没有关于 url 的投诉)。没有uri异常了。现在,我得到的错误是:
(在顶部削减措辞)
Indexing 250 documents
Indexer: java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:836)
at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:145)
at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:222)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:231)
深入挖掘 nutch 原木,我看到以下内容:
没有根据请求指定集合参数,也没有设置默认集合。
显然,这已在 Nutch 邮件列表中提到,与 Nutch 1.11 和 solr 5(云模式)有关。那里提到它不会工作,但会上传一个补丁(这是在 2016 年 1 月)。在 nutch 开发网站上四处挖掘,我在这个问题上没有遇到任何事情......对于 nutch 1.13 有点相似,显然没有正式发布。仍在挖掘,但如果有人真的有这个工作,我很想听听你是怎么做到的..
2016 年 7 月 12 日至 2016 年编辑
所以,在另一个不相关的项目上转移了几周后,我又回到了这个。在看到下面 S. Doe 的回复之前,我决定尝试一下 ElasticSearch。因为这是一个全新的项目,我们还没有与任何东西联系在一起。到现在为止还挺好。 Nutch 与它配合得很好,尽管要使用分布式二进制文件,我不得不将 Elasticsearch 版本降到 1.4.1。还没有尝试过安全方面。出于好奇,我最终会用 solr 尝试 S. Doe 的建议,稍后会发布结果...
【问题讨论】: