【问题标题】:Error sending result RpcResponse / closing connection - Datastax Enterprise发送结果 RpcResponse / 关闭连接时出错 - Datastax Enterprise
【发布时间】:2019-10-11 02:24:11
【问题描述】:

我正在通过 Maven 运行 Scala 应用程序,它使用 spark-submit 将 fat-jar 从客户端节点发送到 Datastax Enterprise 集群。 (在 Azure 上)。

一切似乎都运行良好,它确实将作业提交给 Spark Worker/Master,但在某些时候它开始不断地抛出这个批次并且永远不会退出:

[rpc-server-17-1] 错误 org.apache.spark.network.server.TransportRequestHandler - 发送结果错误 RpcResponse{requestId=6159268836916637242, body=NioManagedBuffer{buf=java.nio.HeapByteBuffer[pos=0 lim =47 cap=64]}} 到 /10.0.0.4:40852;关闭连接
java.lang.AbstractMethodError:空
    在 io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:77)
    在 io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)
    在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:810)
    在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
    在 io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111)
    在 io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
    在 io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
    在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816)
    在 io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
    在 io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:302)
    在 io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
    在 io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
    在 io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38)
    在 io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1081)
    在 io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128)
    在 io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070)
    在 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    在 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTask​​s(SingleThreadEventExecutor.java:404)
    在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465)
    在 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
    在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    在 java.lang.Thread.run(Thread.java:748)

所有的依赖都正常下载,编译没有问题。我在pom.xml 中有以下内容:

<dependency>
<groupId>com.datastax.dse</groupId>
<artifactId>dse-spark-dependencies</artifactId>
<version>6.7.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.datastax.dse</groupId>
<artifactId>dse-byos_2.11</artifactId>
<version>6.7.1</version>
<scope>provided</scope>
<exclusions><exclusion>
  <groupId>io.netty</groupId>
  <artifactId>*</artifactId>
</exclusion>
</exclusions>  
</dependency>

<dependency>
<groupId>com.datastax.dse</groupId>
<artifactId>spark-connector</artifactId>
<version>6.7.1</version>
<exclusions>
<exclusion>
  <groupId>org.apache.solr</groupId>
  <artifactId>solr-solrj</artifactId>
</exclusion>
<exclusion>
  <groupId>io.netty</groupId>
  <artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-core-shaded</artifactId>
<version>4.0.0</version>
</dependency>
<!--<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>4.1.25.4.dse</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>4.1.25.Final</version>
<classifier>linux-x86_64</classifier>
</dependency> -->

另外,我尝试过,基于此https://docs.datastax.com/en/developer/java-driver/3.3/faq/ 将该参数传递给使用 FORCE_NIO,但它根本没有任何区别。

我什至尝试过像这样运行应用程序:

dse -u cassandra -p pass spark-submit --conf "spark.driver.extraClassPath=$(dse spark-classpath)" --class my.package.bde.TestSparkApp target/big-data-engine-0.0.1-jar-with-dependencies.jar -Dcom.datastax.driver.FORCE_NIO=true 但会引发不同的错误:Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.netty.channel.epoll.EpollEventLoop

【问题讨论】:

    标签: apache-spark datastax-enterprise


    【解决方案1】:

    您的构建确实具有不正确的依赖关系,正如先前答案中所指出的那样。你只需要离开

    <dependency>
    <groupId>com.datastax.dse</groupId>
    <artifactId>dse-spark-dependencies</artifactId>
    <version>6.7.1</version>
    <scope>provided</scope>
    </dependency>
    

    并删除其他所有内容 - byos、spark-connector、netty、java-driver-core 等。

    【讨论】:

    • 正确。但这只有在我要在主节点上本地执行(spark-submit)jar 时才会这样......对吗?因为否则它失败了......但我现在就试试..谢谢!
    • 你是男人的伙伴!谢谢 !它通过 dse spark-submit 从客户端节点工作:dse -u cassandra -p password spark-submit --master dse://10.0.0.4 --class my.package.bde.TestSparkApp target/big-data-engine -0.0.1-jar-with-dependencies.jar -Dcom.datastax.driver.FORCE_NIO=true(我按这个 FORCE_NIO)我猜也可能被删除..
    • 另外,请不要使用 cassandra 用户 - 请按照此处的说明操作:docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/…
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多