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