问题
在跑spark任务的时候发现任务不能执行。在查看的时候发现spark work节点的/usr/local/spark/work/目录占用了很大空间,导致根目录/满了。
原因
使用spark standalone模式执行任务,没提交一次任务,在每个节点work目录下都会生成一个文件夹,命名规则app-20160614191730-0249。该文件夹下是任务提交时,各节点从主节点下载的程序所需要的资源文件。这些目录每次执行都会生成,且不会自动清理,执行任务过多会将存储撑爆。每一个application的目录中都是该spark任务运行所需要的依赖包。
解决方案
添加配置:
export SPARK_WORKER_OPTS="
-Dspark.worker.cleanup.enabled=true # 是否开启自动清理
-Dspark.worker.cleanup.interval=1800 # 清理周期,每隔多长时间清理一次,单位秒
-Dspark.worker.cleanup.appDataTtl=3600" # 保留最近多长时间的数据