运行齐柏林飞艇笔记本时出现abstractmethoderror

c0vxltue  于 2021-06-26  发布在  Mesos
关注(0)|答案(2)|浏览(501)

我将齐柏林飞艇0.8安装在我的一个mesos从机上(我们的mesos集群是3个主机+5个从机集群)。我们通常使用apachemarathon来为我的spark工作提供午餐。),通过齐柏林飞艇启动spark工作时出现了以下异常。看起来和io.netty不匹配有关。
我检查了我所有的spark作业fat jar,看起来他们使用的是netty4.1.13,这是由于ElasticSearch插件的依赖性。
经过调查,我注意到一件事,只要我把我的spark job fat jar添加到zeppelin的spark内核中,即使我正在运行zeppelin教程,这个错误也会发生。
我的spark二进制文件安装在所有的mesos从机上,版本是2.1.0。
如果这是由于netty问题,那么当我使用apachemarathon提交作业时,我的作业应该无法运行。然而,它只有在穿越齐柏林飞艇时才会失败。
有人能给我一些提示吗?提前谢谢!

INFO [2018-09-27 01:13:41,532] ({Thread-26} Logging.scala[logInfo]:54) - Mesos task 2 is now TASK_RUNNING
ERROR [2018-09-27 01:13:43,778] ({shuffle-server-3-4} TransportRequestHandler.java[operationComplete]:201) - Error sending result RpcResponse{requestId=4631687762231387177, body=NioManagedBuffer{buf=java.nio.HeapByteBuffer[pos=0 lim=47 cap=64]}} to /10.128.96.44:44904; closing connection
java.lang.AbstractMethodError
at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:73)
at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:107)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:810)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
at io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:302)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38)
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1089)
at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1136)
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1078)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:748)

下面是我在zeppelin-env.sh中的配置。

export JAVA_HOME="/usr/lib/jvm/java-8-oracle"

export MESOS_NATIVE_JAVA_LIBRARY="/usr/lib/libmesos.so"

export MASTER="mesos://zk://10.128.96.35:2181,10.128.96.37:2181,10.128.96.39:2181,10.128.96.41:2181,10.128.96.43:2181/mesos" # Get the master zk string for your environment from RCS.

export ZEPPELIN_JAVA_OPTS="-Dspark.executor.memory=4g -Dspark.cores.max=2"

export ZEPPELIN_MEM="-Xms1024m -Xmx1024m -XX:MaxPermSize=512m"

export ZEPPELIN_INTP_MEM="-Xms1024m -Xmx1024m -XX:MaxPermSize=512m"

export SPARK_HOME="/usr/local/spark"

export SPARK_SUBMIT_OPTIONS="--driver-memory 1G --executor-memory 4G"

export SPARK_APP_NAME="Zeppelin"
2lpgd968

2lpgd9681#

我的build.sbt中的一些代码可以解决这个问题。

assemblyExcludedJars in assembly := {
  val cp = (fullClasspath in assembly).value
  cp filter { entry =>
        entry.data.getName == "netty-all-4.1.10.Final.jar" ||
        entry.data.getName == "netty-buffer-4.1.13.Final.jar" ||
        entry.data.getName == "netty-codec-4.1.13.Final.jar" ||
        entry.data.getName == "netty-codec-http-4.1.13.Final.jar" ||
        entry.data.getName == "netty-common-4.1.13.Final.jar" ||
        entry.data.getName == "netty-handler-4.1.13.Final.jar" ||
        entry.data.getName == "netty-resolver-4.1.13.Final.jar"  ||
        entry.data.getName == "netty-transport-4.1.13.Final.jar" }
}
wi3ka0sx

wi3ka0sx2#

看起来类路径上同时有一个netty 4.0.x和4.1.x。你应该只有4.1.x

相关问题