【问题标题】:Spark Error: Failed to Send RPC to DatanodeSpark 错误:无法向 Datanode 发送 RPC
【发布时间】:2018-07-18 00:32:06
【问题描述】:

Spark thrift 服务器的问题很少

从日志中我们可以看到:Failed to send RPC 9053901149358924945 to /DATA NODE MACHINE:50149

请告知为什么会发生这种情况,解决办法是什么?

Failed to send RPC 9053901149358924945 to /DATA NODE MACHINE:50149: java.nio.channels.ClosedChannelException
more spark-hive-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-master03.sys67.com.out


Spark Command: /usr/jdk64/jdk1.8.0_112/bin/java -Dhdp.version=2.6.0.3-8 -cp /usr/hdp/current/spark2-thriftserver/conf/:/usr/hdp/current/spark2-thriftserver/jars/*:/usr/hdp/c
urrent/hadoop-client/conf/ -Xmx10000m org.apache.spark.deploy.SparkSubmit --conf spark.driver.memory=15g --properties-file /usr/hdp/current/spark2-thriftserver/conf/spark-th
rift-sparkconf.conf --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 --name Thrift JDBC/ODBC Server --executor-cores 7 spark-internal
========================================
Warning: Master yarn-client is deprecated since 2.0. Please use master "yarn" with specified deploy mode instead.
18/02/07 17:55:21 ERROR TransportClient: Failed to send RPC 9053901149358924945 to /12.87.2.64:50149: java.nio.channels.ClosedChannelException
java.nio.channels.ClosedChannelException
        at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
18/02/07 17:55:21 ERROR YarnSchedulerBackend$YarnSchedulerEndpoint: Sending RequestExecutors(2,0,Map()) to AM was unsuccessful
java.io.IOException: Failed to send RPC 9053901149358924945 to /12.87.2.64:50149: java.nio.channels.ClosedChannelException
        at org.apache.spark.network.client.TransportClient$3.operationComplete(TransportClient.java:249)
        at org.apache.spark.network.client.TransportClient$3.operationComplete(TransportClient.java:233)
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:514)
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:488)
        at io.netty.util.concurrent.DefaultPromise.access$000(DefaultPromise.java:34)
        at io.netty.util.concurrent.DefaultPromise$1.run(DefaultPromise.java:438)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:408)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:455)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.nio.channels.ClosedChannelException
        at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
18/02/07 17:55:21 ERROR SparkContext: Error initializing SparkContext.

我们也试图从这个链接中捕捉到一些好处 - https://thebipalace.com/2017/08/23/spark-error-failed-to-send-rpc-to-datanode/

但这是一个新的 ambari 集群,我们认为本文不适合这个特定问题(我们的 ambari 集群上现在没有运行 spark 作业)

【问题讨论】:

    标签: hadoop apache-spark hive spark-streaming ambari


    【解决方案1】:

    这可能是由于磁盘空间不足。就我而言,我在 AWS EMR 中使用 1 个 r4.2xlarge(主)和 2 个 r4.8xlarge(核心)运行 Spark 作业。 Spark 调整和增加从节点解决了我的问题。最常见的问题是内存压力、大量错误配置(即错误大小的执行程序)、长时间运行的任务以及导致笛卡尔运算的任务。您可以通过适当的缓存和允许数据倾斜来加速作业。为获得最佳性能,请监控和审查长时间运行且消耗资源的 Spark 作业执行。希望对您有所帮助。

    参考 => EMR Spark - TransportClient: Failed to send RPC

    【讨论】:

      【解决方案2】:

      就我而言,我将驱动程序和执行程序的内存从 8G 减少到了 4G:

      spark.driver.memory=4G,
      spark.executor.memory=4G
      

      检查您的节点配置,您不应要求更多可用内存。

      【讨论】:

        猜你喜欢
        • 2017-10-24
        • 2021-08-18
        • 2021-07-02
        • 1970-01-01
        • 2021-05-29
        • 2021-04-04
        • 2021-12-11
        • 1970-01-01
        • 2013-01-30
        相关资源
        最近更新 更多