【发布时间】:2019-03-02 20:18:47
【问题描述】:
我在我的一个 Mesos slave 上安装了 Zeppelin 0.8(我们的 mesos 集群是一个 3 master + 5 slaves 集群。我们通常使用 Apache Marathon 来午餐我的 spark 工作。),在启动其中一个 spark 时我们遇到了以下异常通过 Zeppelin 工作。看起来它与 io.netty 不匹配有关。
我检查了我所有的 spark job fat jar,看起来他们使用的是 Netty 4.1.13,因为依赖于 Elastic Search 插件。
经过调查,我注意到一件事,只要我将我的 Spark job fat jar 添加到 Zeppelin 的 Spark 内核中,即使我正在运行 Zeppelin 教程,也会出现此错误。
我的 Spark 二进制文件安装在所有 Mesos 从站上,版本为 2.1.0。
如果这是由于 Netty 问题,当我使用 Apache Marathon 提交作业时,我的作业应该无法运行。但是,它仅在通过 Zeppelin 运行时才会失败。
谁能给我一些提示?提前致谢!
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"
【问题讨论】:
-
我猜你的类路径中可能还有其他一些 jars,你能尝试使用另一个干净版本的 spark 吗?不需要在所有节点上都安装,在zeppelin主机上即可。
标签: apache-spark netty mesos apache-zeppelin