spark报错Failed to send RPC XXX to / XXX: java.nio.channels.ClosedChannel

命令如下:

bin/spark-submit --class com.practice1.Tax1 --master yarn --num-executors 4 --driver-memory 1g  --executor-memory 1g  /opt/software/data/sparkcount.jar hdfs:/data_in/taxi.csv

1、错误如下:

19/07/09 23:34:50 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
19/07/09 23:35:17 ERROR YarnClientSchedulerBackend: Yarn application has already exited with state FINISHED!
19/07/09 23:35:17 ERROR TransportClient: Failed to send RPC 4998521843097147837 to /10.1.18.204:49508: java.nio.channels.ClosedChannelException
java.nio.channels.ClosedChannelException
        at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
19/07/09 23:35:17 ERROR YarnSchedulerBackend$YarnSchedulerEndpoint: Sending RequestExecutors(0,0,Map()) to AM was unsuccessful
java.io.IOException: Failed to send RPC 4998521843097147837 to /10.1.18.204:49508: java.nio.channels.ClosedChannelException

2、可以根据错误看下ResourceMangaer与NodeMangaer的日志,看看里面有什么端倪

有人看到了这句:

Current usage: 360.4 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.

意思是说container使用的虚拟内存超过了设置的2.1G


那么,问题来了,这个虚拟内存的数量从那儿来的呢?

是从yarn-site.xml中配置计算来的,yarn.scheduler.minimum-allocation-mb  * yarn.nodemanager.vmem-pmem-ratio = 虚拟内存的总量,如果需要的虚拟内存总量超过这个计算所得的数值,就会出发 Killing container.

此处 我的yarn.scheduler.minimum-allocation-mb值没设置,默认为1G,yarn.nodemanager.vmem-pmem-ratio也没设置,默认为2.1,因此,就有了以上的日志,用了1g里的360M物理内存,用了2.1G里的2.4G虚拟内存。

然后修改yarn-site.xml如下几个配置

        <property>
              <name>yarn.scheduler.maximum-allocation-mb</name>
                <value>9216</value>
                <discription>每个任务最多可用内存,单位MB,默认8182MB</discription>
        </property>
        <property>
                <name>yarn.scheduler.minimum-allocation-mb</name>
                <value>4000</value>
                <discription>每个任务最shao可用内存</discription>
        </property>
        <property>
                <name>yarn.nodemanager.vmem-pmem-ratio</name>
                <value>4.1</value>
        </property>

重新运行,错误消失


另外好多贴子的解决方法是关闭这个虚拟内存的检测,个人不太建议如此。

在yarn-site.xml配置如下:

<property>  
    <name>yarn.nodemanager.vmem-check-enabled</name>  
    <value>false</value>  
</property> 

部分自清霄修改

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yann.bai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值