我在Master + 3WorkerNodes的独立群集上,当我正在运行一个工作(BIG)时,我面临的问题是"设备上没有空间"。
我尝试获取Why does a job fail with "No space left on device", but df says otherwise?的帮助,并在MASTER的spark-defaults.conf
中设置变量spark.local.dir SOME/DIR/WHERE/YOU/HAVE/SPACE
然后重新启动群集。但是注意到在更改之后,仍然指向/ tmp(在作业由df -h运行时看到内存使用情况)用于临时shuffle存储而不是指向我在defaults.conf中设置的目录(我可以在webUI的环境TAB)。
为什么/ tmp仍然指向任何IDEA?我需要设置任何其他地方吗?
也跟着Spark:java.io.IOException: No space left on device得到:我需要在spark-evn.sh中设置以下属性
SPARK_JAVA_OPTS+=" -Dspark.local.dir=/mnt/spark,/mnt2/spark -Dhadoop.tmp.dir=/mnt/ephemeral-hdfs"
export SPARK_JAVA_OPTS
什么是" / mnt / spark"和" / mnt / ephemeral-hdfs"路径表示?我是否需要在master' s spark-env.sh或每个worker-Node上设置它。
请求帮助。感谢...
答案 0 :(得分:7)
好的,得到了解决方案,我认为设置" spark.local.dir"将被saprk默认值i:e / tmp path覆盖。
但是在主人和工人" spark-env.sh"中设置以下2个变量。工作
export SPARK_WORKER_DIR=dir_you_have_enough_Space
export SPARK_LOCAL_DIRS=dir_you_have_enough_Space
希望有一天能帮助某人...... :)