2016-08-02 24 views
2

Ich habe versucht, von Apache Nutch auf einzelne Knoten ES-Cluster zu indizieren und habe diesen Fehler.Problem beim Indizieren von Elasticsearch von Apache Nutch

org.elasticsearch.transport.RemoteTransportException: Fehler bei deserialize Ausnahmeantwort aus dem Strom, verursacht durch: org.elasticsearch.transport.TransportSerializationException: Fehler bei deserialize Ausnahmeantwort von Strom bei org.elasticsearch.transport. netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:173) bei org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived (MessageChannelHandler.java:125) bei org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandl er.java:70) bei org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) bei org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline. Java: 791) bei org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:296) bei org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived (FrameDecoder. java: 462) um org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode (FrameDecoder.java:443) um org.elasticsearch.common.netty.han dler.codec.frame.FrameDecoder.messageReceived (FrameDecoder.java:303) bei org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) bei org.elasticsearch.common.netty. channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) bei org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:559) bei org.elasticsearch.common.netty.channel.Channels. fireMessageReceived (Channels.java:268) um org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:255) um org.elastics earch.common.netty.channel.socket.nio.NioWorker.read (NioWorker.java:88) um org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process (AbstractNioWorker.java:108) unter org.elasticsearch.common.nety.channel.socket.nio.AbstractNioSelector.run (AbstractNioSelector.java:318) unter org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run (AbstractNioWorker.java : 89) bei org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run (NioWorker.java:178) bei org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run (ThreadRenamingRunnable.java : 108) unter org.elasticsearch.common.netty.ut il.internal.DeadLockProofWorker $ 1.run (DeadLockProofWorker.java:42) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor .java: 617) bei java.lang.Thread.run (Thread.java:745) verursacht durch: java.io.StreamCorruptedException: Nicht unterstützte Version: 1 bei org.elasticsearch.common.io.ThrowableObjectInputStream.readStreamHeader (ThrowableObjectInputStream .java: 46) bei java.io.ObjectInputStream. (ObjectInputStream.Java: 301) bei org.elasticsearch.common.io.ThrowableObjectInputStream (ThrowableObjectInputStream.java:38) bei org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:170) ... 23 mehr.

Aus weiteren Untersuchungen kam ich zu wissen, ich sollte die gleiche jvm-Version auf Client-und ES-Server haben. Referenz: http://jontai.me/blog/2013/06/elasticsearch-remotetransportexception-failed-to-deserialize-exception-response-from-stream/

Ich verwende ES Version 2.3.2 und meine JVM-Version ist "1.8.0_91". Wenn ich /plugins/indexer-elastic/plugin.xml überprüft habe, lautet die angegebene Version 1.4.1. Ich würde gerne wissen, dass dies das Problem und eine mögliche Lösung außer der Downgrade der ES-Cluster-Version sein könnte. Ich möchte mit ES 2.3.2 fortfahren. Bitte helfen Sie mir dabei.

PS: Der Befehl, den ich für die Indizierung verwendet habe, ist bin/nutch index crawl/crawldb/ -linkdb crawl/linkdb/ crawl/segments/20160801174223/

Antwort

1

Aus weiteren Recherchen habe ich die Lösung. Der Fehler tritt auf, weil die Version im Indexer-Plugin von nutch (das war ES 1.4.1) nicht übereinstimmt.

Eine Lösung hierfür ist die Quelle von https://github.com/apache/nutch/blob/master/ herunterladen und dann die Plugin-Version mit dem elastischen Server-Version anpassen, indem Sie in der folgenden Anweisungen src/plugin/Indexer-elastisch/howto_upgrade_es.txt.

  1. Upgrade-Elasticsearch Abhängigkeit in src/plugin/Indexer-elastisch/ivy.xml

  2. die spezifischen Abhängigkeiten Elasticsearch-Upgrade in src/plugin/Indexer-elastisch/plugin.xml Um die Liste zu bekommen von Abhängigkeiten und deren Versionen ausführen: $ ant -f ./build-ivy.xml
    $ ls lib/

  3. Erstellen von nutch Quellordner ant oder einem anderen Build-Tool.

Dann können wir Index Elasticsearch ohne dieses Problem. Prost :)