在通过hadoop作业在ES上写作时,它会冻结日志,因为:引起: java.lang.NoClassDefFoundError :无法初始化类org.elasticsearch.common.lucene.Lucene
,可能是什么原因?
RemoteTransportException [[无法反序列化类型[org.elasticsearch.action.admin.cluster.node.liveness.LivenessResponse]的响应]];嵌套:TransportSerializationException [无法反序列化类型[org.elasticsearch.action.admin.cluster.node.liveness.LivenessResponse]]的响应;嵌套:NoClassDefFoundError [无法初始化类org.elasticsearch.common.lucene.Lucene]; 引发者:TransportSerializationException [无法反序列化类型[org.elasticsearch.action.admin.cluster.node.liveness.LivenessResponse]]的响应;嵌套:NoClassDefFoundError [无法初始化类org.elasticsearch.common.lucene.Lucene]; at org.elasticsearch.transport.netty.MessageChannelHandler.handleResponse(MessageChannelHandler.java:180) at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:138) 在org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 在org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 在org.jboss.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:787) 在org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) 在org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) 在org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) 在org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) 在org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 在org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) 在org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:555) 在org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) 在org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) 在org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 在org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107) 在org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) 在org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) 在org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 在org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 在org.jboss.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker.java:42) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745) 引起:java.lang.NoClassDefFoundError:无法初始化类org.elasticsearch.common.lucene.Lucene
答案 0 :(得分:1)
我遇到了同样的问题,我通过删除log4j和slf4j依赖项来解决它。 似乎弹性搜索默认尝试加载log4j记录器,并且会产生一些冲突。
答案 1 :(得分:0)
问题是由于类路径中的elasticsearch jar文件存在冲突。我的elasticsearch是2.3.3,它在我的项目pom.xml文件中需要相同版本的jar文件,该文件之前是2.3.2版本的弹性搜索。