问题跟踪KryoException: java.io.IOException: No space left on device

Posted yhao浩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题跟踪KryoException: java.io.IOException: No space left on device相关的知识,希望对你有一定的参考价值。

今天在对LDA进行不同参数训练模型,记录其avglogLikelihood和logPerplexity,以便判断模型训练是否收敛时,产生了一个令人极度崩溃的事儿:程序在辛辛苦苦跑了7.3h后...挂了!证据如下:


早上一来看这张图,好像跑完了,然后点进去看...然后就没有然后了



每次迭代都需要9min左右,迭代了近50次跟我说挂了,确实挺让人奔溃的。


先说说我的配置以及LDA参数吧

5 * 40cores cpu 

5* 500g memory

参数:



没办法,既然都崩溃了,跟进去找问题呗



磁盘没空间了!这是什么鬼...于是常规的,先从网上找找,看看有没有人有类似的问题,结果还真让我发现两个

Spark:java.io.IOException: No space left on device

spark参数配置调优

发现第一个的回答中比较有用的是这个:



同时,结合第二个中的解释



基本上定位到应该是spark.local.dir目录用来存放shuffle产生的临时文件的空间不够用了。好吧,那看看自己的配置咯



这下子好玩儿了!配置的local目录空间剩余杠杠的,机器上还剩大概600G(关键是总共5台啊!!!总共至少3T空间),跟我说No space left on device确定不是在逗我的?好吧,看来应该不是shuffle文件存储的空间不足了。

怎么办?问题总不能摆着儿吧,没办法,那就跟进去spark的UI慢慢研究咯



等等!还真发现点儿规律,为什么报错的都是同一台机器!然后想到之前的一个任务也有fails,赶紧打开看看,验证一下





看来果然是这样了!现在规律是发现了,那为什么会这样啊?刚才看到的bigdata04上的磁盘空间是完全够用的啊,真是奇了怪了!

等等!突然想起来,我好像是在这台机启动的任务



也就是说,bigdata04是我的driver。

原来如此,既然是driver,那么跟存储有关的就只有提交任务时配置的参数--driver-memory 50g这个了。



而且,好像刚才查看执行过程的时候,shuffle write也是很大的


那就试着把--driver-memory这个参数调大点吧。

先记录到这里,等结果出来后再看看,如果没问题了再修改本文总结一下!


以上是关于问题跟踪KryoException: java.io.IOException: No space left on device的主要内容,如果未能解决你的问题,请参考以下文章

java.io.IOException: com.esotericsoftware.kryo.KryoException

java.io.IOException: com.esotericsoftware.kryo.KryoException

com.esotericsoftware.kryo.kryoexception java.util.ConcurentModificationException

关于livy的 java api 报错org.apache.livy.shaded.kryo.kryo.KryoException: Unable to find class: com.xxx.wor

Java I/O:确保文件在任何 r/w 操作之前没有被另一个进程锁定

在spark-shell和Scala jars中用Kryo注册复杂的scala类。