Java 无法访问Spark群集管理器以请求执行者

Java 无法访问Spark群集管理器以请求执行者,java,apache-spark,livy,Java,Apache Spark,Livy,我在Docker Swarm集群中有一个Spark独立设置(1个管理器节点,2个工作者节点)。我还有一个livy容器,它与manager节点中的Sparkmaster容器位于同一位置 初始化livy会话时,动态分配按预期工作。但是,如果您让会话闲置几分钟,然后再次执行代码,它将无法获得更多的执行器,并且将被困在最少数量的执行器上 检查livy UI中的会话日志,我发现: Caused by: java.io.IOException: Failed to send RPC RPC 80796530

我在Docker Swarm集群中有一个Spark独立设置(1个管理器节点,2个工作者节点)。我还有一个
livy
容器,它与manager节点中的Spark
master
容器位于同一位置

初始化livy会话时,动态分配按预期工作。但是,如果您让会话闲置几分钟,然后再次执行代码,它将无法获得更多的执行器,并且将被困在最少数量的执行器上

检查livy UI中的会话日志,我发现:

Caused by: java.io.IOException: Failed to send RPC RPC 8079653042324188410 to master/10.0.2.97:7077: java.nio.channels.ClosedChannelException
    at org.apache.spark.network.client.TransportClient$RpcChannelListener.handleFailure(TransportClient.java:362)
    at org.apache.spark.network.client.TransportClient$StdChannelListener.operationComplete(TransportClient.java:339)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:507)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:481)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:420)
    at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:122)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetFailure(AbstractChannel.java:987)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:869)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.write(DefaultChannelPipeline.java:1316)
    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:1081)
    at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128)
    at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070)
    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:463)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
    ... 1 more
Caused by: java.nio.channels.ClosedChannelException
    at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
20/05/27 06:41:41 WARN spark.ExecutorAllocationManager: Unable to reach the cluster manager to request 2 total executors!
奇怪的是,当我在
livy
容器中ping
master
时,它能够很好地解析
master
主机名

我真的不知道如何解决这个问题。我已经尝试过处理spark-defaults.conf网络参数,但似乎我无法更改解决此问题的正确配置