Spark on Yarn如何存储洗牌文件?

时间:2015-07-08 20:56:27

标签: apache-spark

我正在使用Yarn在Spark中执行过滤器并收到以下错误。任何帮助表示赞赏,但我的主要问题是为什么找不到该文件。

/ HDATA / 10 /纱线/纳米/ usercache / spettinato /应用程序缓存/ application_1428497227446_131967 /火花本地20150708124954-AA00 / 05 / merged_shuffle_1_343_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)
编辑:我想出了一些。 spark.local.dir配置的目录是用于根据http://spark.apache.org/docs/latest/configuration.html将RDD存储到磁盘的本地目录

2 个答案:

答案 0 :(得分:4)

我建议您查看系统上剩余的空间。我告诉卡洛斯这个任务已经死了,原因是由于空间不足,火花无法写出一个随机文件。

尝试在工作人员的./work目录中点击java.io.IOException: No space left on device

答案 1 :(得分:3)

最有可能的答案是任务已经死亡。例如,来自OutOfMemory或其他例外。