2016-05-03 30 views
1

我得到下面的错误。 Spark_local_dir已经设置并且有足够的空间和剩余的索引节点。火花 - 没有空间留在设备上的错误

java.io.IOException: No space left on device 
     at java.io.FileOutputStream.writeBytes(Native Method) 
     at java.io.FileOutputStream.write(FileOutputStream.java:326) 
     at org.apache.spark.storage.TimeTrackingOutputStream.write(TimeTrackingOutputStream.java:58) 
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) 
     at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126) 
     at org.xerial.snappy.SnappyOutputStream.dumpOutput(SnappyOutputStream.java:294) 
     at org.xerial.snappy.SnappyOutputStream.compressInput(SnappyOutputStream.java:306) 
     at org.xerial.snappy.SnappyOutputStream.rawWrite(SnappyOutputStream.java:245) 
     at org.xerial.snappy.SnappyOutputStream.write(SnappyOutputStream.java:107) 
     at org.apache.spark.io.SnappyOutputStreamWrapper.write(CompressionCodec.scala:190) 
     at org.apache.spark.storage.DiskBlockObjectWriter.write(BlockObjectWriter.scala:218) 
     at org.apache.spark.util.collection.ChainedBuffer.read(ChainedBuffer.scala:56) 
     at org.apache.spark.util.collection.PartitionedSerializedPairBuffer$$anon$2.writeNext(PartitionedSerializedPairBuffer.scala:137) 
     at org.apache.spark.util.collection.ExternalSorter.writePartitionedFile(ExternalSorter.scala:757) 
     at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:70) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:70) 
     at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) 
     at org.apache.spark.scheduler.Task.run(Task.scala:70) 
     at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 


cat spark-env.sh |grep -i local 
export SPARK_LOCAL_DIRS=/var/log/hadoop/spark 

磁盘使用率 DF-H /无功/日志/的Hadoop /火花 文件系统大小用可用已用% 的/ dev /映射器/ 200G元1.1G 199G 1%/ VAR安装/日志/ Hadoop的

的inode DF -i /无功/日志/的Hadoop /火花 文件系统索引节点 - 稠IFree IUSE%的 的/ dev /映射器/元209711104 185 209710919 1%/ VAR安装/日志/ Hadoop的

+0

这意味着它正在写你不指望的地方。 –

+0

或者一些临时空间已满。查看其他文件系统以查看是否接近容量。或者你正在编写比你想要的更多的数据。 –

+0

“并且有足够的空间”很明显,它不会:-)你需要告诉我们你的配置,你到底在做什么以及有多少数据。 –

回答

0

如果”在yarn-cluster模式下重新运行YARN n两个Spark执行者和驱动程序使用的本地dirs将从YARN配置文件(yarn.nodemanager.local-dirs)中获取。 spark.local.dir和你的env变量将被忽略。

如果您在yarn-client模式下运行YARN,那么执行程序将再次使用在YARN配置中配置的本地dirs,但驱动程序将使用您在env变量中指定的那个,因为在该模式下,驱动程序未运行在YARN集群上。

所以尝试设置该配置。

你可以找到更多的信息in the documentation

甚至还有上running spark on yarn

2

我也遇到同样的问题,一整节。为了解决这个问题,我首先通过运行hdfs dfsadmin -report来检查我的hdfs磁盘使用情况。

Non DFS Used列高于250 GB。这意味着我的日志或tmp或中间数据占用太多空间。

运行du -lh | grep Groot文件夹我认为spark/work消耗超过200 GB。

在看了spark/work里面的文件夹之后,我明白了,我错误地忘了取消注释System.out.println声明,因此日志消耗的空间很大。

相关问题