我正在使用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存储到磁盘的本地目录
答案 0 :(得分:4)
我建议您查看系统上剩余的空间。我告诉卡洛斯这个任务已经死了,原因是由于空间不足,火花无法写出一个随机文件。
尝试在工作人员的./work目录中点击java.io.IOException: No space left on device
。
答案 1 :(得分:3)
最有可能的答案是任务已经死亡。例如,来自OutOfMemory或其他例外。