Apache spark Spark on Thread如何存储洗牌文件?

Apache spark Spark on Thread如何存储洗牌文件?,apache-spark,Apache Spark,我正在使用纱线在Spark中执行过滤器,并收到以下错误。非常感谢您的帮助,但我的主要问题是为什么找不到该文件 /hdata/10/thread/nm/usercache/spettinato/appcache/application\u 1428497227446\u 131967/spark-local-20150708124954-aa00/05/merged\u shuffle\u 1\u 343\u 1 Spark似乎找不到经过洗牌后存储到HDFS的文件 Spark为什么要访问目录“/h

我正在使用纱线在Spark中执行过滤器,并收到以下错误。非常感谢您的帮助,但我的主要问题是为什么找不到该文件

/hdata/10/thread/nm/usercache/spettinato/appcache/application\u 1428497227446\u 131967/spark-local-20150708124954-aa00/05/merged\u shuffle\u 1\u 343\u 1

Spark似乎找不到经过洗牌后存储到HDFS的文件

Spark为什么要访问目录“/hdata/”? 此目录在HDFS中不存在,它应该是本地目录还是HDFS目录?
我可以配置存储洗牌数据的位置吗

15/07/08 12:57:03 WARN TaskSetManager: Loss was due to java.io.FileNotFoundException
java.io.FileNotFoundException: /hdata/10/yarn/nm/usercache/spettinato/appcache/application_1428497227446_131967/spark-local-20150708124954-aa00/05/merged_shuffle_1_343_1 (No such file or directory)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
        at org.apache.spark.storage.DiskBlockObjectWriter.open(BlockObjectWriter.scala:116)
        at org.apache.spark.storage.DiskBlockObjectWriter.write(BlockObjectWriter.scala:177)
        at org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply(ShuffleMapTask.scala:161)
        at org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply(ShuffleMapTask.scala:158)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
        at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:158)
        at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)
        at org.apache.spark.scheduler.Task.run(Task.scala:51)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:187)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
15/07/08 12:57:03警告TaskSetManager:丢失是由于java.io.FileNotFoundException引起的
java.io.FileNotFoundException:/hdata/10/warn/nm/usercache/spettinato/appcache/application\u 1428497227446\u 131967/spark-local-20150708124954-aa00/05/merged\u shuffle\u 1\u 343\u 1(无此类文件或目录)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:221)
位于org.apache.spark.storage.DiskBlockObjectWriter.open(BlockObjectWriter.scala:116)
位于org.apache.spark.storage.DiskBlockObjectWriter.write(BlockObjectWriter.scala:177)
在org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply上(ShuffleMapTask.scala:161)
在org.apache.spark.scheduler.ShuffleMapTask$$anonfun$runTask$1.apply上(ShuffleMapTask.scala:158)
位于scala.collection.Iterator$class.foreach(Iterator.scala:727)
位于scala.collection.AbstractIterator.foreach(迭代器.scala:1157)
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:158)上
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)上
位于org.apache.spark.scheduler.Task.run(Task.scala:51)
位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:187)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)

编辑:我想出了一些办法。spark.local.dir配置的目录是根据

将RDD存储到磁盘的本地目录。最有可能的答案是任务已死亡。例如,从OutOfMemory或其他异常。我建议检查系统上剩余的空间。我要像Carlos一样说,任务结束了,原因是spark由于空间不足而无法编写洗牌文件


请尝试将
java.io.IOException:workers的./work目录中的设备
上没有剩余空间。

是的,我们通过
FileNotFoundException
观察到了这一点。由于某些原因,某些作业执行出现设备上没有剩余空间的
错误,但其他作业执行不出现该错误。