我收到以下错误。 Spark_local_dir已设置并且有足够的空间和剩余的inode。
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 / var / log / hadoop / spark 使用的文件系统大小可用使用%挂载 / dev / mapper / meta 200G 1.1G 199G 1%/ var / log / hadoop
的inode df -i / var / log / hadoop / spark 文件系统Inode IUsed IFree IUse%已安装 / dev / mapper / meta 209711104 185 209710919 1%/ var / log / hadoop
答案 0 :(得分:2)
我也遇到了同样的问题。要解决它,我首先通过运行hdfs dfsadmin -report
来检查我的hdfs磁盘使用情况。
Non DFS Used
列超过250 GB。这意味着我的日志或tmp或中间数据占用了太多空间。
从du -lh | grep G
文件夹运行root
后,我发现spark/work
耗费超过200 GB。
查看spark/work
内的文件夹后,我理解错误地忘记取消注释System.out.println
语句,因此日志占用的空间很大。
答案 1 :(得分:0)
如果您在yarn-cluster
模式下运行YARN,则两个Spark执行器和驱动程序使用的本地目录将从YARN配置(yarn.nodemanager.local-dirs
)中获取。 spark.local.dir
和您的env变量将被忽略。
如果您正在yarn-client
模式下运行YARN,那么执行程序将再次使用在YARN配置中配置的本地目录,但驱动程序将使用您在env变量中指定的目录,因为在该模式下驱动程序没有在YARN群集上运行。
所以尝试设置该配置。
您可以找到更多信息in the documentation
上甚至有一整节