2016-08-02 4 views
2

아파치 nutch에서 단일 노드 ES 클러스터로 색인을 생성하려고 시도했는데이 오류가 발생했습니다.아파치 nutch에서 elasticsearch로 인덱싱 할 때 문제가 발생했습니다.

org.elasticsearch.transport.RemoteTransportException : org.elasticsearch.transport.TransportSerializationException :에 의한 스트림 직렬화 예외 응답 실패는 org.elasticsearch.transport에서 스트림 직렬화 예외 응답하지 못했다. org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream에서 netty.MessageChannelHandler.handlerResponseError org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived (MessageChannelHandler.java:125)에서 (MessageChannelHandler.java:173) (SimpleChannelUpstreamHandl er.java:70) org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream에서 org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564) (DefaultChannelPipeline에서 . 자바 : 791) org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived에서 org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:296) (FrameDecoder에서. java : 462) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode (FrameDecoder.java:443) at org.elasticsearch.common.netty.han dler.codec.frame.FrameDecoder.messageReceived org.elasticsearch.common.netty에서 org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream (SimpleChannelUpstreamHandler.java:70) 에서 (FrameDecoder.java:303) . channel.DefaultChannelPipeline.sendUpstream org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:559)에서 (DefaultChannelPipeline.java:564) org.elasticsearch.common.netty.channel.Channels에서 . (채널 :. earch.common.netty.channel.socket.nio.NioWorker.read (NioWorker.java:88) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process (AbstractNioWorker.java:108) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run (AbstractNioSelector.java:318) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run (AbstractNioWorker.java : org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run에서 org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run (NioWorker.java:178 89) ) (ThreadRenamingRunnable.java : 108) at org.elasticsearch.common.netty.ut il.internal.DeadLockProofWorker $의 1.run java.util.concurrent.ThreadPoolExecutor $ Worker.run에서 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)에서 (DeadLockProofWorker.java:42) (ThreadPoolExecutor입니다 .java : 617) 에서 지원되지 않는 버전 : 1 org.elasticsearch.common.io.ThrowableObjectInputStream.readStreamHeader (ThrowableObjectInputStream (java.lang.ThrowableObjectInputStream.java)) :에서 지원되지 않는 버전 : 1 .java : 46) at java.io.ObjectInputStream. (ObjectInputStream.자바 : 301) org.elasticsearch.common.io.ThrowableObjectInputStream에서 org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:170에서 (ThrowableObjectInputStream.java:38) ) ... 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

입니다. Nutch (ES 1.4.1)의 인덱서 플러그인에서 버전이 일치하지 않아 오류가 발생했습니다. 이것에

하나의 해결책은 https://github.com/apache/nutch/blob/master/에서 소스를 다운로드 한 다음 SRC/플러그인/인덱서 ​​탄성/howto_upgrade_es.txt에 주어진 이러한 지침에 따라 탄성 서버 버전으로 플러그인 버전을 사용자 정의하는 것입니다. SRC/플러그인/인덱서 ​​탄성/ivy.xml에

  1. 업그레이드 elasticsearch 의존성

  2. 목록을 얻으려면/인덱서 ​​탄성/plugin.xml에 SRC/플러그인의 Elasticsearch 특정 종속성을 업그레이드

    의 의존성과 버전을 실행 : $ 개미 -f ./build-ivy.xml
    $ 1! lib 디렉토리/개미 나 다른 빌드 도구를 사용하여 nutch 소스 폴더에서

  3. 빌드.

그리고 우리는이 문제없이 ElasticSearch에 인덱스 할 수 있습니다. 건배 :

관련 문제