从apache nutch

时间:2016-08-02 06:22:13

标签: elasticsearch nutch

我试图从apache nutch索引到单节点ES群集并得到此错误。

  

org.elasticsearch.transport.RemoteTransportException:失败   从流中反序列化异常响应引起:   org.elasticsearch.transport.TransportSerializationException:失败   从流中反序列化异常响应   org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:173)     在   org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:125)     在   org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)     在   org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)     在   org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)     在   org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)     在   org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)     在   org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)     在   org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)     在   org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)     在   org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)     在   org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)     在   org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)     在   org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)     在   org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)     在   org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)     在   org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)     在   org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)     在   org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)     在   org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)     在   org.elasticsearch.common.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker.java:42)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)引起:   java.io.StreamCorruptedException:不支持的版本:1 at   org.elasticsearch.common.io.ThrowableObjectInputStream.readStreamHeader(ThrowableObjectInputStream.java:46)     在java.io.ObjectInputStream。(ObjectInputStream.java:301)at   org.elasticsearch.common.io.ThrowableObjectInputStream。(ThrowableObjectInputStream.java:38)     在   org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:170)     ......还有23个

从进一步的研究中我发现我应该在客户端和ES服务器上拥有相同的jvm版本。参考:http://jontai.me/blog/2013/06/elasticsearch-remotetransportexception-failed-to-deserialize-exception-response-from-stream/

我使用的是ES版 2.3.2 ,而我的JVM版本是" 1.8.0_91" 。 当我检查/plugins/indexer-elastic/plugin.xml时,指定的版本是 1.4.1 。我想知道除了降级ES集群版本之外,这可能是问题和可能的解决方案。我想继续使用ES 2.3.2。请帮帮我。

PS:我用于编制索引的命令是 bin/nutch index crawl/crawldb/ -linkdb crawl/linkdb/ crawl/segments/20160801174223/

1 个答案:

答案 0 :(得分:1)

通过进一步研究,我得到了解决方案。由于nutch的索引器插件(ES 1.4.1)中的版本不匹配,错误即将出现。

一个解决方案是从 https://github.com/apache/nutch/blob/master/ 下载源代码,然后按照 src /中提供的说明,使用弹性服务器版本自定义插件版本插件/索引弹性/ howto_upgrade_es.txt

  
      
  1. 在src / plugin / indexer-elastic / ivy.xml中升级elasticsearch依赖项

  2.   
  3. 升级src / plugin / indexer-elastic / plugin.xml中的Elasticsearch特定依赖项获取列表   依赖项及其版本执行:$ ant -f ./build-ivy.xml
      $ ls lib /

  4.   
  5. 使用ant或任何其他构建工具从nutch源文件夹构建。

  6.   

然后我们可以在没有此问题的情况下索引到ElasticSearch。 干杯:)