为什么Spark报告spark.SparkException:文件./someJar.jar存在且与内容不匹配

时间:2014-09-07 06:57:03

标签: apache-spark

我有时会看到运行Spark作业时看到以下错误消息:

  

13/10/21 21:27:35 INFO cluster.ClusterTaskSetManager:丢失是由于spark.SparkException:文件./someJar.jar存在且与...的内容不匹配

这是什么意思?我该如何诊断和解决这个问题?

2 个答案:

答案 0 :(得分:7)

在日志中挖掘后我发现“设备上没有剩余空间”异常,然后当我在每个节点上运行df -hdf -i时,我发现了一个已满的分区。有趣的是,这个分区似乎没有用于数据,而是临时存储jar。它的名称类似于/var/run/run

解决方案是清理旧文件的分区并设置一些自动清理,我认为设置spark.cleaner.ttl说一天(86400)应该可以防止它再次发生。

答案 1 :(得分:1)

在AWS EC2上运行我会定期遇到磁盘空间问题 - 即使将spark.cleaner.ttl设置为几个小时后(我们会快速迭代)。我决定通过将/root/spark/work目录移动到实例上挂载的临时磁盘来解决它们(我使用的是在/mnt处有32GB短暂的r3.larges):

readonly HOST=some-ec2-hostname-here

ssh -t root@$HOST spark/sbin/stop-all.sh
ssh -t root@$HOST "for SLAVE in \$(cat /root/spark/conf/slaves) ; do ssh \$SLAVE 'rm -rf /root/spark/work && mkdir /mnt/work && ln -s /mnt/work /root/spark/work' ; done"
ssh -t root@$HOST spark/sbin/start-all.sh

据我所知,Spark 1.5工作目录默认情况下仍然没有使用已安装的存储。我没有充分考虑部署设置,看看这是否可以配置。