spark下使用submit提交任务后报jar包已存在错误

使用spark submit进行任务提交,离线跑数据,提交后的一段时间内可以application可以正常运行。过了一段时间后,就抛出以下错误:

org.apache.spark.SparkException: File ./myapplication.jar exists and does not match contents of http://10.28.139.44:33084/jars/myapplication.jar

然后application停止工作。

究其原因,是spark的work目录下存储的临时数据过大、新提交的application产生的临时数据无法写入导致的。而spark并没有主动去清理这些临时文件,最终导致目录下文件写满了,新提交的application就没有写入临时数据了。

解决方法:

1、临时解决方法:将spark/work目录下的文件手动删除,之后重新提交application就可以了。

2、修改spark配置文件:在spark-env.sh中加入如下内容

SPARK_WORKER_OPTS=”-Dspark.worker.cleanup.enabled=true”

这样,spark会自动清除已经停止运行的application的文件夹。如果是application一直在运行的话,就会持续向work目录写数据,这样work目录下的文件还是会越来越大
并最终无法写入。因此最好是以上两个方法同时使用,定期手工清理work目录下的文件。

上一篇:Spark集群模式&Spark程序提交


下一篇:Coding过程中遇到的一些bug