2016-06-09 65 views
2

这与solr5.3.15-nutch here相似,但是有一些额外的皱纹。首先,作为背景,我尝试了solr 4.9.1和nutch,没有任何问题。然后移动到solr 6.0.1。集成作为一个独立的工具很好,并且得到了后端代码来解析json等。但是,最终,我们需要安全性,而不想使用Kerberos。根据Solr安全文档,基本认证和基于规则的认证(这正是我们想要的)只能在云模式下工作(另外,如果任何人有建议让非Kerberos安全工作在独立模式下工作,好)。因此,通过Solr-Cloud-Ref的文档,使用交互式启动并采取了所有默认设置,除了我作为“nndcweb”而不是“启动”的集合的名称之外。我采取的配置是data_driven_schema_configs。为了整合nutch,我做了很多尝试。根据迄今为止我所能找到的数据,我只会给出最接近最后的2个。从早先的堆栈溢出引用,我尝试的最后一个是(注意所有的url都有http://,但是Stackoverflow的发布系统在抱怨,所以为了这篇文章我把它们拿出来了):将nutch 1.11与solr 6.0.1云集成

bin/nutch索引抓取/ crawldb -linkdb抓取/ linkdb -D solr.server.url = localhost:8939/solr/nndcweb/-Dsolr.server.type = cloud -D solr.zookeeper.url = localhost:9983/-dir爬/区段/ * -normalize

我结束了同一个问题中提到的前一个线程指出:即,

线程“main”中的异常java.lang.IllegalArgumentException:java.net.URISyntaxException:索引15处的方案名称中的非法字符:solr.server.url = localhost:8939/solr/nndcweb at org.apache.hadoop.fs .Path.initialize(Path.java:206) at org.apache.hadoop.fs.Path。(Path.java:172) at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:217) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:231) 引起:java.net.URISyntaxException:非法字符在索引15处的方案名称中:solr.server.url = localhost:8939/solr/nndcweb 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。(URI.java:746) at org.apache.hadoop.fs.Path.initialize(Path.java :203)

我也尝试:

仓/ Nutch的solrindex本地主机:8983/solr的/ nndcweb爬行/ crawldb -linkdb爬行/ linkdb -Dsolr.server.type =云-D solr的。 zookeeper.url = localhost:9983/-dir crawl/segments/* -normalize

并得到同样的结果。在solrindex上做一个帮助表示使用-params和“&”来分隔选项(与使用-D相比)。但是,这只能告诉我的Linux系统尝试在后台运行一些奇怪的事情,当然。

有没有人对接下来要做什么有什么建议?谢谢!

更新 我更新了上面使用的命令,以反映对我做出的愚蠢错误的更正。请注意,实际上所有的url引用都有http://前缀,但我必须将它们发布才能发布。尽管修复了,但我仍然得到相同的例外(虽然我用它取代原来的样本,再次使用http://删除......这会使事情变得混乱......对此感到抱歉...)。

又一个更新 所以......这很有趣。使用solrindex选项,我只是从动物园管理员的URL中取出端口。只需localhost(使用http://前缀)。 15个字符。 URISyntaxException说问题在索引18处(来自org.apache.hadoop.fs.Path.initialize(Path.java:206))。这确实发生与“solr.zookeeper.url =”中的“=”匹配。所以,似乎hadoop.fs.Path.intialize()将整个字符串作为url。所以也许我没有正确设置它?或者这是hadoop中的错误?这很难相信。

一个几乎没有更新 Alright..given最后一次尝试的结果,我决定把云solr.type并在Nutch的-site.xml的配置文件中zookeeper.url。然后做:

斌/ Nutch的solrindex http://localhost:8983/solr/nndcweb爬行/ crawldb -linkdb爬行/ linkdb -dir爬/区段-normalize

(great..no投诉的网址现在从StackOverflow上)。没有乌里例外了。现在,我得到的错误是:

(在顶部切割空话)

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 Mailing列表中提到,与Nutch 1.11和Solr 5(云模式)有关。那里有人提到它不会工作,但会上传一个补丁(这是在2016年1月)。在nutch开发网站上搜索,我没有在这个问题上遇到过任何东西......对于nutch 1.13有点类似,这显然没有正式发布。不过周围挖,但如果有人居然有这方面的工作在某种程度上,我很想听听你是怎么做的..

编辑七月12-2016

因此,在另一个不相关的几个星期后,改道项目,我回到了这个。在下面看到S. Doe的回应之前,我决定尝试给ElasticSearch一个试试看,因为这是一个全新的项目,我们还没有被绑定到任何东西。到现在为止还挺好。 Nutch和它一起工作得很好,但是为了使用分布式的二进制文件,我必须将Elasticsearch版本降低到1.4.1。尚未尝试安全性方面。出于好奇,我会尝试S. Doe对solr的建议,最终会发布如何......

回答

1

您没有指定连接到Solr的协议:您需要指定solr.server.urlhttp://部分并且您使用了错误的语法来指定要连接的端口,则正确的URL应为:http://localhost:8983/solr/nndcweb/

+0

嗨豪尔赫,@ jorge-luis,谢谢..我的零件错误端口规格。也最初,http://部分在那里,但Stackoverflow不接受帖子,因为它认为我有太多的链接。所以,我把它从这里剥离出来。因此,对索引和solrindex,我确保它是http:// localhost:XXXX,适用于所有情况。非常奇怪的是,仍然得到相同的URISyntaxException问题(我真的认为你的修补程序会做到这一点), –

1

关于使用solr索引时的URL问题:我有同样的问题,我知道这听起来很愚蠢,但由于某种原因,我无法得到,您可以通过使用URL的Encode来修复它(替换“:” “%3A”, “/” 和 “%2F” 和...),而不是(至少对我来说这个固定的问题),你的情况 :

斌/ Nutch的solrindex -D Solr的。 server.url = HTTP%3A%2F%2Flocalhost%3A8983%2Fsolr%2Fnndcweb爬行/ crawldb -linkdb爬行/ linkdb -dir爬行/段-normalize

我希望它能帮助。 (索引器:java.io.IOException:作业失败!)